Skip to content
Join the waitlist

Classic Search

JSON-LD

JSON-LD is a W3C standard syntax for writing linked data in JSON. On websites it carries structured data, usually in the schema.org vocabulary, inside a script element of type application/ld+json, apart from the visible HTML. Google recommends it for structured data, as the format that is easiest to implement and maintain in most cases.

  • Industry term

By QueryRev ResearchPublished Updated5 min read

Why it matters.

It is JSON that says what it means. The W3C specification describes JSON-LD as a lightweight syntax to serialize linked data in JSON, designed so that existing JSON can be read as linked data with minimal changes and used directly as JSON with no knowledge of RDF[1]. Its current version, JSON-LD 1.1, became a W3C Recommendation on 16 July 2020[1].

Three keywords do most of the work on a web page. @context names the vocabulary, usually schema.org, so that a term such as name expands to a full identifier; @type sets what kind of thing a node is; and @id gives the thing an identifier of its own, which the specification says should, when followed, lead to a description of it[1]. With @id, the Organization on the home page and the publisher of an article can be declared one and the same node.

Google prefers it for practical reasons. It supports JSON-LD, Microdata and RDFa equally where the markup is valid, and recommends JSON-LD because it is not interleaved with the visible text, which makes nested items easier to express, and because it can be read when injected into the page by JavaScript[2].

Injected markup has a cost. Google processes structured data that is in the DOM when it renders a page, but warns that dynamically generated Product markup can make Shopping crawls less frequent and less reliable, an issue for prices and availability that change often[3].

The format is only the container. What goes in it follows the rules of structured data: Google’s guidelines say not to mark up content that is not visible to readers of the page[4].

Identifiers are only useful if they resolve. QueryRev’s study checked the links inside another machine-readable file, llms.txt: of the 684 files with at least one link checked, 84.9% had every checked link answer with a page[5]. The URLs in a JSON-LD block, for logos, images, profiles and @id values, deserve the same check.

How it is measured.

Parse it first. A block that is not valid JSON cannot be read, so a stray comma from a template breaks every item in it. Then test the live URL in the Rich Results Test, which Google recommends over pasted code because the code input has JavaScript limits[3], and watch Search Console’s rich result reports after each release.

Then read it as a graph: list the nodes by @id and @type, and check that each thing appears once, that every reference points to a node that exists, and that the URLs resolve.

Last, compare each value with the rendered page. Valid syntax and true content are different checks, and only the second tells you the markup describes what readers see.

Measured by

  • Blocks that parse
  • Nodes joined by @id
  • Values against the page

A worked example.

Sample data: an invented site, to show the method.

A publisher’s article template prints two JSON-LD blocks: one from the theme with an Organization named “Fernhollow Press”, one from a plugin naming the publisher “Fernhollow”. Neither has an @id, so the two cannot be joined, and the article’s publisher is a third, separate copy.

The fix is one Organization node with an @id on the home page’s address, and every article’s publisher pointing to that @id instead of repeating the facts. Both versions pass the Rich Results Test; only the second describes one publisher.

One publisher, by @id

What to do, step by step.

  1. Generate the JSON-LD from the same data that renders the page, on the server where you can, so the markup and the text cannot drift apart.

  2. Give each recurring thing, the organisation, the website and each author, one node with a stable @id, and refer to it from other blocks.

  3. Use the most specific schema.org type that fits, with the properties Google documents for the feature you want.

  4. Escape the content: text inside a script element must not contain a sequence that closes the script early.

  5. Test the live URL rather than pasted code, and watch Search Console’s reports after each release.

  6. Check that every URL in the markup resolves: logos, images, profiles and the pages that @id values point to.

Mistakes to avoid.

  • Invalid JSON. A trailing comma or an unescaped quotation mark makes the whole block unreadable. Validate after every template change.

  • The same facts in every block. Copies drift. Refer to one node by @id instead of writing the organisation out again on every page.

  • Injecting prices with scripts. Google can read injected JSON-LD, but says dynamically generated Product markup can make Shopping crawls less frequent and less reliable.

  • Using it for hidden content. It describes the page. It is no place for text that readers cannot see.

How QueryRev treats it.

QueryRev reads JSON-LD from its own crawl of the rendered page, joins the nodes by @id and compares their values with the visible text. A broken block, a duplicate node or a value that disagrees with the page becomes a proposed fix with the markup before and after, approved by a person and written to the Change Ledger. The related checks sit in the GEO audit checklist.

Questions people ask.

Is JSON-LD the same as schema.org?

No. JSON-LD is the format; schema.org is the vocabulary most websites write in it. The same schema.org data can also be written as Microdata or RDFa.

Where does JSON-LD go on a page?

In a script element of type application/ld+json, in the head or the body of the HTML. Google reads it in either place.

Can I add JSON-LD with Google Tag Manager?

Yes. Google documents generating JSON-LD with Tag Manager or custom JavaScript, and processes structured data that is in the rendered page. Markup rendered on the server is more reliable for facts that change often, such as prices.

Sources and citation.

Primary sources only: the search engines, the AI vendors, standards bodies and QueryRev’s own research. Each is cited in the text by its number.

  1. JSON-LD 1.1: A JSON-based Serialization for Linked DataW3C ·

  2. Introduction to structured data markup in Google SearchGoogle Search Central ·

  3. Generate structured data with JavaScriptGoogle Search Central ·

  4. General structured data guidelinesGoogle Search Central ·

  5. State of AI crawler access, October 2026QueryRev Research ·

Cite this definition

A suggested citation. Its link goes to the definition, whose anchor does not change.

QueryRev Research. “JSON-LD.” QueryRev AI glossary, 18 October 2026. https://queryrev.com/glossary/json-ld#definition

Related terms