What is JSON-LD?
The JavaScript-based format Google recommends for adding structured data to a page.
<script type="application/ld+json">{ "@context": "https://schema.org", ... }</script>
A worked example
A service page carries a JSON-LD block declaring the organisation, the service offered, the breadcrumb trail and the questions the page answers. Nothing changes visually. Search engines and language models now read the page without having to infer any of it.
Why it matters
JSON-LD is the delivery mechanism for schema, and the format choice matters practically. Because it sits in a self-contained script block rather than being woven through the HTML, it can be generated per template, validated independently and changed without touching the page layout. Microdata and RDFa achieve similar things by embedding attributes throughout the markup, which is far harder to maintain and far easier to break.
The value has shifted over the last few years. Rich results in search remain worthwhile, but the larger benefit now is that well-formed JSON-LD removes ambiguity when a language model retrieves your page. It states plainly that this is a product, this is its price, this organisation has these credentials, this text answers this question.
For anyone doing answer engine work, that is the whole point. Being quoted accurately depends on being parseable unambiguously.
The nuance most people miss
A single malformed field invalidates the entire block, and it fails silently. Nothing breaks visually, no error appears, and rich results simply stop. This is why validation after every theme or plugin update matters more than getting it right once: updates routinely inject a second conflicting block or overwrite the first. Check the rendered HTML rather than the plugin settings, since what the browser receives is what search engines read.
Common mistakes
- Deploying once and never validating again, when plugin and theme updates break it silently
- Running two plugins that each generate schema, producing conflicting duplicate blocks
- Describing content that does not appear on the page, which is a guidelines violation
- Hand-writing JSON-LD on individual pages, so it drifts out of sync when content is edited