Structured Data & Schema

Structured data is machine-readable markup you add to a page to explicitly tell search engines what the content means — that this number is a price, this is a product rating, this is an event date. Without it, search engines must infer meaning from raw text, which they do imperfectly. With it, you hand them the facts directly, which can earn rich results: the enhanced search listings with star ratings, prices, FAQs, recipes, and event details that stand out and drive clicks.

The dominant approach is schema.org vocabulary expressed as JSON-LD — a block of JSON embedded in the page that describes the content as structured entities. It's the Google-recommended format precisely because it's decoupled from the visible HTML, making it clean to generate and maintain. For engineers, structured data is one of the more tractable, high-leverage SEO tasks: it's well-specified, testable, and directly tied to visible search enhancements.

TL;DR

Quick Example

JSON-LD describes the page's content as a structured entity:

How It Works

  1. Schema.org provides a shared vocabulary of types (Product, Article, Event, Recipe, FAQPage) and properties.
  2. You mark up your content using that vocabulary — usually as JSON-LD in a <script> tag.
  3. Search engines parse it to understand the page's entities precisely.
  4. Eligible pages can show rich results — enhanced listings with the structured details surfaced.

Formats

Use JSON-LD for new work — it keeps the structured data separate from your markup, so it's cleaner to produce (often from your data layer) and maintain.

Common Schema Types

Validation

⚠️ Invalid or incomplete structured data earns nothing — and markup that doesn't match the visible page (e.g. ratings not shown to users) can incur penalties. Always validate.

Best Practices

Common Mistakes

Marking up content that isn't on the page

Shipping invalid markup and assuming it works

FAQ

What is structured data and why does it help SEO?

Structured data is standardized, machine-readable markup (typically schema.org JSON-LD) that explicitly describes what a page's content means — labeling prices, ratings, authors, dates, and so on. It helps SEO in two ways: it removes ambiguity, helping search engines understand and correctly index your content, and it makes pages eligible for rich results — enhanced search listings with stars, prices, FAQs, and other details that stand out and typically earn more clicks. It doesn't directly boost rankings as a factor, but the improved understanding and the click-through gains from rich results make it valuable.

Which format should I use — JSON-LD, Microdata, or RDFa?

JSON-LD, for almost all new work. Google explicitly recommends it, and its key advantage is that it lives in a separate <script> block decoupled from your visible HTML — so you can generate it cleanly from your data/templates and maintain it without touching the page markup. Microdata and RDFa embed structured data as attributes inline in the HTML, which mixes concerns and is harder to maintain. They still work and you'll encounter them in older code, but for new implementations, JSON-LD is the clear choice.

What are rich results?

Rich results (formerly "rich snippets") are enhanced search listings that display extra information pulled from your structured data — star ratings and prices on products, expandable Q&As from FAQ markup, recipe cook times and images, event dates, and more. They make your listing visually richer and more prominent than a plain blue link, which tends to improve click-through rate. Eligibility depends on having valid structured data of a supported type with the required properties, and Google ultimately decides whether to show them. Use the Rich Results Test to check eligibility.

Why isn't my structured data showing rich results?

Common reasons: the markup is invalid or missing a property Google requires for that rich-result type (validate with the Rich Results Test); the type isn't eligible for rich results; the structured data doesn't match the visible page content (a guidelines violation that can suppress or penalize); the page is new and not yet recrawled; or Google simply chose not to show it (eligibility isn't a guarantee). Check Search Console's structured-data and rich-result reports for specific errors, fix them, and request reindexing. Rich results are earned and not guaranteed even with perfect markup.

Related Topics

References