Structured Data Analyzer
Schema.org markup is how you tell AI engines and search crawlers exactly what your brand, content and products are. This tool scans any URL, shows the JSON-LD it already has, detects your page type, and hands you copy-paste JSON-LD for the schemas you're missing.
We fetch the page HTML and parse its structured data. Nothing is stored.
Structured data is one of four signals we score. The full audit also checks AI model recall, crawler access and crawl budget, then returns a single graded report.
Run the full auditStructured data reference
Schema.org vocabulary expressed as JSON-LD is the machine-readable layer of a page. Search crawlers and AI retrieval pipelines parse it to resolve entities without guessing from prose. These are the specifics this tool measures.
Supported serialisation formats
| Format | Detection | Recommended |
|---|---|---|
| JSON-LD | <script type="application/ld+json"> | Yes — Google's stated preference |
| Microdata | itemscope / itemprop attributes | Legacy; detected but not scored |
| RDFa | vocab / typeof attributes | Rare outside publishing |
How the score is calculated
The score is valid blocks / (valid blocks + recommended blocks), expressed as a percentage with a floor of 10 once any valid JSON-LD exists. A page with no parseable JSON-LD scores 0. Recommendations are derived from the detected page type, so a product page is judged against Product and Offer while an article is judged against Article and Author.
Common failure modes
- Trailing commas and unescaped quotes — the block is present but
JSON.parserejects it, so crawlers ignore it entirely. This tool reports these as invalid rather than missing. - Client-rendered JSON-LD — markup injected after page load is invisible to crawlers that do not execute JavaScript. Our fetch uses the raw HTML response, which is what most AI crawlers see.
- Entity fragmentation — separate
Organizationblocks on different pages with no shared@idproduce multiple weakly-linked entities instead of one strong one. - Markup that contradicts visible content — a price in JSON-LD that differs from the rendered price is a spam signal, not an optimisation.
Why AI engines care
Retrieval-augmented systems need to know what an entity is before they can cite it. Organization with sameAs links to authoritative profiles, and FAQPage with question-answer pairs matching real user prompts, both raise the odds a model surfaces your brand instead of a competitor's.
Structured data is necessary but not sufficient. Perfect markup on a page that blocks GPTBot still gets you nothing.
Check all four signals at once