Free tool, no login

JSON-LD Validator

Check the structured data on any page against schema.org, against what Google needs for a rich result, and against the other blocks on the same page.

Free, no login, no email. Nothing stored beyond a 24 hour cache. Markdown copy · API and MCP

How it works

  1. 1

    Paste any page URL

    One page at a time. Use the page you care about rather than the home page, because most sites mark up different types on different templates.

  2. 2

    We open the page in a browser

    Not a raw fetch. Structured data added by Google Tag Manager or an SEO plugin only exists after JavaScript runs, and that is what a search engine sees too.

  3. 3

    Read the four groups, then the fixes

    Every check lands in one of four questions, with a pass, a warning, or a failure. Each issue carries the reason it matters and what to change.

Why this matters

The two tools everyone uses answer half the question

Google's Rich Results Test answers exactly one thing: will this page get a rich result in Google search. It is authoritative on that, and it is silent on everything else. It will not tell you about a type Google has no rich result for, which is most of schema.org. It will not tell you that your markup describes a different product than your page does. It reports on the feature, not on the data.

The schema.org validator answers the other half: is this legal vocabulary. Real types, real properties, correct nesting. It is the right tool for that and it is honest about its scope. But legality is a low bar. Two blocks can each be perfectly valid and still say different things about the same entity, and the validator has no reason to care, because it looks at one block at a time.

Nobody checks whether the page agrees with itself

That gap is where the expensive failures live. A page carries a Product block from the theme and another from a reviews app, and the two disagree about the price. An @id reference points at an Organization that was defined on a template that no longer renders, so the publisher field resolves to nothing. A recipe names a cook time in one block and a different one in another. Every one of those pages passes both standard validators. A consumer reading them has to pick a value, and the choice is not yours.

This tool groups every check into four questions and shows you all four. Does it parse. Will it earn a rich result. Are the values in a format that survives. Do the blocks agree with each other. The first two are what the existing tools cover. The last two are why this one exists.

It reads the page a search engine reads

A large share of real structured data is not in the HTML the server sends. It is injected afterwards by a tag manager or an SEO plugin. A validator that only fetches the raw HTML will tell those sites they have no structured data at all, which is both wrong and alarming. We open the page in a browser first, because Googlebot runs JavaScript and that is the version that counts.

The same reasoning cuts the other way for social previews, where the crawlers do not run JavaScript and checking the rendered DOM would flatter a broken page. Different consumers, different inputs. Knowing which one a tool used is part of knowing what its answer means.

Common questions

Google's tool answers one question: will this page get a rich result in Google search. That is worth knowing, and it is the only question it answers. It says nothing about types Google has no rich result for, nothing about markup that is valid but contradicts itself, and nothing about whether an answer engine that is not Google can make sense of the page. This tool checks the same rich-result requirements, then keeps going.

Use it from a script or an agent

The same run this page does, as an HTTP endpoint and as the MCP tool validate_json_ld. No account, no API key. Full reference.

Show the calls

HTTP

POST /api/tools/json-ld-validatorbash
curl -sS https://usesuperflow.ai/api/tools/json-ld-validator \
  -H 'Content-Type: application/json' \
  -d '{"url":"example.com"}'

Returns { ok, report: { blockCount, invalidBlockCount, declaredTypes[], eligibility[], categories[], findings[] } }. 10 runs per hour per IP. Allow up to 75 seconds.

MCP

Add the server oncebash
claude mcp add --transport http superflow https://usesuperflow.ai/api/mcp

Then ask your agent for validate_json_ld. Setup for Claude Desktop, Cursor and VS Code is on the reference page.

Markup drifts every time someone edits a template

Superflow agents check the structured data on every page you ship, on every change, and tell you the moment a block breaks or quietly disappears.

Start free