JSON-LD: definition and how it works
99Visibility Research · Updated October 21, 2026 · 4 min read
Short answer
JSON-LD (JavaScript Object Notation for Linked Data) is a format for writing structured data as a JSON block inside a script tag, separate from the visible page. Google recommends it for structured data. It describes entities such as an organization, product or article using schema.org vocabulary. As of October 2026, Google says structured data isn't required for its generative AI features, so key facts still belong in visible HTML.
Key takeaways
- JSON-LD is a JSON block in a script tag of type application/ld+json that describes a page's entities with schema.org vocabulary.
- Google recommends JSON-LD because it sits apart from the visible HTML and is easier to add and maintain.
- Google says structured data isn't required for generative AI search, and Ahrefs' matched test found no major citation uplift from adding schema.
- Markup does not replace stating your price, product names and key facts in the visible, server-rendered HTML.
- Existing JSON-LD does no harm, so keep it accurate rather than ripping it out.
What JSON-LD is
JSON-LD stands for JavaScript Object Notation for Linked Data. It is one of the formats you can use to add structured data to a page. The other two are Microdata and RDFa, which weave attributes into your visible HTML.
JSON-LD works differently. It lives in a single script block that browsers don't display. Google's structured data documentation recommends it because it keeps the description of your page separate from the page's layout.
The vocabulary inside the block usually comes from schema.org. JSON-LD is the container. Schema markup is the vocabulary you put in it.
How JSON-LD works
You place a script tag with the type application/ld+json in the page head or body. Inside it, you write key-value pairs that name an entity and its properties.
Say you run a hypothetical dental clinic. A minimal Organization block looks like this:
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Organization",
"name": "Example Dental",
"url": "https://www.example.com",
"logo": "https://www.example.com/logo.png"
}
</script>
The parts that matter
@contexttells the parser which vocabulary the terms come from.@typenames the kind of thing being described.- The remaining properties describe that thing. Values must be valid JSON: quoted strings, no trailing commas.
The "linked data" part means entities can reference each other by URL or @id. That lets one block connect an organization to its logo, its products and its pages.
One technical trap: if your site injects JSON-LD with client-side JavaScript, many crawlers never see it. Vercel's crawler study found that ChatGPT and Claude crawlers fetch JavaScript files but don't execute them. Googlebot renders JavaScript. Most AI crawlers don't. Put the block in the server-rendered HTML.
Why it matters for AI visibility
Here the evidence is narrower than most marketing copy suggests. Google's guide to generative AI features states that you don't need new markup to appear in AI Overviews or AI Mode. Its AI features page says there are no additional technical requirements beyond being indexed and snippet-eligible.
The best test so far points the same way. Ahrefs tracked 1,885 pages that added schema against matched controls and found no major uplift on any platform. AI Overviews citations fell 4.6%, a statistically significant drop, while AI Mode rose 2.4% and ChatGPT 2.2%. Every treated page already had 100+ AI Overview citations, so whether markup helps a page enter the answer at all is untested, not refuted. The full digest of that study covers the method.
What does have a positive signal is plain: stating a specific fact (a price, a number, a one-line definition) in HTML an engine can fetch. That gives the engine a sentence it can quote. The comparison of structured data vs plain-text facts walks through the difference.
The next move: make sure every fact in your JSON-LD also appears in visible text, and that both say the same thing.
Common misconceptions
- "Adding JSON-LD gets you cited by AI." The evidence doesn't support it. Our guide on whether schema helps AI citations goes deeper.
- "FAQ markup feeds AI answers." Google deprecated FAQ rich results in May 2026. See the FAQPage schema entry for its status.
- "Markup can hold facts the page doesn't show." Engines quote text. A price that exists only in JSON-LD gives them nothing visible to cite, and a mismatch between markup and page is an error to fix.
- "Schema is useless, so delete it." Also unsupported. Google says existing markup does no harm. Read whether removing schema hurts AI visibility before you touch it.
Frequently asked questions
Is JSON-LD the same as schema markup?
No. JSON-LD is a syntax, a way of writing data as JSON inside a script tag. Schema markup usually refers to the schema.org vocabulary, the types and properties like Organization, Product and name. You can write schema.org vocabulary in JSON-LD, Microdata or RDFa. Google recommends JSON-LD as the format, but the vocabulary is what describes your content.
Where should the JSON-LD script go on a page?
Google accepts it in the head or the body. What matters more is that it is present in the HTML your server sends. If a tag manager or client-side script injects it after load, crawlers that don't execute JavaScript will miss it. Vercel's study found ChatGPT and Claude crawlers fetch JavaScript files without running them, so server-render the block.
Does Google require JSON-LD for AI Overviews?
No. As of October 2026, Google's AI features documentation says a page needs to be indexed and eligible to show with a snippet, and that there are no additional technical requirements. Its generative AI optimization guide says you don't need new markup to appear. JSON-LD still supports Google rich results for types that remain active.
Can JSON-LD contain facts that aren't on the visible page?
Technically the parser accepts anything valid, but it is a bad practice. AI engines quote visible text, so a fact that lives only in markup gives them no sentence to cite. A mismatch between markup and page also creates conflicting versions of the same fact. Keep every value in your JSON-LD identical to what the page says.
Sources
This page is AI-assisted. It was written from a verified evidence base and checked against our editorial policy. Engine behaviour changes often; facts are as of October 21, 2026.