Schema Markup Validator

Paste a URL to find every JSON-LD block on the page, check that each one parses and declares a type, and see which are eligible for rich results. Free, instant, no signup.

What this checks & how to fix it

It reads the live page and collects every <script type="application/ld+json"> block. Each one is parsed as strict JSON, unpacked if it uses an @graph array, and every entity inside is checked for a @type. A page with no blocks scores 60 — not an error, but a missed opportunity; a page with blocks scores on the share of them that are valid.

How to fix what it finds

Malformed JSON is almost always a trailing comma, an unescaped quote inside a string, or a template that rendered an empty value where a number was expected — paste the block into the JSON Formatter to get the exact line. Missing @type means an entity object has no type declared. Once every block reads as valid here, run the URL through Google's Rich Results Test to check the per-type required properties.

Frequently asked questions

What happened to Google's Structured Data Testing Tool?

Google retired it in 2020 and split its job in two: the Rich Results Test (which only checks types Google shows as rich results) and the Schema Markup Validator at validator.schema.org (which checks syntax for any type). This tool sits in between — it finds every JSON-LD block on a live page, confirms it parses, and tells you which of the types found are ones Google can actually render as a rich result.

Does this check Microdata or RDFa too?

No — only JSON-LD, which is the format Google explicitly recommends and the one nearly every modern CMS and plugin emits. If your site still uses Microdata (schema attributes sprinkled through the HTML), it will show as 'no structured data found' here even though it may be valid.

It says my markup is valid — so why am I not getting rich results?

Valid syntax is only the first gate. Google also requires specific properties per type (a Product needs offers with a price, a Recipe needs an image and cook time), only shows rich results for pages it considers useful, and never guarantees them even when everything is correct. Use Google's Rich Results Test for the per-property requirements once the syntax here is clean.

My site uses Yoast or Rank Math — why do I see one block with many types?

Those plugins output a single JSON-LD block using an @graph array that bundles the Organization, WebSite, WebPage, Article, and BreadcrumbList entities together. This tool unpacks @graph and counts each entity inside it separately, so you'll see them listed individually rather than as one anonymous block.

What does 'Missing @type' mean?

Every JSON-LD entity has to declare what it is with a @type property — without one, search engines have no idea whether the object describes a product, a person, or a page, and ignore it. It usually means a template variable didn't get filled in, or the block was hand-written and the property was misspelled.

Related tools

Command Palette

Search for a command to run...