Contents 6
Every URL has two states. The bytes the server sends, and the document the browser holds once scripts have finished. Most of the time they match. When they do not, the gap is measurable by anyone, in any browser, in under a minute.
One page, measured on 19 September 2026
A public page that passes every rendering validator. Requested six times on the same day with six different identifiers, among them the four that the major answer engines publish for their fetchers. Every response was the same:
- 2,073 words
- 3 images
- 0 tables
- 0 structured-data blocks
- 0
sameAsstatements
A validator reading the same URL reports a complete structured-data graph. The graph is written by a script the page loads from another domain, which carries 28 type declarations and inserts them once it runs. The server draws no distinction between visitors and fetchers. Nothing is hidden here. The content simply arrives after the response does, and only for clients that execute scripts.
The two kinds of schema
Structured data reaches a page by two different routes, and the difference only shows in the response the server sends.
Schema in the delivered HTML
Written into the document the server sends: a ld+json block in the source, or Microdata and RDFa attributes on the markup itself. A client that runs no scripts reads this, because it is already there when the response arrives.
Schema added by script
Written into the document after it arrives, by JavaScript running in the browser. A rendering validator reports it, because a validator renders. It is absent from the response itself.
Test 1 below counts the first kind. Test 2 counts what only the second kind adds. They are reported apart and never summed.
What this means, stated exactly
A client that reads the HTTP response without executing JavaScript reads it without that part. Published measurements of large-scale crawler traffic report no JavaScript execution by the fetchers operated for the major answer engines; that measurement dates from 2024 and has not been contradicted since. Clients that draw on a rendering search index can receive the same content by that route.
Nothing here says anything about rank, traffic, citation or revenue. Whether a given system weighs a structured-data block once it arrives is not established, and this page does not claim it. The single claim is arrival.
Check a page yourself
Runs in this browser. Nothing is sent anywhere and nothing is stored.
One click, on the page you want to check
Drag this link to your bookmarks bar. Open any page, click the bookmark. The comparison runs on that page, inside your browser.
The bookmark requests the page with your own browser identifier and your own session. It compares what your browser is served against what your browser renders. Some pages restrict what a bookmark may do; the two fields below work everywhere.
Two fields, if you prefer
Limits of the measurement
- This compares two states of one document. It reports nothing about how any system uses the difference.
- Consent banners, logged-in sessions, personalisation and A/B tests produce differences on pages that are entirely sound. Read the breakdown, not the headline.
- Equal length in both fields means the same state was captured twice.
- A page that shows no difference is a page whose content arrives with the response. That is all it says.
First published 2026-02-27. Last revised 2026-09-19.
The same cache-bypassed comparison applies to a graph written after the response. See Schema delivery check. Crawl frequency is a separate question from what the markup says. See Crawl Budget Efficiency.
