STRUCTURED DATA DRIFT CHECK · RUNS IN YOUR BROWSER

Does your page's JSON-LD actually say what the page says?

Paste a page's HTML and see every FAQPage, HowTo, Article/BlogPosting/NewsArticle, Product, LocalBusiness/Organization, or Review claim in its JSON-LD, checked word for word against the page's own visible text — with the exact character where it drifted when it doesn't match. Google's structured-data guidelines require FAQPage and HowTo content to be visible on the page; AI answer engines go further and read JSON-LD as ground truth when they summarize a page. Either way, a mismatch means the markup is describing a page that no longer exists.

Nothing is uploaded. The HTML you paste is parsed in this browser and never leaves your device.

1. Paste the page's HTML

Prefer a CLI, or want this as a CI gate?

Same logic, zero dependencies, one file — and it can check every page in a build in one pass:

node cli.mjs check dist/index.html                     # one page, human-readable
node cli.mjs check dist/index.html --json                # machine-readable
node cli.mjs check dist/**/*.html                         # every page a shell glob expands
find dist -name '*.html' | xargs node cli.mjs check       # or from a build's output tree
node cli.mjs check dist/index.html --strict                # also fail on malformed JSON-LD

Get cli.mjs — Node 18+, nothing to install. It reads only the local files you name: no network call, ever. Exits 1 if any claim diverges, so it works as a CI step after a static-site build.

What's checked, per schema type

TypeFields checked

Only textual claims a visitor can read and verify by eye — never opaque numeric or URL fields (ratingValue, priceCurrency, image, and so on), which this tool has no opinion on. LocalBusiness/Organization subtype coverage is a curated list plus a suffix heuristic, stated plainly as non-exhaustive rather than presented as complete.

More: why Google requires this for FAQPage and HowTo, and how AI answer engines make it matter for every other type too. See also: how this differs from Google's Rich Results Test, and how this differs from checking it by eye.

Common questions

Why does this matter for FAQPage and HowTo specifically?

Google's structured data guidelines say FAQPage and HowTo markup must describe content that is visible to a visitor on the page itself. Markup that describes text nobody can see is treated as unreliable, and Google's documentation says a page misusing it may lose the rich result entirely. Every other type this tool checks can drift the same way; those two are simply where Google has said so in writing.

Why would JSON-LD and page copy ever disagree?

Someone edits the visible copy and forgets the JSON-LD, or edits the JSON-LD and forgets the copy. Both are hand-authored text living in different parts of the same file, so nothing forces them to stay in sync, and no build step here catches it unless something like this tool checks.

Is this an SEO audit or a ranking guarantee?

No. It is a deterministic string comparison between two things already in the page you pasted: what the JSON-LD claims and what the visible text says. A clean result means those two texts agree, nothing more. It is not a Search Console substitute, it does not check whether your markup is eligible for a rich result, and it makes no promise about rankings or traffic.

Is my page content uploaded anywhere?

No. The browser page parses the HTML you paste entirely in your own browser and never sends it anywhere. The CLI reads only local files — no network call, ever.