JSON-LD Explained

You open a page's source code and spot a block like <script type="application/ld+json"> sitting in the head, full of curly braces and an @context field you've never seen before. It looks like something only a developer could have written, so you close the tab and move on.

That reaction skips past something simpler than it looks. JSON-LD isn't a programming language and it doesn't run any logic. It's a plain, structured way of writing facts about a page — its title, its author, its price — so a search engine can read them without guessing.

Quick Answer

JSON-LD (JavaScript Object Notation for Linked Data) is a format for writing structured data as a self-contained block of key-value pairs, placed inside a script tag on a page. It describes what the page is about — its type, title, author, price, or FAQs — in a way search engines can parse directly, without needing to touch the visible HTML at all.

What is JSON-LD?

JSON-LD stands for JavaScript Object Notation for Linked Data. It borrows JSON's simple syntax of curly braces and key-value pairs, and adds a few special properties that let it describe entities from a shared vocabulary, most commonly schema.org.

Strip away the unfamiliar punctuation and a JSON-LD block reads like a short, structured fact sheet about the page it sits on — nothing more exotic than that.

Why JSON-LD matters

Search engines can often infer what a page is about from its visible text, but inference is guesswork. JSON-LD replaces the guessing with a direct statement:

📊 Quick stat JSON-LD is the format Google's own documentation and testing tools are built around, which is why it's become the de facto standard for structured data, even though schema.org itself supports two other formats.

Step-by-step: reading a JSON-LD block

  1. Find the script tag. Look for <script type="application/ld+json"> in a page's source code, usually in the head.
  2. Check the @context. This first field confirms which vocabulary the rest of the block is written against, almost always schema.org.
  3. Identify the @type. This is the single most important field — it names the kind of thing being described, like Article, Product, or Organization.
  4. Read the properties as plain facts. Each remaining key is a property of that type — a headline, an author, a price — matched to a value.
  5. Look for nested objects. A property's value can itself be a small JSON-LD object, like an author with its own @type and name, describing a related entity.
  6. Confirm it matches the visible page. Every fact in the block should correspond to something a visitor can actually see or verify on the page.
  7. Validate it. Run the page through Google's Rich Results Test to confirm the block parses correctly and check which rich result it qualifies for.
Try the Rebrixe Schema Generator — free Pick a type, fill in a form, get ready-to-paste JSON-LD. No coding required.
Generate Schema Markup →

Common mistakes with JSON-LD

1. Mismatched or conflicting @type values

Using more than one @type in the same block without understanding how they combine, or picking a type that doesn't match the page's actual content, produces markup that's technically valid but semantically wrong.

2. Missing required properties

Each schema.org type has properties Google treats as required for a given rich result. A block missing one of these, like an image on a Recipe type, may fail validation or simply not qualify for the enhanced listing.

3. Data that isn't visible on the page

Filling in a rating, price, or availability value that a visitor can't actually see or verify on the page violates structured data guidelines, regardless of whether the JSON-LD syntax itself is correct.

4. Multiple conflicting blocks on one page

Adding several JSON-LD scripts that describe the same entity differently, often from a plugin and a manual addition stacking on top of each other, can confuse parsers about which version to trust.

💡 Pro tip Before publishing, read your JSON-LD block out loud as plain sentences — "this page is an Article, its headline is X, its author is Y." If a sentence doesn't sound true, the field is wrong.

Real-world examples

How the same JSON-LD structure adapts to describe very different kinds of pages:

Blog post
Article type
@type: "Article"
Describes headline, author, publish date, and publisher logo for a written piece.
Online store
Product type
@type: "Product"
Describes name, image, price, and availability for an item listed on the page.
Company homepage
Organization type
@type: "Organization"
Describes the business name, logo, and official social profiles in one nested block.
Support page
FAQPage type
@type: "FAQPage"
Describes a list of Question and Answer pairs pulled straight from the page's own FAQ section.

In every case, the shape of the block stays the same — @context, @type, then a set of properties — only the values and the type name change.

JSON-LD vs. other structured data formats

JSON-LD isn't the only way to write structured data. Here's how it compares to the two older formats schema.org also supports.

Format Where it lives Ease of maintenance Best for
JSON-LD Separate script block High, decoupled from HTML Nearly all modern sites, Google's preferred format
Microdata Inline within visible tags Low, breaks with layout changes Legacy sites already using it extensively
RDFa Inline via HTML attributes Low, verbose to maintain Sites with existing RDFa-based content pipelines
Plain meta tags Head section High but limited scope Basic social sharing, not full schema coverage

Generate valid JSON-LD right now — free

Now that the format makes sense, you don't need to write it by hand. The Rebrixe Schema Generator builds clean, validated JSON-LD for the most common types — Article, Product, FAQPage, Recipe, and more. No account, no watermark, just a ready-to-paste snippet.

Free Schema Markup Generator Pick a type, fill in the fields, copy the JSON-LD.
Open Schema Generator →

Frequently asked questions

JSON-LD stands for JavaScript Object Notation for Linked Data. It's a lightweight way of writing structured data as a block of key-value pairs, wrapped in a script tag, that describes what a page is about in a format search engines can read directly.
Not quite. Schema.org is the vocabulary, the shared list of types and properties like Article or price. JSON-LD is one of the formats used to write that vocabulary into a page. Microdata and RDFa are the other two, less commonly used formats.
No. Despite the name, JSON-LD isn't a script that runs any logic. It's a static block of data sitting inside a script tag, formatted like a JavaScript object, but no JavaScript knowledge is required to read or write it.
Anywhere in the HTML document, most commonly inside the head section, wrapped in a script tag with type="application/ld+json". It doesn't need to sit near the content it describes, since it isn't rendered visually.
Google has stated a preference for JSON-LD because it's kept separate from the visible HTML, which makes it far less likely to break when a page's design or layout changes, unlike microdata, which is woven directly into visible tags.
JSON-LD itself isn't a direct ranking factor. What it does is make a page eligible for rich results, like star ratings or FAQ dropdowns, which can improve click-through rate, an indirect but real benefit for visibility.
Paste the page URL or the raw code into Google's Rich Results Test or the Schema Markup Validator. Both tools parse the JSON-LD the way a search engine would and flag any missing fields or syntax problems.

Generate your schema markup in seconds

The Rebrixe Schema Generator builds clean, valid JSON-LD for the most common schema types — no account, no watermark, and nothing to code, just a ready-to-paste code block.

Launch the Schema Generator →
← Back to blogs