Schema Markup Validator
Check JSON-LD structured data for errors
Reads every application/ld+json block on a page, checks that it parses, that its context resolves to schema.org, and that each type carries the properties Google documents as required and recommended. It also catches the mistakes that pass a JSON linter and then quietly produce nothing: a date written for humans, a price with a currency symbol in it, a rating outside its own scale, an FAQ question with no answer.
Frequently asked questions
Is this the same as Google's Rich Results Test?
No, and it does not try to be. This checks syntax and Google's documented property requirements, which is where nearly all real problems are. Whether a page actually earns a rich result also depends on indexing and content policies, which no third-party tool can see. Use this to find and fix errors fast, then confirm in Search Console.
Do you check Microdata or RDFa?
No — only JSON-LD, which is the format Google recommends and by far the most common. If a page uses Microdata or RDFa the report says so rather than reporting "no structured data", because Google does read those.
What is the difference between an error and a recommendation?
An error is markup that will not parse, or a property Google documents as required for that type — the rich result will not appear without it. A recommendation is a property that affects how much of the result can be shown; the markup still works without it.
Why does it say a type is unknown?
schema.org has hundreds of types and Google documents rich results for a few dozen. Types outside that set get a syntax check only. An unknown type is not an error — it just means there are no published requirements to check it against.
It found no structured data but I know it is there.
Two common causes: the markup is injected by JavaScript after the page loads, which a crawler fetching the raw HTML will not see either, or the page is large enough that the block sits past the point we stop reading. The report says when the second happened.