Skip to content
Published Authored byBilly Reiner

Glossary · Defined term

JSON-LD

JSON-LD (JavaScript Object Notation for Linked Data) is the JSON-based syntax Google recommends for emitting Schema.org structured data on a page1. It's written inside a <script type="application/ld+json"> tag in the HTML, usually in the document <head> or near the bottom of the <body>.

On Shopify, themes auto-emit Product JSON-LD for every product page so rich snippets work without merchant intervention2. Custom JSON-LD (Organization, FAQPage, BreadcrumbList, Person, Article) is added by editing theme.liquid — the canonical Shopify Liquid files where JSON-LD emission lives are theme.liquid, main-product.liquid, and main-list-collections.liquid3.

Definition

JSON-LD is the JSON-based syntax Google recommends for emitting Schema.org structured data on a page, written inside a <script type="application/ld+json"> tag in the HTML. On Shopify, themes auto-emit Product JSON-LD; custom JSON-LD is added by editing theme.liquid.

JSON-LD is a W3C standard syntax for expressing linked data in JSON. In SEO and AI-search contexts, it's the preferred way to emit Schema.org vocabulary. Google's structured-data guidance is explicit: "Google recommends using JSON-LD for structured data whenever possible"1. The two alternative syntaxes — Microdata (inline HTML attributes) and RDFa (XHTML-style attributes) — are still valid but discouraged.

What JSON-LD looks like

A JSON-LD block lives inside a script tag. The minimum required keys are @context (always 'https://schema.org' for SEO use) and @type (the Schema.org type name). Everything else is properties of that type. Multiple types can be combined into one @graph block.

A minimal Product JSON-LD example:

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "Product",
  "name": "Acme Hiking Boot",
  "image": "https://example.com/boot.jpg",
  "description": "Waterproof hiking boot with Vibram sole.",
  "gtin": "0123456789012",
  "brand": { "@type": "Brand", "name": "Acme" },
  "offers": {
    "@type": "Offer",
    "price": "189.00",
    "priceCurrency": "USD",
    "availability": "https://schema.org/InStock"
  }
}
</script>

The script tag's type="application/ld+json" attribute is non-negotiable — without it, browsers and crawlers don't recognise the content as JSON-LD. Multiple JSON-LD blocks can coexist on the same page; the engine reads all of them.

Where the syntax comes from

JSON-LD was standardised by the W3C in 2014 as a JSON-based serialisation of RDF (the W3C's linked-data model). Google adopted it as the recommended structured-data syntax around the same time. The Schema.org vocabulary — separately governed by a Google-Microsoft-Yahoo-Yandex consortium since 2011 — became the dominant content schema used inside JSON-LD blocks.

The historical sequence matters because JSON-LD is not Schema.org. JSON-LD is the syntax (how the data is formatted); Schema.org is the vocabulary (what types and properties exist). In practice they're used together so universally that the terms blur in casual usage. The right mental model: JSON-LD is the bottle; Schema.org is what's inside.

Adoption status in 2026

Universal across major CMS and ecommerce platforms — Shopify, WordPress with Yoast or Rank Math, Webflow, BigCommerce, WooCommerce. All major theme frameworks emit JSON-LD by default; merchants rarely write it by hand for the core types (Product, Article, BreadcrumbList). Custom JSON-LD for niche types (FAQPage, HowTo, Service, Person) is still merchant-side work.

AI engines parse JSON-LD as a primary structured-data source. Claude, ChatGPT, Perplexity, Gemini, and Google AI Overviews all extract entity data from JSON-LD when answering shopping or factual queries. A page with clean JSON-LD is materially more likely to be cited correctly than a page that relies on prose-only entity signals.

JSON-LD on Shopify specifically

Modern Shopify themes auto-emit Product JSON-LD on every product page. The emitted JSON-LD includes name, description, image, price, availability, and (when the Barcode field is populated) GTIN. Themes also typically emit BreadcrumbList. What themes don't auto-emit by default: Organization, FAQPage, Article on blog posts, and any of the niche types — those require custom JSON-LD via theme.liquid.

Custom JSON-LD install pattern on Shopify: open the theme code editor, locate theme.liquid, scroll to the <head> section, paste the JSON-LD script block, save. The block can reference Liquid variables ({{ shop.name }}, {{ canonical_url }}) so the structured data adapts per page. The most commonly added blocks: Organization (sitewide), FAQPage (on FAQ pages where Q&A is dominant), Article (on blog posts), and Person (for the founder page).

The full install lives in JSON-LD via theme.liquid. If you'd rather we add the custom JSON-LD blocks for you, ShopifyRanked does it in 7 days for $499.

JSON-LD is the syntax; the related terms are the vocabulary and the install surface.