Opens in a new tabSkip to content
Agent LighthouseAgent Lighthouse

    Searches the text of every published page. The evidence sources themselves are not in this index — search all of them on the trusted sources page.

    GitHub ↗
    Browse checks and page contents
    structured-data/schema-validation

    Schema validation

    What it checks

    AI agents parse @context and @type to identify entity types in your structured data. Blocks missing these properties are silently ignored by every schema consumer, including Google, ChatGPT plugins, and RAG pipelines. Add “@context”: “schema.org” and a valid @type to each block.

    Why it matters

    A top-level JSON-LD node object with no active @context has its terms dropped during JSON-LD expansion. It therefore produces zero schema.org statements. Google’s structured-data parser records no entity for that block, and the block is ineligible for any feature that consumes structured data.

    Evidence

    • JSON-LD 1.1 is a W3C Recommendation dated 16 July 2020. The spec states “A context is used to map terms to IRIs”. A term with no active context is therefore not an IRI, and carries no schema.org meaning — w3.org/…/json-ld11 (verified 2026-08-21)
    • The companion Recommendation (JSON-LD 1.1 Processing Algorithms and API, 16 July 2020) defines the Expansion Algorithm that resolves every entry key against the active context; this is the normative step the audit’s signal depends on — w3.org/…/json-ld11-api (verified 2026-08-21)
    • Google names itself as a consumer of the format and reads it as entities: “Google can read JSON-LD data when it is dynamically injected into the page’s contents”. It treats the three encodings alike: JSON-LD, Microdata and RDFa are “all 3 formats are equally fine for Google”. It also requires completeness — “You must include all the required properties for an object to be eligible for appearance in Google Search with enhanced display” — developers.google.com/…/intro-structured-data (verified 2026-08-21)
    • Adoption of the format is at web scale: JSON-LD extracted from 833.8M URLs across 11.6M domains in the October 2024 Common Crawl — webdatacommons.org/…/stats.html (verified 2026-08-21)

    Limits

    The spec does not require @type. JSON-LD 1.1 §9.2 defines a node object purely by the absence of @value/@list/@set; @type is optional and a typeless nested map is a legitimate property value that conforming processors read as such. Google supports Microdata on equal terms, where <div itemscope itemprop="offers"> without itemtype is idiomatic and valid. The audit’s assertion that blocks missing @type are “silently ignored by every schema consumer, including Google, ChatGPT plugins, and RAG pipelines” is therefore false for nested nodes — the graded mechanism holds only for top-level entity blocks.

    The “RAG pipelines” half of the claim is separately unsupported: in a controlled fetch test a price present only in JSON-LD was retrieved by 0 of 5 systems (ChatGPT, Claude, Gemini, Perplexity, Google AI Mode) — searchviu.com/…/schema-markup-and-ai-in-2025-what-c… (verified 2026-08-21)

    How it scores

    The mechanism is a ratified W3C Recommendation (JSON-LD 1.1 expansion resolves keys against the active context) and Google is a named consumer that documents parsing JSON-LD into entities.

    Sources

    Browser view

    This entry is a documented exception: it shipped before the browser-agent rule, and no browser-agent consumer is claimed. The browser view reports only whether the captured DOM’s JSON-LD parses and matches schema.org types; Microdata and RDFa get the same type check. It claims nothing about crawler delivery, rich results or agent behaviour.

    The snapshot path reuses this audit on each complete, unredacted, non-loading DOM capture that carries readable text. It reports the original static verdict as an unscored browser finding. It does not prove HTTP delivery, computed appearance, a complete accessibility tree, live form state, or action success. The source and page URL accompany every finding. Existing implementation limits still apply.

    The individual evidence review and limits appear in Browser-rendered snapshot assessment. The explicit eligibility record lives in packages/core/src/snapshot-eligibility.ts. Original crawler grades, tiers, and weights stay unchanged.