SEO Guide

Structured Data, JSON-LD, Schema & Rich Results: Differences & Implementation

Are structured data and JSON-LD the same thing? What exactly is a schema? We clarify the four related concepts, then walk through JSON-LD implementation with practical examples.

12 min read2026-04-02

Structured data is a general term for markup that describes page content in a machine-readable format. Schema.org defines the vocabulary (what to communicate), JSON-LD is the syntax (how to write it), and rich results are the outcome (how Google displays it). These four concepts operate at different layers — they are not interchangeable.

Understanding the Four Concepts

"Structured data," "JSON-LD," "Schema.org," and "rich results" are often confused, but each plays a distinct role. Understanding their relationship before implementation makes the what and how of writing markup much clearer.

Structured Data = The Goal

The broadest concept. It refers to any data that describes page content in a machine-readable format. JSON-LD, Microdata, and RDFa are all forms of structured data.

Schema.org = The Vocabulary

A standardized vocabulary co-developed by Google, Microsoft, Yahoo!, and Yandex. It defines types (Article, FAQPage, Product, etc.) and their properties (headline, author, price). Think of it as the dictionary for structured data.

JSON-LD = The Syntax

The format used to write Schema.org vocabulary into HTML. While Microdata and RDFa also exist, Google officially recommends JSON-LD (per Google Search Central). Its main advantage is that it lives in a standalone <script> tag without touching your HTML content.

Rich Results = The Outcome

The enhanced UI that Google displays in search results after reading your structured data. Star ratings, breadcrumbs, and product prices are all rich results (FAQ accordions ended on May 7, 2026). Even with correct implementation, Google may choose not to display them.

How the four concepts relate

Schema.org
(vocabulary)
+
JSON-LD
(syntax)
↓
Structured Data (implementation)
↓ if Google adopts it
Rich Results (visible outcome)

Why Structured Data Matters in 2026

CTR Boost from Rich Results

In case studies Google cites, Rotten Tomatoes saw a 25% higher click-through rate on pages with structured data, and Nestlé saw an 82% higher click-through rate on pages that show as rich results. Which rich results appear is Google's call, and the set changes over time (FAQ rich results stopped showing in Google on May 7, 2026).

How It Relates to AI Search (AIO/GEO)

Google says you don't need to add any special schema.org structured data to appear in AI Overviews or AI Mode. Among its SEO best practices, it says to make sure structured data matches the visible text on the page. Structured data is not a ticket into AI search — it is a way to describe your page to machines without ambiguity.

Seer Interactive found that 55% of content cited in AI Overviews comes from the top 30% of a page. That is about where text sits, not about structured data. Answer early in the body, then describe the same content consistently in your structured data.

Sources: Google Search Central "Introduction to structured data markup" and "AI features and your website", Seer Interactive "AI Overview Citation Analysis" (checked October 12, 2026)

+25%

CTR on pages with structured data (Rotten Tomatoes, per Google)

+82%

CTR on pages shown as rich results (Nestlé, per Google)

55%

AIO citations from top 30% of page

Key Schema.org Types

Schema.org defines hundreds of types, but the following eight are most impactful for SEO and AIO. Each enables different rich result features.

TypeUse CaseRich Result Effect
FAQPageFAQ pagesNo longer shown in Google since May 7, 2026
ArticleBlog posts & newsAuthor, date, and thumbnail shown
ProductProduct pagesPrice, rating, and availability shown
BreadcrumbListBreadcrumb navigationPath shown instead of raw URL
OrganizationCompany/organization infoInfo appears in Knowledge Panel
LocalBusinessLocal shops & businessesShown in Maps & local search
HowToStep-by-step guidesNo longer shown in Google since 2023
WebSiteSite-wide informationUsed for the site name in search results

How to Write JSON-LD (with Examples)

JSON-LD is written as a JSON object inside a <script type="application/ld+json"> tag. Declare the schema.org vocabulary with @context and specify the type with @type. Here are three common implementation examples.

FAQPage

Used for FAQ pages. The Q&A content must match what is actually visible on the page.

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "FAQPage",
  "mainEntity": [
    {
      "@type": "Question",
      "name": "構造化データとは何ですか?",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "Webページの内容を検索エンジンが理解しやすい形式で記述するマークアップです。"
      }
    }
  ]
}
</script>

Article

Used for blog posts and news articles. The author and publisher fields affect credibility display in search results and E-E-A-T evaluation.

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "Article",
  "headline": "ページのタイトル",
  "author": {
    "@type": "Person",
    "name": "著者名",
    "url": "https://example.com/about"
  },
  "publisher": {
    "@type": "Organization",
    "name": "サイト名",
    "logo": {
      "@type": "ImageObject",
      "url": "https://example.com/logo.png"
    }
  },
  "datePublished": "2026-05-12",
  "dateModified": "2026-05-12",
  "image": "https://example.com/article-image.jpg"
}
</script>

LocalBusiness

Used for businesses with physical locations. Directly affects Google Maps and local search display, so ensure address, phone, and hours are accurate.

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "LocalBusiness",
  "name": "カフェ サンプル 渋谷店",
  "address": {
    "@type": "PostalAddress",
    "streetAddress": "神宮前1-2-3",
    "addressLocality": "渋谷区",
    "addressRegion": "東京都",
    "postalCode": "150-0001",
    "addressCountry": "JP"
  },
  "telephone": "+81-3-1234-5678",
  "openingHoursSpecification": {
    "@type": "OpeningHoursSpecification",
    "dayOfWeek": ["Monday","Tuesday","Wednesday","Thursday","Friday"],
    "opens": "09:00",
    "closes": "18:00"
  }
}
</script>

All JSON-LD can be placed in <head> or <body>. Google accepts both (per Google Search Central), but <head> placement is common for easier maintenance.

How to Validate Structured Data

Check your structured data at three stages: before publishing, right after, and over time. Google advises testing with the Rich Results Test during development and checking the rich result status reports after deployment.

StageToolWhat it tells you
Before publishingRich Results Test (Google)For types eligible for Google rich results, flags missing required fields and syntax errors. Test with pasted code or a URL
Before publishingSchema Markup Validator (schema.org)Validates against the schema.org vocabulary, including types Google does not use for rich results
Right afterURL Inspection in Search ConsoleConfirms Google actually detected the structured data on that page
Over timeRich result reports in Search ConsoleTracks how many pages are valid or have errors across the site, and why

Keep in mind that "valid" in any of these tools does not guarantee a rich result. Google notes that structured data that doesn't follow its guidelines may not be shown as a rich result, and retired types such as FAQ won't show however correctly they are written.

To see which types a page has and whether required fields are present — for your pages or a competitor's — enter a URL into the Structured Data Check.

Common Mistakes to Avoid

Missing @context

Without "@context": "https://schema.org" at the top of your JSON-LD, Google cannot identify the vocabulary namespace and will return an error. Include it in every JSON-LD block.

Structured data doesn't match page content

If information in your structured data (price, rating, FAQ text) is not actually visible on the page, it violates Google's guidelines and risks a Manual Action penalty.

Missing required properties

Each schema.org type has required properties. For example, Product requires "name". Use Google's Rich Results Test before publishing to catch missing properties.

JSON syntax errors

Missing commas, unclosed brackets, or mismatched quotes will invalidate your entire JSON-LD block. Always validate with a JSON linter or the Rich Results Test.

Duplicate types on the same page

Multiple JSON-LD blocks with the same @type can confuse Google about which to reference. The general rule is one type per page (with exceptions like BreadcrumbList).

The mismatch between structured data and page content also happens with video markup. If you remove a video from the page but leave its VideoObject behind, URL Inspection may still report it as valid while Search Console's Video indexing report shows it as not indexed. We walk through a case from our own site and the conditions for video indexing in Why AI-Generated Videos Don't Show Up in Search.

Check Your Site's Structured Data

Enter a URL to instantly diagnose your structured data — missing types, errors, and more. We also auto-generate the JSON-LD code you need to fix issues.

今井政和

Written by

今井政和

SEO Director / Frontend Developer

SEO Director with 20+ years of web industry experience. Creator of Direbase and the official WordPress plugin "ORECTIC SEO CHECK." Author of a book on web strategy inspired by Edo-era merchant principles.

@imai_director

FAQ

What is structured data?▾
Structured data is an umbrella term for markup that helps search engines understand web page content. It uses vocabulary defined by Schema.org and can be written in JSON-LD, Microdata, or RDFa. "Structured data" is the broad concept; JSON-LD and Schema.org are specific components within it.
What is the difference between structured data and JSON-LD?▾
Structured data is the concept of describing web page information in a machine-readable format. JSON-LD is one specific format (syntax) for writing that structured data. Microdata and RDFa are alternatives, but Google recommends JSON-LD. In short, JSON-LD is a type of structured data format.
Where should I place JSON-LD in my HTML?▾
Google accepts JSON-LD in both <head> and <body>. Placing it in <head> is common in Next.js and WordPress projects for easier maintenance. Wrap it in a <script type="application/ld+json"> tag. You can include multiple JSON-LD blocks on a single page.
Does structured data improve SEO rankings?▾
Structured data is not a direct ranking factor. Its effect comes through rich results and click-through rate — in a case Google cites, Rotten Tomatoes saw a 25% higher CTR on pages with structured data. Google decides which rich results appear, and some types, like FAQ, have been retired.
Do I need structured data to appear in AI search (AIO/GEO)?▾
It isn't required. Google says you don't need special schema.org structured data to appear in AI Overviews or AI Mode. What matters in AI search is the body text — Seer Interactive found 55% of content cited in AI Overviews comes from the top 30% of a page. Use structured data to describe your page accurately, matching the visible text.