What JSON-LD means
It stands for JSON for Linked Data. Unlike older formats such as microdata, it sits separately from your visible HTML rather than being woven through it.
That separation is the main practical advantage — you can change your page design without breaking your markup, and vice versa.
Why it matters for AI search
For AI systems, JSON-LD provides unambiguous facts that don't have to be inferred from prose or reconstructed from scattered HTML attributes.
It's also far easier to generate dynamically from source data, which is what keeps it accurate as content changes.
See it in action
The same fact, three markup formats.
Separation is the whole argument.
Markup woven through HTML breaks whenever someone changes the design. A separate JSON block generated from source data stays accurate.
How to get it right
Implementing JSON-LD
- Place it in a script tag with type application/ld+json, in head or body
- Generate values from source data rather than hardcoding them
- Nest related entities using @id references so relationships are explicit
- Validate after every release; a syntax error silently disables the whole block
- Keep one coherent graph per page rather than several disconnected blocks
Common questions
Is JSON-LD better than microdata?
For most purposes yes. It's Google's recommended format, doesn't break when the design changes, and is far easier to generate programmatically.
Where should the script tag go?
Either head or body works. Head is conventional and keeps it away from content edits.
Can invalid JSON-LD hurt us?
A syntax error means the block is ignored entirely, wasting the effort. Markup that misrepresents page content can be treated as manipulative.
Related concepts
These come up alongside JSON-LD constantly.