JSON-LD

On this page 7

JSON-LD, short for JavaScript Object Notation for Linked Data, is a W3C standard format for expressing linked data in JSON, and in SEO it is the preferred way to add structured data to a web page. It places a machine-readable description of the page’s entities, such as an article, a product, an organization or a breadcrumb trail, inside a dedicated script element that is separate from the visible HTML.

Search engines read JSON-LD to understand what a page is about and how its entities relate, to qualify pages for rich results, and to feed knowledge graphs. Google, Bing and other engines accept several structured data formats, but JSON-LD is the format Google recommends, mainly because it is easier to generate, validate and maintain.

How JSON-LD encodes structured data

A JSON-LD block is a JSON object placed in a script element with the type application/ld+json. Browsers do not display it; parsers read it as data. The object uses a small set of reserved keywords, each starting with an at sign, that connect plain JSON to a shared vocabulary, which in SEO is almost always Schema.org.

The @context keyword declares the vocabulary, @type names the entity class, and ordinary properties such as headline, author or offers describe the entity. The @id keyword assigns a stable identifier so that separate blocks, or separate pages, can refer to the same entity without repeating it.

KeywordPurposeTypical value
@contextDeclares the vocabulary in useThe Schema.org namespace
@typeNames the entity classArticle, Product, Organization
@idGives the entity a unique identifierPage URL plus a fragment such as #organization
@graphHolds several related entities in one blockArray of entity objects
Nested objectDescribes a related entity inlineAuthor as a Person object
Core JSON-LD keywords used in structured data

Because the data is a graph rather than a flat list, a well-built page can describe a WebPage that is part of a WebSite, published by an Organization, with an Article whose author is a Person, all linked through @id references.

JSON-LD compared with Microdata and RDFa

JSON-LD is one of three syntaxes that can carry Schema.org vocabulary; the others are Microdata and RDFa. All three express the same meaning, but they differ in where the markup lives and how tightly it is bound to the visible HTML.

SyntaxWhere markup livesMain advantageMain drawback
JSON-LDSeparate script blockDecoupled from layout, easy to generateCan drift from visible content
MicrodataAttributes on HTML elementsTied directly to visible textFragile when templates change
RDFaAttributes on HTML elementsRich linked data featuresVerbose and harder to maintain
Structured data syntaxes compared

The decoupling that makes JSON-LD convenient is also its main risk: since the data is not attached to visible elements, it is easy to publish values that do not match the page, such as a price or rating that users cannot see. Search engine guidelines treat such mismatches as misleading markup.

JSON-LD within the structured data toolkit

JSON-LD is the container, while Schema.org supplies the vocabulary and rich results are one possible outcome. Keeping these layers apart avoids a common confusion in structured data work, where a valid JSON-LD block is mistaken for a guarantee of enhanced search appearance.

TermRoleRelation to JSON-LD
Schema.orgShared vocabulary of types and propertiesSupplies the terms used inside JSON-LD
Rich resultsEnhanced search result displaysMay be granted when eligible JSON-LD is present
Article schemaType for news and blog contentCommonly expressed as a JSON-LD block
BreadcrumbListType for page hierarchy trailsEncoded as an ordered list in JSON-LD
How JSON-LD relates to neighboring structured data terms

Eligibility depends on each feature’s required and recommended properties, on content policies and on the engine’s own judgment. Valid markup makes a page eligible, not entitled, to an enhanced display.

Implementing JSON-LD correctly

Robust implementations generate JSON-LD from the same data source that renders the visible page, typically the content management system or product database. This keeps titles, prices, dates and availability synchronized automatically instead of relying on manual copies.

  • Place the script in the head or body; both locations are read by search engines.
  • Prefer server-rendered JSON-LD; markup injected by client scripts is processed later and ignored by some parsers.
  • Use absolute URLs and ISO 8601 dates with time zones, for example 2026-11-09T09:30:00+01:00.
  • Link entities with consistent @id values across the whole site.
  • Validate with the Rich Results Test and the Schema Markup Validator before release.

The table below lists frequent implementation errors, how they show up and how to correct them.

ErrorSymptomFix
Invalid JSON syntaxWhole block ignoredValidate output, escape quotes correctly
Missing required propertyFeature marked as not eligibleAdd the property from page data
Values absent from visible pageManual action risk for spammy markupMark up only content users can see
Duplicate blocks from pluginsConflicting entities and typesKeep one generator per entity
Wrong type for the contentMarkup ignored or flaggedChoose the most specific fitting type
Frequent JSON-LD errors and fixes

Limits and misconceptions about JSON-LD

JSON-LD is not a direct ranking factor in the sense of a boost for having markup. Its value lies in clearer entity understanding, eligibility for rich results and better extraction by search and AI systems, which can improve visibility and click-through indirectly.

Rich result support also changes over time: search engines have retired or restricted several features, such as FAQ and HowTo displays, for most sites. Markup for a retired feature is harmless but no longer produces the enhanced display, so implementation priorities should follow current documentation rather than older checklists.

In plain words

JSON-LD is a hidden label attached to a web page. It describes the page in a format computers read easily. A visitor sees a recipe with a photo and instructions. The label tells the search engine, in neat fields, that this is a recipe, how long it takes and who wrote it.

The label sits apart from the visible page, so it is easy to add and update. One rule matters most. The label must describe what is really on the page, or search engines stop trusting it.

A real-world example

A regional news publisher wants its stories to show richer search listings and appear correctly in news features. Its existing templates contain no structured data, and article dates are shown only as plain text such as yesterday or 3 hours ago.

The developers add a server-rendered JSON-LD graph to every article template: a NewsArticle with headline, image, datePublished and dateModified in ISO 8601 format, an author Person linked to an author page, the publisher Organization with a logo, and a BreadcrumbList for the section path. All values come from the content management system. After validation and a recrawl, the articles show correct publication dates and breadcrumb paths in results, and the error report for structured data stays at zero across about 40,000 articles.