JSON-LD (JSON for Linked Data, RFC 8259) is a way to embed semantic / structured data in JSON format. On the web, it's used to give search engines a machine-readable description of page content -- enabling rich-result features (knowledge panels, FAQ accordions, breadcrumb trails, recipe cards, product price + rating displays).
The on-page form looks like:
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Article",
"headline": "How to bake bread",
"image": ["https://example.com/bread.jpg"],
"datePublished": "2026-05-09",
"author": {"@type": "Person", "name": "Jane Doe"}
}
</script>
Two key tags:
@context-- the vocabulary URI. For the web, this is almost alwayshttps://schema.org(sometimeshttp://schema.orgfor legacy reasons; both work).@type-- the schema type. Common ones:WebSite,Organization,Article/NewsArticle,Product,BreadcrumbList,FAQPage,HowTo,Recipe,Event,LocalBusiness,Person.
Why JSON-LD vs other formats:
- Microdata (
itemtype="..."attributes inline) and RDFa are alternatives but require sprinkling attributes throughout HTML markup -- changes to schema force changes to the page template. - JSON-LD lives in a separate
<script>block, so the schema can be generated server-side or by a CMS plugin without touching the HTML body. Google explicitly prefers JSON-LD over microdata for this reason.
Common bugs:
- Missing or wrong
@context(must behttps://schema.org). - Missing
@type. - BreadcrumbList without numeric
positionon each ListItem (silently drops the rich result). - Multiple Organization blocks confusing the publisher identity.
- Type-specific required-property gaps (Article without
headline, Product withoutoffers, etc.) -- BeaverCheck's per-type validator catches these.
Validation: Google's Rich Results Test is the canonical tool. Schema.org also publishes Schema Markup Validator for type-level conformance.