Structured data (JSON-LD)
Machine-readable annotations that describe the content of a page using the schema.org vocabulary. JSON-LD is the format search engines and AI agents expect.
What it is
Structured data is a set of machine-readable statements that describe what a page is about, using the shared vocabulary at schema.org. The recommended serialisation is JSON-LD: a <script type="application/ld+json"> block inside <head> (or, less commonly, <body>).
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Article",
"headline": "What is HSTS?",
"datePublished": "2026-05-29",
"author": {
"@type": "Person",
"name": "Jane Doe"
},
"publisher": {
"@type": "Organization",
"name": "Example",
"url": "https://example.com"
}
}
</script>
Microdata and RDFa are also accepted, but JSON-LD is the de facto standard because it sits separate from the visible markup.
Why it matters
Two audiences read it heavily:
- Search engines use structured data to power rich results (article cards, breadcrumbs, FAQ accordions, product carousels, knowledge-panel facts). Without it, you get a plain blue link.
- AI agents and answer engines rely on it as the ground truth for facts they may quote. A
Personschema with asameAslinking to your verified profiles is the cleanest way to assert identity.
It is also the most stable contract between a publisher and the rest of the web. The HTML can change; the JSON-LD describes meaning.
How to implement
Stick to a small set of well-supported types:
WebSite— site-wide, on the home page. Includeurlandname, andpotentialActionfor sitelinks search if appropriate.OrganizationorPerson— for the publisher and authors. IncludesameAsarrays pointing at verified profiles.BreadcrumbList— on every page that has a breadcrumb trail.ArticleorBlogPosting— for articles, withheadline,datePublished,dateModified,author,image.Product,Offer,AggregateRating— for e-commerce, where eligibility is strict.FAQPage— only when the page genuinely has a Q-and-A list visible to users. Google has restricted FAQ rich results to authoritative publishers; do not stuff fake FAQs.
Rules:
- Mirror what is visible on the page. Do not declare facts in JSON-LD that the page does not state. Google calls this “out of sync” data and ignores or penalises it.
- One graph per page is cleaner than many fragments. Use
@graphto nest related entities and@idURIs to cross-reference them. - Use absolute URLs in
@id,url,image, andsameAs. - Keep dates in ISO 8601.
- Validate. Schema.org evolves; what is valid one year may be deprecated the next.
Common mistakes
- Fabricating
aggregateRatingorReviewto win stars. Google detects this and removes the rich result, sometimes the whole site’s eligibility. - Marking up navigation, footers, or sidebars as if they were the main content.
- Forgetting to update structured data when the page content changes.
- Multiple disagreeing
@typedeclarations across plugins or templates on the same page.
Verification
- Use the Schema.org validator for spec conformance.
- Use Google’s Rich Results Test for eligibility.
- Check Search Console’s “Enhancements” reports after deployment.
Related topics
Sources & further reading
- Schema.org — schema.org
- Introduction to structured data markup in Google Search — Google Search Central
- JSON-LD 1.1 Specification — W3C
- Yoast — What is structured data? — Yoast