What Is JSON-LD?
JSON-LD (JSON for Linking Data) is a lightweight, JSON-based format for expressing structured data. On a web page it lives inside a single script tag, separate from the visible HTML, where it declares a page’s entities using the schema.org vocabulary. Google recommends JSON-LD as the easiest structured data format to implement and maintain at scale.
- JSON-LD stands for “JSON for Linking Data” and is a W3C standard — version 1.0 became a Recommendation on January 16, 2014, and version 1.1 on July 16, 2020.
- It sits in a
<script type="application/ld+json">block, detached from visible HTML, so redesigning a page’s layout doesn’t break the markup — the main reason Google prefers it. - A JSON-LD block uses
@context(usuallyhttps://schema.org) to name the vocabulary and@typeto declare what kind of entity the data describes. - JSON-LD is one of three structured data formats Google accepts, alongside Microdata and RDFa; Google states all three are equally valid but recommends JSON-LD.
How JSON-LD Works
JSON-LD expresses structured data as ordinary JSON — nested key-value pairs — with a few special keywords that turn plain JSON into Linked Data, meaning data whose terms point to a shared, machine-understood vocabulary. On a web page it’s placed inside a single <script type="application/ld+json"> tag in the document’s head or body. Search engine crawlers parse that block directly; browsers ignore it, because it isn’t presentational content.
Two keywords do the essential work. @context names the vocabulary the block is written in — for schema markup it is set to https://schema.org, which tells the parser to interpret every property name against schema.org’s definitions. @type declares what kind of entity the block describes: Product, Article, Recipe, Event. Everything else is properties of that type. A Product block, for instance, carries name, image, offers, and aggregateRating, each mapped to a piece of content on the page.
The defining characteristic — and the reason Google prefers it — is that JSON-LD is detached from the visible HTML. Google’s documentation describes it as “a JavaScript notation embedded in a <script> tag” and recommends it “as it’s the easiest solution for website owners to implement and maintain at scale (in other words, less prone to user errors).” Because the markup lives in one block rather than being sprinkled through the page’s elements, you can generate it server-side, template it, or inject it with a tag manager without ever touching the page’s layout.
The Standard Behind It
JSON-LD isn’t a Google invention — it’s a formal open standard, which is why every major engine can rely on it. It’s maintained by the W3C, and its acronym expands to “JSON for Linking Data.” The standardization timeline is a matter of public record:
- JSON-LD 1.0 became a W3C Recommendation on January 16, 2014, after roughly four years of development.
- JSON-LD 1.1 became a W3C Recommendation on July 16, 2020, adding refinements such as scoped contexts and improved handling of remote contexts.
The format was deliberately designed so that systems already using JSON could adopt Linked Data with “a smooth upgrade path from JSON to JSON-LD” rather than learning an entirely new syntax — which is a large part of why it displaced older inline approaches for search markup.
Example of JSON-LD
The most authoritative example is Google’s own recommendation in its Search Central structured data documentation. Google documents three formats a page can use to express structured data — JSON-LD, Microdata, and RDFa — and states that “all 3 formats are equally fine for Google, as long as the markup is valid and properly implemented.” In the same breath it singles out JSON-LD: “In general, Google recommends using JSON-LD for structured data if your site’s setup allows it, as it’s the easiest solution for website owners to implement and maintain at scale.”
That documented preference is the worked example, because it explains a real behavior you can observe. Consider the same Product entity marked up two ways. In Microdata, the name, price, and rating are spread across itemprop attributes attached to the visible <span> and <div> elements that render them — so if a developer restructures those elements, the markup can silently lose properties. In JSON-LD, the identical Product is one self-contained block: change the page’s visible layout all you want, and the structured data is untouched because it never lived in the layout to begin with.
The lesson generalizes to why the industry converged on JSON-LD. Structured data is most valuable when it’s reliable and auditable, and reliability comes from keeping the data in one place, generated from a single source of truth, independent of presentation. JSON-LD’s separation from the HTML is exactly that property. It doesn’t make your markup more correct — it makes correct markup far easier to keep correct as the page evolves, which over the life of a site is where most structured data actually fails.
The reason I push almost every client toward JSON-LD isn’t ideology, it’s maintenance cost. With Microdata your structured data is stitched into the visible HTML with itemscope and itemprop attributes, so the moment a developer restructures a template or a page builder re-renders the markup, the structured data quietly breaks and nobody notices until a rich result vanishes from search. JSON-LD lives in one self-contained block you can inject, template, or generate server-side without touching the page’s presentation. That separation is the whole game: it lets you treat structured data as data, keep it in one auditable place, and version it independently of the layout. The catch people forget is that JSON-LD still has to describe content that’s actually on the page — detachment from the HTML is a convenience, not a license to invent facts the reader can’t see.
JSON-LD vs Microdata
| JSON-LD | Microdata | |
|---|---|---|
| Where it lives | A single <script> block, separate from visible HTML |
Attributes (itemscope, itemprop, itemtype) inside visible HTML |
| Coupling to layout | Independent — layout changes don’t break it | Tightly coupled — restructuring HTML can break it |
| Maintainability at scale | High; generate/template in one place | Lower; markup is spread across page elements |
| Google’s stance | Recommended | Accepted and equally valid |
| Standard | W3C Recommendation (1.0 in 2014, 1.1 in 2020) | Part of the WHATWG HTML standard |
Both express the same schema.org vocabulary and both are equally acceptable to Google. The difference is purely how the data is attached to the page: JSON-LD keeps it detached and centralized, while Microdata binds it to the visible elements — which is why JSON-LD has become the default for modern structured data work.
Frequently Asked Questions
What does JSON-LD stand for?
Why does Google recommend JSON-LD over Microdata?
What are @context and @type in JSON-LD?
Is JSON-LD an official standard?
The Bottom Line
JSON-LD is the format that made structured data practical at scale. By putting schema.org markup in one detached script block instead of threading it through your visible HTML, it lets you generate, template, and audit structured data as data — which is exactly why Google recommends it. Keep the block accurate to what’s on the page, anchor it with the right @context and @type, and you have the cleanest path to rich result eligibility.
Sources
- Introduction to structured data markup in Google Search — Google Search Central
- JSON-LD 1.1 (W3C Recommendation, 16 July 2020) — W3C
Rank & Cash — the weekly SEO breakdown
One practical teardown a week on ranking in search and getting cited by AI. No fluff.
