Digizap

Your digital pocket knife.

Your IP: 216.73.217.62

Knowledge base

JSON-LD: what your page promises a search engine

A page can say more than its head: in a script with application/ld+json a site writes in JSON what it claims about itself — an organisation, an article, a breadcrumb, a product. A search engine reads that as a promise: what stands there, it may use for what it shows outside the page. Linked data pulls those promises out of the HTML and shows them as a crawler finds them — block by block, node by node.

The tool performs no new measurement: it builds on the same HTML reading as Link preview — our server fetches the page, your browser reads. And it reads honestly: a block that does not parse as JSON gets the place where it broke, an empty block is called empty, and JSON without a single @type is named instead of half-read. What does not stand there — microdata, RDFa — stays out of view and is not denied either.

This article reads how those blocks are built, what a crawler can take from them and what it cannot, and why a block that parses neatly is still not a correct promise. The truth behind the claim — whether the product really exists — no tool measures.

1. A block is a letter to the crawler

JSON-LD stands in the HTML as a script with type application/ld+json and contains strict JSON. At the top stands @context: the pointer that says which vocabulary the properties come from — usually "https://schema.org". Below it stands one object, or a list, or an object with @graph: a container of separate nodes. A node is what carries an @type; in the properties of a node other nodes may stand — an Article with an Organization as author, a product with an offer, a website with a searchaction. The order a crawler reads is the order of the document: several blocks are several letters, not a retraction.

Why sites do this: what you write in a node, the search engine may use outside your page — a breadcrumb in the search result, the date and type of an article, the price of a product. It is no guarantee and no ranking signal by itself: it is an offer. And the address of that letter is the page itself: what you promise on one page, counts there — a blog that claims something about a product that the product page does not say, is two letters at odds.

2. What the preview reads — and what it refuses

The preview reads what actually stands there: blocks in document order, each with its @context, inside them the nodes with @type — also in @graph and nested in each other’s properties — with the properties attached, briefly shown but in full numbers. A block that is no JSON is refused with the place the parser itself names: line and column, or position, or "no place" when the JSON broke before one could be named. An empty block is called empty; JSON that does parse but carries no node with @type is called a promise without a type.

The tool’s own limits are measured too, not dropped: each tool reads at most 24 blocks, 80 nodes per block and six levels deep, and what falls outside that stands in the report as "not read" instead of "not present". And with cut-off HTML the tool says it out loud: blocks further on were not seen, so "no JSON-LD" is then no proof that the page carries none.

3. A block that parses is not yet a correct promise

What this reading does not do, stands on the card with it. The vocabulary is not checked: the tool reads which types and properties stand there, but does not look up whether they belong to schema.org — an unknown type is unknown, not wrong. What Google, LinkedIn or WhatsApp makes of a block depends on their own rules, which are not measured; "rich results" are not a right but a chance. And microdata and RDFa — structure in attributes of the body — stay out of view: "no JSON-LD" does not mean "no structure on this page".

The stillest point: no tool judges what the JSON claims. A block that parses neatly may still promise an untruth — a price that is not the price, an author who is not there. The search engine reads the promise; whether the promise comes true, the page itself must make good on. Structured data is a letter, not a notarial deed — and this preview shows the letter, not its truth.

4. From belief to block: starting

Start small and true: each kind of node you can substantiate on your page. BreadcrumbList (the paths as you yourself show them), Organization (name, logo, address of the site), Article (headline, date, author) or Product with Offer — chosen from what the page verifiably makes good on, not from what sounds nice. Put one block, read it back with the preview and let the crawler check your letter: most crawler errors are no mystery but sloppiness — a forgotten comma, a confusing quote, a node without @type — and you find them here by name and place.

And read the letter next to the rest of your head: Link preview shows what sharers take from your meta rules, Link preview from your page explains how that head works together, and robots.txt and sitemap crossed is about what the crawler may come read at all. Head, block and crawl rule together are the letter you write to a search engine.

Measure it yourself: Linked data

The JSON-LD your page already carries, read as a search engine finds it: blocks, nodes with @type, properties — and the JSON that does not parse. Built on the same HTML reading as Link preview.

Read on