Skip to content
Technical SEO 4 min read By The Crawl Cove team

How to Validate Structured Data Site-Wide

Why a one-page structured data validator misses template bugs, and how to check every page's JSON-LD in a single crawl instead.

Part of Technical SEO Guide: Crawl, Index, Speed

Key takeaways

  • A one-page validator only ever tells you about the one URL you paste in, so a bug baked into a shared template stays invisible until someone happens to test the right page.
  • Missing structured data and broken structured data are different problems: a page can have zero JSON-LD (a missed opportunity) or malformed JSON-LD that fails silently (an actual defect), and only a crawl-wide check catches both across every page at once.
  • Older WordPress and e-commerce themes often mark pages up with microdata instead of JSON-LD; a validator that only recognises JSON-LD wrongly flags a correctly-marked-up page as having no structured data at all.
  • A single missing required property, like an Article schema block with no headline, can be wrong on every post that uses the template, not just the one you happened to test.

Paste a URL into Google's Rich Results Test and it will tell you, honestly and specifically, whether that one page's structured data is valid. What it can't tell you is whether the other 200 pages built from the same template have the exact same bug, because it never looks at them. Structured data problems are almost always template problems, and a one-page validator is structurally unable to catch that.

Why a single URL doesn't tell you about the template

Most sites don't hand-write JSON-LD for every page. A blog template renders an Article or BlogPosting block from the same code path for every post; a product template does the same for Product. If that template omits a required property, forgets @context, or produces malformed JSON under some condition, every page it renders inherits the same bug. Testing one URL and seeing it pass tells you that URL is fine. It tells you nothing about the 199 others, unless the bug happens to be data-dependent and only shows up on some of them, which is worse: it means the one page you tested passing doesn't even guarantee the next one will.

The only way to know for certain is to check every page the crawl actually reaches, not the handful you remember to paste into a validator.

Missing and invalid are different problems

A page with no structured data at all is a missed opportunity: no rich result eligibility, and less for an AI system to cite when it summarises the page, but not a technical failure of anything that's actually there. A page with structured data that's present but broken is a different kind of problem entirely, because it can fail silently. A malformed JSON-LD block, one with no top-level @context, a node with no @type, or a recognised type missing a property search engines expect, like an Article block with no headline or a Product block with no name, can sit on a page for months looking like it's doing something when it isn't parsing at all.

Both are worth checking for, but a single check that only asks "is there any structured data here" will miss the second category entirely: broken JSON-LD and no JSON-LD can look identical from the outside if all you're checking is presence.

The microdata trap

Not every page marks up structured data as JSON-LD. Microdata, itemscope and itemtype attributes written directly into HTML, is still common on older WordPress themes and a lot of e-commerce platforms that predate JSON-LD becoming the default recommendation. A check that only recognises JSON-LD will flag a page marked up entirely in microdata as having no structured data at all, which is simply wrong: the page is correctly marked up, just in the older format. Getting this right matters more than it sounds, because it's the difference between a genuine finding and a false positive that sends someone hunting for a problem that was never there.

Not every page needs it

Thin utility pages and short landing stubs aren't expected to carry schema, and a check that flags every short page on a site as "missing structured data" generates noise nobody acts on. A useful check applies a minimum content length before it considers a page a candidate for structured data at all, so the findings that come back are ones actually worth fixing rather than a few hundred stub pages nobody was ever going to mark up.

How to check this across a whole site

Run a full crawl and look at two things separately, not one combined pass/fail: which substantial pages carry no structured data in either JSON-LD or microdata, and which pages carry structured data that's actually broken (malformed JSON, no @context, no @type, or a known type missing a required property). Crawl Cove's structured data checker runs both across every page in one crawl, so a template bug that would otherwise need testing every individual URL to notice surfaces the moment it exists, on however many pages it actually affects. If you're starting from nothing, the free schema markup generator builds valid JSON-LD for the common types without you writing it by hand.

Wrap-up

A one-page validator answers "is this page okay," which is the wrong question when the bug lives in a template rather than a page. Check every page a crawl actually reaches, treat missing and broken structured data as separate findings, and make sure whatever's doing the checking recognises microdata as well as JSON-LD before it tells you a correctly-marked-up page has nothing on it at all.

Start a 14-day trial with no card required, or see the full technical SEO audit checklist this fits into.

Frequently asked questions

What's the difference between missing and invalid structured data?
Missing means a page has no structured data at all, in JSON-LD or microdata, which is a missed opportunity for rich results and AI citations rather than a defect. Invalid means structured data is present but broken: malformed JSON that fails to parse, a block with no @context, a node with no @type, or a known type missing a property search engines expect, like an Article with no headline. Both need fixing, but they need different fixes.
Does Google's Rich Results Test check my whole site?
No. It validates the one URL you paste in against the specific rich result types it recognises, on demand, one page at a time. It won't tell you that the same bug exists on the other 200 pages built from the same template unless you paste in every one of them individually.
Will microdata get flagged as missing structured data?
It shouldn't, if the tool checking it recognises microdata as well as JSON-LD. A check that only looks for JSON-LD will wrongly flag a page correctly marked up with itemscope/itemtype microdata, which is still common on older WordPress and e-commerce themes.
Does every page need structured data?
No. Thin utility pages and short landing stubs aren't expected to carry schema, so a check worth trusting applies a minimum content length before it flags a page as missing structured data, rather than flagging every short page on the site.

Audit your site the easy way

Crawl Cove finds these issues on your machine. Try the Structured Data Checker or see every feature.

Download Crawl Cove