Structured Data Validator
Every JSON-LD block on the page, parsed, with the properties Google requires checked off.
Results
Parsed data
What the structured Data Validator does
Structured data fails in two ways, and they need different tools. It can be malformed — a trailing comma, a smart quote pasted from a word processor, a missing brace — in which case search engines discard the whole block silently. Or it can be syntactically perfect but incomplete, missing a property Google requires for that type, in which case it is read and then ignored for rich results.
This validator catches both. It extracts every application/ld+json block from your
HTML, parses each one, and walks the whole object tree including nested entities — an Offer
inside a Product, a Question inside an FAQPage, ListItems inside a BreadcrumbList. Each typed entity
is checked against the properties Google documents as required and recommended for that type.
Several specific traps are checked separately because they are common and silent. An
AggregateRating with a ratingValue but no reviewCount or
ratingCount is invalid, and it is the single most frequent reason star ratings do not
appear. Currency codes must be three-letter ISO 4217 values, so £ or
Pounds fails. Dates must be ISO 8601, so 7 September 2026 is not accepted
where 2026-09-07 is.
This is a fast local pre-check that runs as you type, which makes it useful while writing markup. Google's own Rich Results Test remains the authority on whether a rich result will actually be shown, and you should run the live URL through it before considering the job done.
How to use it
- Paste your page's HTML, or just the JSON-LD if that is all you have.
- Fix red items first — invalid JSON means the entire block is discarded.
- Then add the missing recommended properties; several rich results will not appear without them.
- Finally, run the live URL through Google's Rich Results Test to confirm.
A worked example
The Product markup in the box above validates like this:
✓ Product All required properties present.
! Product Missing recommended: brand, description, sku
✓ Offer All required properties present.
! Offer Missing recommended: availability, url
✗ AggregateRating Missing required: reviewCount or ratingCount
The last line is the one that matters. The JSON is valid, the rating value is there, and it looks
right — but without a review count Google will not render stars, and nothing on the page tells
you why. Adding "reviewCount": "212" is a one-line fix that changes whether the rich
result appears at all.
Frequently asked questions
Is this the same as Google's Rich Results Test?
No, and it is not a substitute. This checks syntax and documented required and recommended properties, locally and instantly, which is useful while you are writing. Google's test runs the live URL against its own rules and is the authority on whether a rich result will show.
Why does my valid markup not produce a rich result?
Valid markup makes a rich result eligible, not certain. Google decides per query and per site, and it can take weeks after a recrawl. Missing recommended properties, low site quality signals, or simply Google choosing not to are all possible reasons.
Can I have several JSON-LD blocks on one page?
Yes. Multiple blocks are perfectly valid, and it is often cleaner than nesting everything into one. You can also combine them into a single block using an @graph array. This validator handles both.
What breaks JSON-LD most often?
A trailing comma before a closing brace, and smart quotes from a word processor replacing straight quotes. Both make the block unparseable, and both are invisible when you skim the code. This tool reports the parser's exact complaint.