passcite

Schema markup validator: what your markup actually declares

Point this at a live page. It pulls out every JSON-LD block, names the type, lists what it declares, and says which of the fields that change an answer are missing.

The three failures worth catching

  • Markup that will not parse. A trailing comma, a smart quote from a CMS editor. The crawler skips it in silence and you keep believing the page is marked up.
  • Markup that is all boilerplate. A WebSite node and a breadcrumb trail arrive with the theme. Neither says what you sell.
  • Markup that declares a type and no facts. A LocalBusiness with a name and nothing else has announced that it exists, which nobody was disputing.

Missing more than you expected?

The generator builds a correct block for the five types that matter, and leaves empty fields out rather than writing them as blanks. Fill it in from what is true, paste it into the head, read it back here.

FAQ

Questions

How is this different from Google's Rich Results Test?
That tool answers whether your markup can produce a rich result in Google Search. This one answers a different question: has the page stated the facts an answer engine needs? A block can be perfectly valid, eligible for rich results, and still not say where your business is or what it costs.
It says everything on my page is boilerplate. What does that mean?
WebSite and BreadcrumbList blocks are on nearly every page built with a modern CMS or SEO plugin — they come free with the theme. They are fine, and they say nothing about your business. If those are all you have, no markup on the page declares what you sell, where you are, or what you charge.
Why is a missing address flagged so hard?
Because buyer questions are place-bound. 'Dentist near me', 'emergency plumber in Austin'. A LocalBusiness block with no PostalAddress has not told anything where you operate, and the sentence in your header saying so is prose a model has to interpret rather than a fact it can use.
One of my blocks will not parse. Does that matter?
Yes, and silently. A crawler that hits invalid JSON skips the block without complaining. As far as anything reading your page is concerned, that markup does not exist — which is worse than not having it, because you think you do.
Does this check microdata or RDFa?
No, only JSON-LD. That is the format Google recommends and what almost all current markup uses. If your site is on older microdata, moving it to JSON-LD is worth doing for its own sake.
Do you store the pages you read?
No. The fetch happens to get around the browser's cross-origin rules, and the result is returned to you and not written down.

See who the engines recommend instead

The prompts your client loses, who wins them, and the tasks that would change it.

10 free credits — your first report, 10 prompts across ChatGPT, Claude and Google AI Mode. A free account, no card. About 3 minutes.