Guide : JSON-LD
JSON-LD is the script-based données structurées format Google recommends — easiest to implement, jamais touches visible HTML, and typically pairs with schema.org pour le SEO.
Langues
1 indice probant sur cette page
- Outil en ligne associéSchema Markup Validator
JSON-LD (JavaScript Object Notation pour Lié Données) is a données structurées format que lives in a <script type="application/ld+json"> tag; on the SEO side it's typically paired with the schema.org vocabulary to décrire page content, though JSON-LD itself peut carry autre vocabularies aussi. It's a W3C standard (2014), and Google recommends it over Microdata and RDFa pour un raison: it's the easiest format to implement and maintain at scale, parce que it sits in its propre block and jamais touches votre visible HTML. Tout three formats fonctionner equally bien quand implemented correctement. The syntax spine is @context (the vocabulary — schema.org pour la plupart SEO markup, but pas the seulement valid valeur), @type (the entity), and @id (a utile but optional stable URI pour linking entities — the basis of the @graph pattern, itself un valid façon to organize multiple entities, pas a requirement). The catch la plupart guides miss: Googlebot renders JavaScript so dynamically injected JSON-LD fonctionne pour Google, but several AI robots d’exploration — GPTBot and ClaudeBot inclus, as testé — don't execute JavaScript; that's provider- and date-specific, pas a universal rule, so vérifier directement si a particulier robot d’exploration matters to vous and server-render markup vous pouvez't confirmer sinon. Données structurées n’est pas a ranking signal; it governs rich-result eligibility and entity understanding, and it doit décrire content en réalité visible on lune page.
TL;DR — JSON-LD is a petit block of code vous ajouter to une page to spell out ce que lune page is à propos de — que it’s an article, a product, a recipe — in a format moteur de recherches and AI systems lire easily. It sits in its propre
<script>tag and jamais changements anything visitors voir. Google recommends it over the autre two formats parce que it’s the easiest to ajouter and garder tidy. It won’t faire vous rank plus élevé, but it peut faire votre results regarder richer (stars, prices, FAQs).
Ce que JSON-LD is
Quand vous publish une page, a human peut lire it and figure out “oh, ce is a recipe pour banana bread.” A moteur de recherche has to guess que from the words. Structured données is how vous arrêter the guessing — vous étiquette lune page in machine-readable code so engines know it’s a recipe, who the author is, ce que the rating is.
JSON-LD is the la plupart popular façon to écrire que étiquette. The nom stands pour
JavaScript Object Notation pour Lié Données. Evidence for this claim JSON-LD is a structured-data format that can express Schema.org types and properties in a script block. Scope: Schema.org JSON-LD guidance; JSON-LD is a format, not the vocabulary itself. Confidence: high · Verified: Schema.org: JSON-LD Vous don’t besoin to know ce que
que signifie to utiliser it. En pratique, JSON-LD is a chunk of code que semble comme a
liste of labelled facts, tucked à l’intérieur a <script> tag:
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Article",
"headline": "How to Bake Banana Bread",
"author": { "@type": "Person", "name": "Patrick Stox" },
"datePublished": "2026-06-26"
}
</script>The clé chose: que block lives separately from the words on votre page. It doesn’t modifier a unique chose votre visitors voir. It’s simplement instructions pour the robots.
Pourquoi Google likes it
Là are en réalité three façons to écrire données structurées — JSON-LD, Microdata, and RDFa. The autre two fonctionner by sprinkling supplémentaire code into votre visible HTML, tangled up with votre headings and paragraphs. JSON-LD garde it tout in un neat box.
That’s pourquoi Google recommends JSON-LD: it’s the easiest to ajouter, the easiest to garder correct, and you’re far moins probable to break something. Google’s words: it’s “the easiest solution pour website owners to implement and maintain at scale.” Tout three formats are fine — JSON-LD is simplement the least error-prone.
Evidence for this claim Google Search supports JSON-LD, Microdata, and RDFa and recommends JSON-LD when practical. Scope: Google Search structured-data guidance; supported formats do not guarantee feature eligibility. Confidence: high · Verified: Google: Structured data introductionCe que it en réalité fait pour vous
Two honest choses, and un myth:
- It peut faire votre résultat de recherche regarder richer. Recipe ratings, product prices, FAQ dropdowns, event dates — ceux “rich results” come from données structurées.
- It helps engines (and AI) comprendre votre content. It connects votre page to connu choses — votre business, an author, a product.
- It fait pas faire vous rank plus élevé. Ce is the myth. Ajout JSON-LD n’est pas a ranking boost. Google has said ce plainly and repeatedly.
The un rule que matters
Seulement mark up what’s en réalité on lune page. Don’t claim a 5-star rating in votre JSON-LD si aucun rating is affiché to visitors. Don’t décrire a price que isn’t là. Données structurées has to match the visible page — describing choses que aren’t là is contre the rules and peut obtenir votre résultats enrichis pulled.
Vouloir the precise version — the @context / @type / @id syntax, the @graph
pattern, the JavaScript-injection trap que hides votre markup from AI robots d’exploration, and
Comment valider it? Switch to the Avancé tab.
TL;DR — JSON-LD (JavaScript Object Notation pour Lié Données) is a W3C Recommendation from 2014 — construit on JSON, but
@contextis ce que rend it lié données, pas simplement JSON. It’s the données structurées format Google recommends parce que it’s the easiest to implement and maintain at scale and jamais touches visible HTML; Microdata and RDFa are equally valid quand correct. The syntax spine is@context(vocabulary — schema.org pour la plupart SEO markup, though the spec permet autre contexts),@type(entity),@id(a utile but optional stable URI pour cross-referencing entities — the basis of@graph, itself un valid pattern among others, pas a requirement). Placer it in<head>or<body>— Google accepts soit. Googlebot renders JS so dynamically injected JSON-LD fonctionne pour Google; several AI robots d’exploration (GPTBot, ClaudeBot inclus, as testé) don’t execute JS, but that’s provider- and date-specific — vérifier directement plutôt que assuming it pour every AI robot d’exploration, and server-render ce que vous pouvez’t confirmer. Données structurées is pas a ranking signal — it drives rich-result eligibility and entity understanding, and it doit décrire content visible on lune page.
JSON-LD is a format, pas a vocabulary
Premier, a distinction que clears up a lot of confusion: JSON-LD is the format;
schema.org is the vocabulary. JSON-LD is how vous écrire
the markup; schema.org’s Article, Product, Organization types are ce que vous
dire. Résultats enrichis are the fonctionnalité couche on top of les deux. Ce page is à propos de the
format. (The vocabulary-for-AI angle lives in
Balisage de données structurées pour AI.)
JSON-LD is a W3C Recommendation, premier publié
in 2014 — it predates its SEO adoption and was designed pour general linked-data
interoperability à travers the web, pas specifically pour search. Que history is pourquoi a
property comme @id exists at tout, and it’s the spec-level point la plupart SEO guides
skip: JSON-LD n’est pas simplement JSON. It’s construit on JSON syntax, but the @context
declaration is ce que rend the données lié — identifiable and connectable à travers
the web. Strip @context and you’ve got données a parser can’t interpret.
JSON-LD aussi isn’t married to schema.org. The spec lets @context référence quelconque
publié vocabulary — its propre exemples lien to non-schema.org contexts — so
JSON-LD is the correct réponse to “what format” pendant que schema.org is un réponse, the
courant un pour search and AI-search markup, to “what vocabulary.” Une page pourrait
validly utiliser JSON-LD with a différent vocabulary; it simplement wouldn’t be schema.org
markup anymore.
JSON-LD vs. Microdata vs. RDFa
Là are three façons to express données structurées, and Google supports tout of les:
| JSON-LD | Microdata | RDFa | |
|---|---|---|---|
| Où it lives | A separate <script> block | Inline itemprop attributes on votre HTML | Inline property attributes on votre HTML |
| Touches visible HTML? | Aucun | Yes | Yes |
| Peut be injected by JS / tag manager? | Yes (cleanly) | Awkward | Awkward |
| Google’s stance | Recommended | Pris en charge | Pris en charge |
| Error-proneness | Lowest | Plus élevé (tangled with markup) | Plus élevé (tangled with markup) |
Google’s recommendation is explicit but narrowly scoped: “In general, Google recommends en utilisant JSON-LD pour données structurées si votre site’s setup permet it, as it’s the easiest solution pour website owners to implement and maintain at scale (in autre words, moins prone to utilisateur errors).”
The nuance competitors usually drop — and the un worth keeping — comes from the même Google page: “Tout 3 formats are equally fine pour Google, tant que the markup is valid and correctement implemented per the feature’s documentation.” So the recommendation is à propos de implementation ease and error rate, pas parsing speed or ranking advantage. En utilisant Microdata n’est pas a penalty. JSON-LD simplement wins En pratique parce que it doesn’t entangle données structurées with the markup a designer pourrait edit tomorrow.
The syntax: @context, @type, @id, properties, nesting
Here’s an annotated Article block:
<script type="application/ld+json">
{
"@context": "https://schema.org", // the vocabulary — the common value for SEO
"@type": "Article", // the entity type
"@id": "https://example.com/post#article", // a stable URI for this entity
"headline": "How JSON-LD Works", // a property (key/value)
"datePublished": "2026-06-26",
"author": { // a nested entity
"@type": "Person",
"name": "Patrick Stox",
"url": "https://patrickstox.com/"
}
}
</script>@context— establishes the semantic framework (the vocabulary). Pour schema.org SEO markup it’s typically"https://schema.org", but that’s a convention, pas a rule:@contextmaps terms to identifiers, and the spec lets it point to autre vocabularies. It indique the parser how to interpret every property nom que follows. Ce is the partie que rend it lié données.@type— declares the entity:Article,Product,Organization,BreadcrumbList, etc. It maps to a schema.org type. Utiliser the la plupart spécifique applicable type —NewsArticleoverArticlesi it fits.@id— a unique URI identifying the resource. It’s the mechanism que lets vous référence un entity from un autre (voir@graphci-dessous), and it’s worth setting on anything you’ll cross-reference — but it’s pas universally requis. The JSON-LD spec permits unidentified blank nodes, so valid JSON-LD peut omit@idon entities vous jamais besoin to référence elsewhere.- Properties — ordinary JSON clé/valeur pairs, en utilisant vocabulary terms from the
@context. - Nesting — child entities are expressed as nested JSON objects (the
authorobject ci-dessus) or arrays of objects.
The @graph pattern (the scalable approach)
La plupart pages besoin plus que un entity: an Organization, a WebSite, a
BreadcrumbList, and the Article or WebPage itself. The naive approach is four
separate <script> blocks que repeat données. A scalable alternative is a unique
block with @graph — an array of entities, cross-referenced by @id. Neither the
JSON-LD spec nor Google mandates @graph as the pattern — it’s syntax pour
expressing a graph, and autre valid layouts exist (separate typed blocks, nested
objects sans a top-level @graph, blank nodes with aucun @id at tout) — but on a
site with several cross-referenced entities, it’s the pattern que avoids repeating
the même Organization or WebSite données on every page:
One Organization is referenced as publisher by the WebSite and Article. The WebPage belongs to the WebSite and is connected to the Article. Each entity is declared once, and the same stable ID string is reused for every reference.
© Patrick Stox LLC · CC BY 4.0 ·
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@graph": [
{
"@type": "Organization",
"@id": "https://example.com/#org",
"name": "Example Co",
"url": "https://example.com/"
},
{
"@type": "WebSite",
"@id": "https://example.com/#website",
"url": "https://example.com/",
"publisher": { "@id": "https://example.com/#org" } // reference, not a copy
},
{
"@type": "WebPage",
"@id": "https://example.com/post#webpage",
"isPartOf": { "@id": "https://example.com/#website" },
"breadcrumb": { "@id": "https://example.com/post#breadcrumb" }
}
]
}
</script>Define Organization une fois, alors point at it with { "@id": "...#org" } everywhere
sinon au lieu de repeating the nom, logo, and URL. Ce is how the major CMS schema
plugins construire leur output, and it’s pourquoi @id exists. Bing rend the même cas pour
JSON-LD’s nesting: it “rend defining liens and relationships entre données and
entities… facile parce que it supports nested données.”
Où to placer it: <head> or <body>
Google confirms les deux fonctionner — “Vous pouvez put the JSON-LD données in the <head> or
the <body> of lune page.” <head> is conventional, but plenty of CMS plugins
inject it near the fin of <body>, and that’s fine. Bing agrees it peut sit “in the
header, corps or foot of lune page.” Don’t burn temps relocating a valid block from
corps to head; it changements nothing. Evidence for this claim Google permits JSON-LD in either the head or body of an HTML document for supported structured-data features. Scope: Google Search JSON-LD guidance; markup must still match visible page content. Confidence: high · Verified: Google: Structured data introduction
Generating JSON-LD dynamically — and the AI robot d’exploration catch
Vous pouvez construire JSON-LD on the fly with JavaScript, and Google documents two façons to do it:
Evidence for this claim Dynamically generated structured data is acceptable to Google when it is rendered and complies with content and quality guidelines. Scope: Google Search JavaScript and structured-data guidance; crawlability and rendering remain prerequisites. Confidence: high · Verified: Google: Generate structured data with JavaScript- Google Tag Manager — a Custom HTML tag containing the JSON-LD, pulling valeurs from GTM variables. (Éviter duplicating données entre lune page and the tag.)
- Custom JavaScript — créer the script element programmatically:
const script = document.createElement('script'); script.setAttribute('type', 'application/ld+json'); script.textContent = structuredDataText; document.head.appendChild(script);
Ce fonctionne pour Googlebot, parce que Google renders lune page: “Recherche Google peut comprendre and traiter données structurées that’s disponible in the DOM quand it renders lune page.” So far, so bon.
Here’s the catch la plupart guides miss, stated carefully. Several AI robots d’exploration — notamment GPTBot and ClaudeBot, as commonly testé — have pas executed JavaScript. Si votre JSON-LD seulement exists après a client-side script runs, a JS-skipping robot d’exploration jamais sees it — it’s invisible to que bot même though Googlebot reads it fine, parce que Google documents rendering the DOM avant it semble pour données structurées.
Two honest caveats on que AI-crawler behavior: it’s Google’s propre documentation que establishes the Googlebot side; the AI-crawler side comes from testing and reporting on individual providers, pas a spec quelconque of les publish, so it’s provider- and date-specific — a crawler’s JavaScript prise en charge peut modifier, and I haven’t verified every provider directement. Don’t treat “AI crawlers skip JS” as a universal rule to construire on; treat it as a raison to vérifier the robot d’exploration vous en réalité care à propos de (or par défaut to server rendering quand vous pouvez’t vérifier). Si it isn’t in le serveur-rendered HTML and vous haven’t confirmed the robot d’exploration executes JS, assume it can’t voir it. Pour AI-search visibility, render JSON-LD server-side into the static HTML unless you’ve verified sinon. (Ce is the JavaScript-rendering problem from a structured-data angle — voir JavaScript SEO.)
There’s a second caveat pour ecommerce: Google warns que dynamically generated Product markup “can make Shopping crawls less frequent and less reliable,” qui is a réel problem pour fast-changing price and availability. Pour products, préférer rendu côté serveur regardless of AI.
The policies (ces have teeth now)
Google’s données structurées guidelines are short and load-bearing:
- “Don’t mark up content that is not visible to readers of the page.”
- “Don’t mark up irrelevant or misleading content, such as fake reviews.”
- “Put the structured data on the page that it describes.”
- “Use the most specific applicable type and property names defined by schema.org.”
- Don’t block votre structured-datune pages from Googlebot via robots.txt or noindex.
The visible-content rule is the un to internalize. Schema que describes content pas affiché on lune page has toujours been a violation; enforcement of “invisible” schema has tightened. Bing puts the warning bluntly: “même though the markup n’est pas visible on votre page, it is encore lire by the moteur de recherches, and putting spam données in the markup peut hamper votre presence.”
Courant JSON-LD mistakes
- Markup que doesn’t match the visible page — the #1 policy problem (a rating in the JSON-LD que aucun visitor sees).
- Malformed JSON — a trailing comma, an unescaped quote, or Word smart quotes
(
"au lieu de") que silently break the whole block. JSON-LD is strict. - Incorrect property noms — inventing properties que aren’t in schema.org, or misspelling réel ones, so the parser ignores les.
- A generic type où a spécifique un exists —
ThingorArticleoùRecipeorNewsArticlewas warranted. - Duplicate, inconsistent
Organizationblocks à travers pages with conflicting noms/logos. - Manquant requis properties pour the rich result you’re targeting (chaque fonctionnalité listes its propre requis fields).
- JS-injected markup assumed to be visible to every robot d’exploration — Google renders it, but some AI robots d’exploration have pas, and that’s worth verifying per robot d’exploration (the catch ci-dessus).
Validating JSON-LD
Four différent questions obtenir asked sous “is my JSON-LD valid,” and they’re pas the même question — passing un doesn’t réussir the others:
| Tester | Proves | Ne fait pas prove |
|---|---|---|
| JSON parses (quelconque JSON linter, or the Résultats enrichis Test’s parse step) | The syntax is legal JSON — aucun trailing commas, unescaped quotes, or smart-quote breakage | Que quelconque property nom is réel schema.org vocabulary, or que Google va montrer anything |
| Schema.org Validator | The properties and types exist in the schema.org vocabulary | Que Google supports the type as a rich result, or que requis fields pour a spécifique fonctionnalité are présent |
| Résultats enrichis Tester | The markup meets Google’s requirements pour a spécifique pris en charge rich-result type, on the rendered page vous testé | Que Google va en réalité afficher the rich result — eligibility isn’t a guarantee — or que autre search/AI systems parse it the même façon |
| Recherche Google Console — Enhancements / rich result reports | Ce que Google en réalité parsed on live, crawled pages, at scale, with réel errors | Real-time state — reports lag behind a recrawl |
- Tester by URL, pas pasted code, pour JS-rendered pages. The Résultats enrichis Test’s code-input mode doesn’t run votre scripts or resolve relative références the façon live-URL testing fait — it can’t tell vous ce que a client-side-injected block semble comme après rendering.
- Bing Webmaster Outils — Markup Validator — Bing has validated JSON-LD since August 2018.
- None of ces tests speak pour robots d’exploration que don’t render JavaScript (voir the AI-crawler caveat ci-dessus) — testing the rendered URL confirms ce que Google sees, pas ce que a JS-skipping bot receives.
Fait JSON-LD aider SEO?
Définir expectations honestly:
- Pas a ranking signal. John Mueller has said données structurées won’t faire a site rank meilleur. Complet arrêter.
- Rich-result eligibility. It’s ce que rend vous eligible pour enhanced SERP fonctionnalités (stars, prices, FAQs, breadcrumbs) — eligibility, pas a guarantee.
- CTR, indirectly. Richer-looking results peut earn plus clicks, qui is the réel payoff pour la plupart sites.
- Entity understanding. It helps engines connecter votre page to connu entities and the Knowledge Graph.
- AI search. Fabrice Canel (Bing) confirmed in 2025 que balisage de données structurées helps Microsoft’s LLMs comprendre content — but remarque the controlled-study caveat from Balisage de données structurées pour AI: it’s infrastructure pour disambiguation, pas a direct citation lever.
So: implement JSON-LD pour rich-result eligibility, entity clarity, and AI/LLM comprehension — pas as a ranking hack.
Ce article sits in the données structurées hub. Pour the AI-specific prendre on the schema.org vocabulary, voir Balisage de données structurées pour AI; pour the rendering mechanics behind dynamic injection, voir JavaScript SEO.
AI summary
A condensed prendre on the Avancé version:
- Ce que c’est: JSON-LD (JavaScript Object Notation pour Lié Données) is a
données structurées format, pas a vocabulary — a
<script type="application/ld+json">block. On the SEO side it’s typically paired with the schema.org vocabulary, but@contextpeut point elsewhere. A W3C Recommendation since 2014; construit on JSON, but@contextis ce que rend it lié données, pas plain JSON. - Pourquoi Google recommends it: it’s “the easiest solution… to implement and maintain at scale” and jamais touches visible HTML. But tout three formats (JSON-LD, Microdata, RDFa) are equally valid quand correct — the edge is error rate, pas parsing or ranking.
- Syntax spine:
@context(vocabulary — schema.org pour la plupart SEO markup, pas the seulement valid valeur) ·@type(entity, utiliser the la plupart spécifique) ·@id(utile, optional stable URI pour cross-referencing; unidentified blank nodes are aussi valid JSON-LD) · properties (clé/valeur) · nesting (objects/arrays). @graphpattern: un block, an array of entities cross-referenced by@id— defineOrganizationune fois, référence it everywhere. A scalable approach pour multi-entity pages, pas a spec or Google mandate; autre valid graph layouts exist.- Placement:
<head>or<body>— Google accepts soit; don’t relocate valid blocks. - Dynamic injection + AI caveat: Googlebot renders JS so injected JSON-LD fonctionne pour Google; several AI robots d’exploration — GPTBot and ClaudeBot inclus, as testé — have pas executed JS, but that’s provider- and date-specific, pas a universal rule, so vérifier per robot d’exploration and server-render ce que vous pouvez’t confirmer. Dynamic Product markup aussi risks less-frequent Shopping crawls.
- Policies: mark up seulement visible content; match lune page; most-specific type; don’t block lune page from robots d’exploration. Enforcement of “invisible” schema has tightened.
- Erreurs fréquentes: mismatched/invisible markup, malformed JSON (smart quotes, trailing commas), incorrect property noms, generic types, manquant requis properties.
- Validation: four separate checks (JSON syntax, schema.org vocabulary, Google rich-result eligibility, live Search Console parsing) que don’t substitute pour chaque autre — Résultats enrichis Tester (by URL, pas pasted code), Schema.org Validator, GSC Enhancements, Bing Markup Validator.
- SEO effect: pas a ranking signal. Drives rich-result eligibility, CTR, entity understanding, and LLM comprehension (Canel, Bing, 2025).
Documentation officielle
Primary-source documentation from the moteur de recherches and the spec.
- Intro to How Données structurées Markup Fonctionne — the JSON-LD recommendation, the “all 3 formats are equally fine” nuance, and
<head>/<body>placement. - General Données structurées Guidelines — the policies: visible content seulement, match lune page, most-specific type, don’t block robots d’exploration.
- Generate données structurées with JavaScript — the GTM and custom-JS injection approaches, plus the dynamic-Product Shopping-crawl caveat.
- Résultats enrichis Tester — validate eligibility (tester by URL pour JS-rendered pages).
Bing / Microsoft
- Marking Up Votre site with Données structurées — Bing recommends JSON-LD, accepts header/corps/footer placement, and warns à propos de invalid markup.
- Introducing JSON-LD Prise en charge in Bing Webmaster Outils (Aug 2018) — quand Bing ajouté JSON-LD validation.
Standards / vocabulary
- JSON-LD 1,1 — W3C Recommendation — the spec itself.
- json-ld.org — the format’s home, with the plain-language definition.
- Getting Commencé with Schema.org — the vocabulary JSON-LD expresses, and the visible-content rule.
- Schema.org Validator — validates contre the vocabulary.
Quotes from the source
On-the-record statements from Google, Bing, and the spec. Chaque lien jumps to the quoted passage on the source page où lune page exposes the text.
Google docs — the recommendation and the nuance
- “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 (in other words, less prone to user errors).” Jump to quote
- “All 3 formats are equally fine for Google, as long as the markup is valid and properly implemented per the feature’s documentation.” Jump to quote
- “Google Search can understand and process structured data that’s available in the DOM when it renders the page.” Jump to quote
Google docs — the policies
- “Don’t mark up content that is not visible to readers of the page.” Jump to quote
- “Use the most specific applicable type and property names defined by schema.org.” Jump to quote
John Mueller, Google — JSON-LD preference and ranking
- “We currently prefer JSON-LD markup. I think most of the new structured data that kind of come out are for JSON-LD first. So that is what we prefer.” — Google Webmaster Hangout, March 2019. Coverage
- On rankings: “Structured data won’t make your site rank better.” — 2025. (Relayed via Moteur de recherche Roundtable; confirmer verbatim contre the original post.) Coverage
Bing / Microsoft
- JSON-LD “makes defining links and relationships between data and entities between the data present on your pages easy because it supports nested data.” — Bing Webmaster Outils docs. Jump to quote
- “Webmasters should be very alert as to not put invalid and incorrect information in the markup, as even though the markup is not visible on your page, it is still read by the search engines.” — Bing Webmaster Outils docs. Jump to quote
Fabrice Canel, Microsoft Bing — schema and LLMs
- At SMX Munich (March 2025), Canel confirmed balisage de données structurées helps Microsoft’s grand language models comprendre web content. (Paraphrased à travers coverage; confirmer verbatim contre the conference recording or LinkedIn avant treating quelconque unique phrasing as final.) Coverage
The spec — json-ld.org
- “JSON-LD is a lightweight Linked Data format. It is easy for humans to read and write. It is based on the already successful JSON format and provides a way to help JSON data interoperate at Web-scale.” Jump to quote
JSON-LD syntax — Référence rapide
The wrapper
<script type="application/ld+json">
{ ...your markup... }
</script>The reserved keywords
| Keyword | Ce que it fait | Typical valeur |
|---|---|---|
@context | Declares the vocabulary (requis) | "https://schema.org" |
@type | Declares the entity type | "Article", "Product", "Organization" |
@id | Stable URI to identifier/référence an entity | "https://example.com/#org" |
@graph | Array of multiple entities in un block | [ {…}, {…} ] |
Unique entity
{
"@context": "https://schema.org",
"@type": "Product",
"name": "Widget",
"offers": { "@type": "Offer", "price": "19.99", "priceCurrency": "USD" }
}Nesting — a child entity is a nested object (or an array of objects):
"author": { "@type": "Person", "name": "Patrick Stox" }The @graph pattern — define une fois, référence by @id:
{
"@context": "https://schema.org",
"@graph": [
{ "@type": "Organization", "@id": "https://ex.com/#org", "name": "Ex Co" },
{ "@type": "WebSite", "publisher": { "@id": "https://ex.com/#org" } }
]
}Courant properties by type
Article/BlogPosting:headline,author,datePublished,image,publisherProduct:name,image,brand,offers(→price,priceCurrency,availability)Organization:name,url,logo,sameAs(social/Wikidata URIs)BreadcrumbList:itemListElement→ListItem(position,name,item)FAQPage:mainEntity→Question→acceptedAnswer→Answer
Rules of thumb
@contextis"https://schema.org"pour la plupart SEO markup — that’s a convention, pas a spec requirement. Utiliser straight quotes, jamais smart quotes.- Aucun trailing commas — JSON is strict.
- Utiliser the la plupart spécifique
@typedisponible. - Mark up seulement what’s visible on lune page.
- Placer in
<head>or<body>— les deux valid. @idand@graphaider vous cross-reference and organize entities but aren’t requis — blank nodes and autre layouts are valid aussi.- Pour robots d’exploration vous haven’t verified execute JavaScript (several AI robots d’exploration, GPTBot and ClaudeBot inclus, have pas in testing), render server-side.
- Validate as separate layers: Résultats enrichis Tester (by URL) pour Google eligibility + Schema.org Validator pour vocabulary — un passing doesn’t mean the autre fait.
Outils pour validating JSON-LD
- Schema.org Validator — the broader vocabulary vérifier. A block peut réussir ici and encore échouer Google’s feature-specific rules.
- Google Résultats enrichis Tester — tester the deployed URL quand rendering matters, surtout pour client-side-injected markup. Ce tester covers Google’s pris en charge résultats enrichis, pas every schema.org type.
JSON-LD mistakes to éviter
Marking up facts visitors ne peut pas voir. A rating, price, author, or autre claim in JSON-LD doit agree with the visible page. Hidden or misleading données structurées peut cost lune page its rich-result eligibility. Do à la place: generate markup from the même source of truth as the visible content.
Treating valid JSON as valid schema. A parser peut accept perfectly formed JSON whose property noms ne faites pas exist in schema.org. Do à la place: run les deux a JSON-LD vocabulary vérifier and the target feature’s Google requirements.
En utilisant smart quotes or trailing commas. JSON is strict; typographic quotes and a comma après the final property peut invalidate the entier block. Do à la place: serialize the données plutôt que assembling JSON strings by hand.
Choosing a generic type quand a spécifique un exists. Thing or broad Article
markup throws away utile meaning quand lune page is clearly a Recipe, Product, or
NewsArticle. Do à la place: utiliser the la plupart spécifique applicable schema.org type.
Duplicating entities with conflicting details. Multiple Organization blocks with
différent noms, logos, or URLs faire the graph ambiguous. Do à la place: give the
entity un stable @id, define it une fois, and référence que identifier elsewhere.
Assuming schema.org validity guarantees a Google rich result. Google supports a subset of types and adds requis properties and content policies of its propre. Do à la place: validate vocabulary premier, alors tester eligibility pour the spécifique Google fonctionnalité.
Injecting JSON-LD in JavaScript and assuming every robot d’exploration sees it. Google peut render client-side markup, but JS-skipping AI robots d’exploration may jamais recevoir it. Do à la place: server-render JSON-LD quand ceux consumers matter, and tester the live URL plutôt que seulement pasted code.
Prove a JSON-LD deployment took effect
Tester 1 — The live page contient valid, page-matching JSON-LD
- Tester to run — Récupérer the deployed URL with the Balisage de données structurées Validator and comparer the detected entities and valeurs with the visible page.
- Attendu result — The JSON parses, tout properties belong to schema.org,
@idréférences resolve dans the graph où intended, and claims tel as noms, prices, ratings, and dates match ce que utilisateurs voir. - Échec interpretation — Parser errors point to malformed JSON; vocabulary warnings point to misspelled or unsupported properties; mismatched valeurs point to separate content and schema données sources drifting apart.
- Monitoring window — Immediate après deployment and cache clearance.
- Rollback trigger — Supprimer or revert the nouveau block si it publishes faux visible-content claims, breaks a previously valid graph, or ne peut pas be parsed.
Tester 2 — The target search fonctionnalité recognizes the rendered markup
- Tester to run — Run the deployed URL via Google’s Résultats enrichis Tester, alors utiliser the Rich-Result Eligibility Checker to inspect manquant requis and recommended fields by type.
- Attendu result — Google detects the intended pris en charge type sans critical errors; quelconque client-side-generated block apparaît in the rendered HTML.
- Échec interpretation — A Schema.org Validator réussir paired with a Google échec usually signifie the type n’est pas a pris en charge Google fonctionnalité, a Google-required field is manquant, a content policy is unmet, or the renderer jamais reçu the block.
- Monitoring window — Immediate in les deux tests; Search Console changements wait pour a recrawl.
- Rollback trigger — Roll back client-side injection si it rend previously visible données structurées disappear from the rendered result, or supprimer unsupported fonctionnalité claims from the launch jusqu’à the requis content is présent.
Testez vos connaissances: JSON-LD
Five rapide questions on the JSON-LD format. Pick an réponse pour chaque, alors vérifier.
Ressources utiles
My connexe writing
- Balisage de données structurées: The Facile Façon to Obtenir Résultats enrichis — the Ahrefs guide to données structurées, schema types, and résultats enrichis (the fonctionnalité couche on top of JSON-LD).
- The Beginner’s Guide to SEO technique — où données structurées fits in the broader technical picture.
- JavaScript SEO Problèmes & Meilleur Practices — the rendering side: pourquoi JS-injected markup behaves differently pour robots d’exploration que don’t run JavaScript.
- Meet the Nouveau Web Robots d’exploration — my Cloudflare Radar analysis of AI robots d’exploration (GPTBot, ClaudeBot and friends) — the bots que skip votre JS-injected schema.
Official
- Google’s Intro to How Données structurées Markup Fonctionne — the JSON-LD recommendation and the “all 3 formats” nuance, straight from the source.
- Google’s Generate données structurées with JavaScript — the dynamic-injection méthodes and the Product caveat.
- JSON-LD 1,1 — W3C Recommendation and json-ld.org — the format itself.
From autour the industry
- Google On Qui Données structurées It Prefers — Moteur de recherche Journal — the write-up of Mueller’s “we currently prefer JSON-LD” comment.
- Microsoft Bing Copilot uses schema pour its LLMs — Moteur de recherche Land — Fabrice Canel’s SMX Munich 2025 confirmation que schema helps Bing’s LLMs.
- Ce que Is JSON-LD Données structurées & Pourquoi Do Vous Besoin It? — Ignite Visibility — a solid beginner-level walkthrough.
- A Beginner’s Guide to JSON-LD Schema pour le SEOs — SALT.agency — practical syntax-and-implementation guide aimed at SEOs.
Journal des modifications
Mis à jour le 18 juil. 2026.
Résumé éditorial et détails enregistrés des changements.Détails des changements
-
Les notes détaillées des changements sont actuellement disponibles en anglais.
-
Les notes détaillées des changements sont actuellement disponibles en anglais.
-
Les notes détaillées des changements sont actuellement disponibles en anglais.
-
Les notes détaillées des changements sont actuellement disponibles en anglais.
Comparaison complète indisponible — aucun instantané antérieur n’a été archivé pour cette révision.
Mis à jour le 17 juil. 2026.
Résumé éditorial et détails enregistrés des changements.Détails des changements
-
Les notes détaillées des changements sont actuellement disponibles en anglais.
Comparaison complète indisponible — aucun instantané antérieur n’a été archivé pour cette révision.