Skip to content

🗂️ Structured Data Validator

Enter a URL to extract every JSON-LD block on the page, with @type values and formatted payloads. Also detects microdata / RDFa presence.

100% Free No signup Server-side No logs / DB Rate-limited 5 languages Dark mode

⚠️ Requests are made from DevLab servers. Private IP addresses and localhost are not allowed.

📖 What this check tells you

Structured data annotates a page in a form machines can read. This check extracts JSON-LD, Microdata and RDFa, then verifies the syntax parses and the types are valid schema.org. Google narrowed rich-result eligibility sharply from 2023 — FAQ and HowTo no longer appear for ordinary sites. It is still worth writing: the live uses today are Article, Product and BreadcrumbList rich results, and giving AI search and language models a reliable handle on the page.

Item What it means How to fix it
JSON syntax error If it does not parse, the whole block is ignored. The cause is almost always an unescaped quote from a template variable, or a trailing comma. Stop assembling the string by hand and let the language's JSON encoder do itjson_encode() in PHP, |json_encode|raw in Twig. That alone removes the whole class of failure where an apostrophe in a page title breaks the block.
Missing required property Each type has required fields: headline and image for Article, name and offers for Product, itemListElement for BreadcrumbList. Add what is missing — but never invent data the page does not have. Declaring an aggregateRating with no real reviews is treated as spam and can earn a manual action. If you cannot fill it honestly, it is safer not to claim that type at all.
Mismatch with visible content Whatever you put in the markup has to be visible to the user on the page as well. Markup describing content that is not there is a guidelines violation. The only reliable fix is to generate the markup and the visible HTML from one source. Emit both from the same loop and the two can no longer drift apart when someone updates one of them.
BreadcrumbList Feeds the breadcrumb trail in search results, and is one of the few types that still reliably renders. It conveys the site's logical structure rather than the URL hierarchy. Put an absolute URL in item. On a multilingual site, take care not to drop the language prefix: writing /blog/ points at the unprefixed URL and forces a redirect.

Passing this check does not mean a rich result will appear. Whether one renders is Google's call and depends on the category, the site's standing and the query. Use Google's Rich Results Test to see what it would actually show.

🔗 Related Tools