How we measure schema markup
A Schema Audit crawls your site, keeps the bytes of every page it fetched, and runs eleven checking modules over them. No model in the path, no randomness: the same bytes always give the same findings.
Depth: parse passes per page
Whether a number would move if we measured again. Here it would not, so the ladder is one rung long.
| Parse passes per page | Grade | Cost | What it buys |
|---|---|---|---|
| - | T1Snapshot | - | Not needed. One pass is already Verified. |
| - | T2Directional | - | Not needed. One pass is already Verified. |
| - | T3Consensus | - | Not needed. One pass is already Verified. |
| - | T4Established | - | Not needed. One pass is already Verified. |
| 1 Default | T5VerifiedChecked directly. Same answer every time. | ×1 |
Other audits buy certainty with repeat draws because a model asked twice can answer differently. Parsing bytes cannot, so a second pass would be a receipt, not a measurement. The grade carries no star because it is a property of the code, not an estimate. The AI analysis panel is a model pass and is not covered by this grade; we offer no rung that reruns it, because the score does not use it.
Breadth: pages audited
Breadth is where this audit's real uncertainty lives. The template editor labels this control Depth, a historical name: it buys more pages, never a better reading of one page. One page costs 10 credits, fifty 30, two hundred and fifty 80.
| Pages audited | Grade | Cost | What it buys |
|---|---|---|---|
| 1 | UnknownNot recorded, or too few samples to tell. | ×1 | Home page only. |
| - | T1 | - | Not on the scale. Narrow is the lowest breadth grade. |
| - | T2Narrow | - | Not offered. The first rung already reaches T3. |
| 50 Default | T3Partial*Still finding new things at the end. | ×3 | The default. Of 263 scans, 100 hit the cap. |
| 250 | T4Mostly saturated*New finds had nearly stopped. | ×8 | |
| - | T5Saturated | - | Not offered. |
Why it stops at T4. No scan has run past 50 pages yet.
* Our estimate, not yet validated by real runs.
The one-page rung is unstarred because 81 stored single-page scans are its validation: they average 0.48 distinct schema.org types against 12.28 for the 87 scans that reached fifty pages, so one page sees about 4% of what a standard crawl finds.
Fifty pages grades Partial because two measurements disagree and we publish the weaker. Across 71 stored fifty-page scans, the last page to raise a new kind of problem was page nine on average, but markup keeps appearing: one site went from 10 schema types at twelve pages to 36 at fifty, another from none at one page to seven at fifty, and 100 of 263 standard scans stopped at their page cap rather than running out of site. The starred rungs rest on per-scan totals, not page-by-page curves, which stored history cannot support.
Every scan now records its own novelty curve: per page, in crawl order, how many new schema.org types and kinds of finding it contributed, with empty pages kept as real zeros. Your report's grade is read off that curve and can disagree with the rung you bought. When a crawl stops at its cap, the report says so beside the grade: a quiet curve means nothing new in the pages we fetched, never in the pages we did not.
What the report claims
| Number | Type | What it can support |
|---|---|---|
Presence, parsing, types used, required properties, rich-result eligibility, stable @id, resolving sameAs, plausible dates, cross-page conflicts, Open Graph agreement | Verified | Functions of bytes we already hold, run against a rule pack whose fingerprint is stamped on each finding. |
| Site and category scores | Derived | A weighted ratio of checks passed to checks that applied. Never firmer than its inputs. |
| AI analysis | Interpreted | One model pass over your entity graph and five sample pages, on which types your content implies but lacks and where markup disagrees with the page. A single read with no confidence figure. The score does not depend on it. |
Fidelity
We read the HTML your server returned to our crawler - the document itself - and every presence, validity, coverage and conflict finding rests on it. Two things are stood in for:
- Unless you switch rendering on, we read HTML as it arrives, so markup your JavaScript injects after load is invisible. Rendering fetches the page a second way and reports the difference rather than silently preferring one.
- Rich-result eligibility is our reading of Google's published requirements, not Google's verdict. A page we call eligible can still lose its rich result for reasons no markup check can see.
The crawl is itself a sample: it starts at your entry URL, follows your sitemap and same-origin links, and stops at the template's page cap.
What we do not claim
- That Google will show you a rich result. We check the documented requirements; Google decides.
- A confidence percentage on the AI analysis panel, or on any model judgment.
- That the crawl saw your whole site. Where it stopped early we name the cap.
- A rate from a count of failing checks. It depends on pages fetched and modules enabled, so it compares only to your own past scans.
- A breadth grade for scans run before this measurement existed. Their per-page markup was never stored in a form a curve can be rebuilt from, so they are left blank.