Paste a URL or your JSON-LD and we validate it, flag every error and warning, and tell you which Google rich results it qualifies for. Cleaner and faster than Google's own tester. Free.
Free, no signup. We fetch the page (or read your pasted code) and check it against Google's requirements.
Schema (JSON-LD structured data) is code that tells Google and AI engines exactly what your page is: a local business, a product, an FAQ, an article. Get it right and you become eligible for rich results and far more likely to be cited by AI. Get it wrong and it silently does nothing. This validator tells you which.
Paste a URL or your JSON-LD and we parse every block, flag missing required and recommended fields, and tell you which Google rich result each type qualifies for, LocalBusiness, FAQPage, Product, Breadcrumb, Article, Event, and more. It catches the silent errors that keep valid-looking markup from ever earning a rich result.
Beyond Google rich results, structured data is one of the clearest ways to make your content machine-readable for AI engines. When ChatGPT, Gemini, or Perplexity summarize a topic, well-structured, clearly-labeled content is easier for them to trust and cite. Schema is a foundational part of AI Search Optimization.
We build correct, complete structured data into every page so you qualify for rich results and get cited by AI. Free audit available.
Get a free audit →Or call/text: (407) 694-2055There are two ways in. Give it a URL and our server makes a single request to that page, follows redirects, gives up after ten seconds, reads the first 800,000 characters of HTML, and pulls out every script block marked application/ld+json. Paste raw JSON-LD into the second box instead and it skips the fetch altogether. Either way, each block is parsed as JSON, and when a block contains an @graph the nodes inside it are pulled apart and checked one at a time. A syntax error comes back with the parser's own message, so you get the real reason the JSON broke rather than a generic failure.
Each node's @type is then matched against a list of the common ones: LocalBusiness, Organization, FAQPage, Product, BreadcrumbList, Article, Event, Recipe, VideoObject, Review, AggregateRating, Service, Person, and a handful more. Missing required fields are reported as errors, missing recommended fields as warnings, and the tool names the rich result that type is associated with. On top of that it looks for FAQ entries missing a question name or an answer, breadcrumb items missing a position or a name, product offers missing a price or a currency, and an @context pointing anywhere other than schema.org. A type outside the list comes back as recognized with no specific rich result, which means the tool has no rule for it, not that the markup is perfect.
Two limits matter more than the rest. It reads the raw HTML your server returns, so structured data injected by JavaScript after the page loads is invisible to it, and it reads JSON-LD only, not microdata or RDFa. And it cannot tell you what a search engine will do with the markup: complete structured data makes a page eligible for a rich result and nothing further. It never sees the visible page either, so it cannot judge whether the markup honestly describes what a reader finds there. Treat a clean pass as one requirement met, then keep the schema in step with the rest of your AI search work. Everything else we publish is at kellywm.com/tools.
Usually one of two reasons. The markup is added by JavaScript after the page loads, and this tool reads the raw HTML your server sends, so it never sees it. Or your structured data is written as microdata or RDFa rather than JSON-LD, which this tool does not read. Copy the block out of your page source and paste it into the second box to check it either way.
Results for a URL are cached for about an hour, which keeps the tool quick and keeps it from hammering your server on repeat checks. Paste the corrected JSON-LD into the box for an immediate read, or come back to the live URL a little later once that cache has expired.