---
title: "Structured Data and Schema Markup"
description: "What structured data and schema markup are, which JSON-LD types earn rich results, and how the @id graph pattern reinforces entity recognition."
tldr: "Structured data and schema markup are machine-readable metadata using the schema.org vocabulary, most commonly delivered as JSON-LD. Correctly implemented, it can enable rich results such as star ratings, breadcrumbs and products. FAQPage no longer produces rich results in Google Search as of May 2026; HowTo rich results were deprecated in September 2023. Microsoft says structured content, schema-marked pages included, helps its AI answers interpret and summarise a page; Google says its AI features do not require it; the one controlled study found no citation benefit. Google will not show rich results if the markup does not accurately reflect visible page content."
publishDate: 2026-04-25
updatedDate: 2026-09-28
author: "Liam Hayward"
---
Structured data is code added to a page that states what its content means, not just how it looks: that the page is a product with a price, a recipe with a cooking time, or an article by a named author. Schema markup is structured data written in the [schema.org](https://schema.org/) vocabulary, which Google, Microsoft, Yahoo and Yandex founded,[^9] and it is most often delivered as JSON-LD. Its established use in search is rich results: Google can show star ratings, breadcrumbs or product details for markup that matches the visible page.[^8][^7] Its value for AI answers is unsettled, with Microsoft and Google saying different things, as covered under [Schema and AI search](#schema-and-ai-search).

## What is the difference between structured data, schema, and semantic HTML?

These three terms get used interchangeably, but they refer to different things.

**Structured data** is the concept: organising information so machines can interpret it reliably. It is not a format or a tool: it is the goal.

**Schema markup** is one way to implement it: a standardised vocabulary from schema.org, delivered as JSON-LD, that explicitly labels what the content on a page is. That is what this article covers.

**[Semantic HTML](/technical-seo/semantic-html/)** is another way to implement it: native HTML elements (`<article>`, `<section>`, `<h2>`) that communicate meaning and structure through the document itself, without a separate vocabulary layer.

Both schema and semantic HTML serve machine interpretation, but they operate differently. Schema labels entities and properties explicitly. Semantic HTML defines the document structure, and Google's stated reason for caring about it is that it helps "other types of users, such as screen readers, parse and navigate your web page"; the same guide says there is no need to chunk content for its AI systems.[^10] Neither replaces the other.

## What does structured data do?

The HTML on a page describes how content should be displayed. Structured data describes what the content actually means. A `<p>` tag containing "Dr. Sarah Wilson" tells a browser to render the text in paragraph style; a Person schema with name "Dr. Sarah Wilson" and a knowsAbout array tells search engines that this string refers to a specific real person with declared expertise.

Schema also resolves ambiguity. A page about "Mercury" can declare itself as being about the planet (Place), the chemical element (ChemicalSubstance), or the band (MusicGroup), removing ambiguity for parsers before they have to infer it from surrounding text.

The benefits cascade through several systems:

- **Google Search** uses structured data to power rich results (star ratings, recipe cards, product information, event details, breadcrumbs).[^8]
- **AI systems** are a split picture, covered under [Schema and AI search](#schema-and-ai-search) below: Microsoft says structured content, with schema-marked pages as its example, helps its AI answers interpret and summarise a page,[^1] Google says its AI features do not require it,[^10] and Perplexity documents nothing either way.
- **Knowledge graphs** use it to construct entity relationships across the web.
- **Voice assistants** use it for spoken responses.

## Implementation: JSON-LD as the standard

Three formats are valid for structured data: JSON-LD, Microdata, and RDFa. Google treats all three as equally fine when the markup is valid, but recommends JSON-LD as the easiest to implement and maintain at scale.[^8] It also sits in a separate `<script>` block independent of HTML structure, so it does not have to be threaded through the markup the way Microdata and RDFa attributes do.

```html
<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "Article",
  "headline": "Structured Data and Schema Markup",
  "datePublished": "2026-04-25",
  "author": {
    "@type": "Person",
    "@id": "https://example.com/#author"
  }
}
</script>
```

JSON-LD blocks can be placed in `<head>` or `<body>`, and Google can also read JSON-LD injected by JavaScript.[^8] `<head>` is conventional. Multiple blocks per page are permitted, and Google understands multiple items whether they are nested under one main item or listed individually.[^7] A common pattern is one Article block, one BreadcrumbList block, plus any rich-result-specific blocks.

**Component pattern.** Build a reusable schema component (Astro, React, Vue) that takes a JSON object and emits it as a `<script type="application/ld+json">`. Each page builds its own schema object based on its content, keeping schema in sync with page data without manual updates.

## Which schema types should I implement?

Types grouped by site model. Where a type's rich result eligibility has changed, that is noted: both FAQPage and HowTo have lost their Google Search rich result formats, and no platform documents reading either for AI answers.

**Editorial and publication sites:** Article (or NewsArticle, TechArticle), Person (for authors), Organization (for publisher), BreadcrumbList.

**E-commerce:** Product, Offer, AggregateRating, Review, BreadcrumbList, Organization. HowTo on product-related instruction pages.

**Local businesses:** LocalBusiness (or a subtype such as Restaurant, Dentist, Plumber), PostalAddress, OpeningHoursSpecification, AggregateRating.

**SaaS and software:** SoftwareApplication, Organization, AggregateRating, Review, BreadcrumbList.

**Personal sites and portfolios:** Person, CreativeWork, AboutPage, BreadcrumbList.

**Recipe sites:** Recipe (with ingredients, cookingMethod, nutrition), AggregateRating, Review.

**Event sites:** Event (with location, performer, offers), Place.

**Video-heavy sites:** VideoObject (with `thumbnailUrl`, `uploadDate`, `duration`, `description`, and `contentUrl` or `embedUrl`) embedded on the page hosting the video. Eligibility for video results is decided by Google's indexing criteria, chiefly that the video sits on a watch page whose main purpose is that one video; the markup is how you control what the result shows (title, thumbnail, upload date, duration) and, in Google's words, "can also make it easier for Google to find your video".[^12] Each VideoObject should sit on the page where the video is embedded, not on a central video index page.

Two optional additions extend what the video can earn. **Key Moments** (the timestamped chapter links shown below a video result) come from either `Clip` markup, where you specify exact start and end times and labels manually, or `SeekToAction`, which tells Google your player supports URL-based seeking so it can generate the moments automatically. **A video sitemap** (the `<video:video>` extension to your XML sitemap, carrying title, description, thumbnail, content URL, and publish date) serves a different job from the schema: the schema describes the video to Google, while the sitemap helps Google *discover* videos on pages that are not well linked. They are complementary, and large video libraries benefit from both; a handful of embedded videos on well-linked pages can rely on the schema alone.

**FAQPage.** Apply to pages with a genuine FAQ section. Google removed FAQ rich results from Search in May 2026[^5] (restrictions had already limited eligibility to government and health sites since 2023[^3]). FAQPage schema no longer produces a visible result in Google Search, and no platform documents reading it for AI answers (see [Schema and AI search](#schema-and-ai-search) below for what is documented). Harmless to keep on a page with a real FAQ; not a reason to add one.

**HowTo.** For pages with sequential instructional content. HowTo rich results were deprecated in September 2023 and no longer appear in Google Search.[^3] The schema may still help Microsoft's AI answers, the one operator that says structured content helps at all (see [Schema and AI search](#schema-and-ai-search) below).

**WebSite (every site, home page only).** Google's system for choosing the site name shown above each result reads `WebSite` structured data on the home page, alongside `og:site_name`, the `<title>`, headings and other home page text, and calls the structured data "most important" if you want to state a preference.[^13] Two properties are required: `name`, and `url` set to the canonical home page. One is recommended: `alternateName`, a shorter name or acronym, which Google "strongly considers" when it is not confident enough to use the preferred name. None of this is guaranteed. Google says a generic name is "unlikely to be selected", that it "generally won't use the same site name for two different sites that are global in nature", and that names work per domain or subdomain, never per subdirectory. When it passes over every option, it may build a name from other sources or show the domain instead. The Rich Results Test does not check site name markup; use the Schema Markup Validator.

**SearchAction on WebSite.** *(Deprecated)* Google's Sitelinks Search Box (the visual search input shown in branded SERP results) was deprecated and no longer appears in search results.[^4] The `SearchAction` property produces no visual rich result in Google Search, and, as with every other type, no platform documents reading it for AI answers; keep it only where a site search exists to describe.

## The @id graph pattern

For sites with multiple schema entities (Person, Organization, WebSite), a useful pattern is to give each entity a stable `@id` and reference them across pages.

```json
{
  "@context": "https://schema.org",
  "@graph": [
    {
      "@type": "Person",
      "@id": "https://example.com/#person",
      "name": "Author Name"
    },
    {
      "@type": "WebSite",
      "@id": "https://example.com/#website",
      "author": { "@id": "https://example.com/#person" }
    },
    {
      "@type": "Article",
      "@id": "https://example.com/article/#article",
      "author": { "@id": "https://example.com/#person" },
      "isPartOf": { "@id": "https://example.com/#website" }
    }
  ]
}
```

Cross-referencing the same `@id` across every article an author writes gives knowledge graph systems an explicit signal linking content to a person, regardless of whether that relationship is stated in prose. This is especially valuable for personal brands and organisations that have not yet established Wikipedia or Wikidata presence.

<div class="practice-tip">
  <p class="practice-tip-label">Link schema types together with @id to build an entity graph</p>
  <div class="practice-tip-text">
    <p>Rather than writing standalone schema blocks, use the <code>@id</code> property to connect related types: an Article references its WebPage, which is authored by a Person, who belongs to an Organisation, which owns a Website. This creates a coherent entity graph that allows Google to understand the relationships between your content, its authors, and your business. Linked schema is more interpretable than isolated blocks and gives your structured data a better chance of populating Knowledge Panel entries and rich results accurately.</p>
  </div>
</div>

## How do you validate structured data?

Two tools to use before shipping any schema change:

- **[Schema Markup Validator](https://validator.schema.org/).** Validates against the schema.org specification. Catches structural errors.
- **[Google Rich Results Test](https://search.google.com/test/rich-results).** Validates against Google's specific requirements for rich result eligibility.

Both should pass. The Schema Markup Validator alone is not sufficient because Google has additional requirements (image sizes, required properties for specific rich results) that go beyond the base schema.org spec.

## Schema and AI search

The picture is more contested than most writing on the topic suggests.

The two major platforms that have said anything say different things, so take them separately.

**Microsoft.** Its own statement is on the Bing Webmaster Blog, November 2025, signed by Microsoft's Fabrice Canel and Krishna Madhavan: "Structured content, like schema-marked product pages, FAQs, and comparison tables, helps AI systems interpret and summarize your content more effectively."[^1] The subject is structured content, with schema as one form of it, and no type is named as a requirement. The post adds that this "increases the chances of your being cited", a claim about Microsoft's own answers rather than a measurement. The widely repeated "Microsoft confirms schema helps its LLMs" from March 2025 was a LinkedIn summary of Canel's SMX Munich talk, in which the only words attributed to him concern freshness and IndexNow.

**Google.** Its May 2026 AI optimisation guide lists "overfocusing on structured data" among the things you can ignore for generative AI search, stating that structured data "isn't required for generative AI search, and there's no special schema.org markup you need to add". It still recommends keeping it, but for a traditional reason: "it helps with being eligible for rich results on Google Search".[^10] So the case for schema on Google's AI surfaces rests on rich result eligibility and entity clarity, not on a documented retrieval benefit.

For pure LLM inference, the evidence is weaker. An empirical study by Search Atlas (December 2025) compared schema coverage with visibility across OpenAI, Gemini, and Perplexity and found that "higher schema coverage does not reliably lead to higher visibility scores".[^2] None of the three documents reading schema, so the study is measuring an undocumented mechanism and finding nothing, which is the expected result either way.

What this means in practice: schema is worth implementing for rich result eligibility, for entity reinforcement via `@id`, and because the one operator that has spoken says it helps its LLMs understand content. Treating it as a citation lever on any platform overstates what is known, and no type, FAQPage and HowTo included, has a documented AI use of its own.

<div class="practice-tip">
  <p class="practice-tip-label">Can LLMs read schema?</p>
  <div class="practice-tip-text">
    <p>Information declared only in your JSON-LD may not reach an AI system at all. Google validates markup before showing a rich result and withholds one where the markup does not match the visible page; no AI operator documents validating schema, and Microsoft is the only one that says its AI answers use it. If your author name, expertise, or key claims matter, state them in the prose, which every system reads. Schema is worth implementing for rich results, for Microsoft's AI answers, and for entity recognition, but it should reinforce what the page already says, not substitute for it.</p>
  </div>
</div>

## Common technical mistakes

**Schema describing content not visible on the page.** Google's guidelines say not to mark up content that is not visible to readers, and a structured data issue can earn a manual action.[^7] The scope of that penalty is narrower than most write-ups imply: Google states a structured data manual action means the page loses eligibility for rich results, and "it doesn't affect how the page ranks in Google web search".[^7] The general rule: if the user cannot see it, do not mark it up.

**Conflicting `@type` values across blocks.** Google says it "understands multiple items on a page, whether you nest the items or specify each item individually",[^7] so several blocks are not a problem in themselves. Two blocks describing the same article with different values are, because at least one of them misdescribes the visible page.

**Missing required properties.** Which properties are required varies by rich result type, and Google's own per-type documentation is definitive for Google Search rather than schema.org's.[^8] The lists are shorter than they are often reported to be: `Recipe` requires `name` and `image`, `VideoObject` requires `name`, `thumbnailUrl` and `uploadDate`, and `Article` has no required properties at all. The consequence is narrower too. Google's rule is that items missing a required property "are not eligible for rich results",[^7] not that the markup is invalid or that Google discards it.

**Using string IDs that aren't URLs.** `@id` should be a URL (URI). String IDs like `"@id": "author-1"` are invalid and don't participate in graph relationships.

**Double-escaped HTML entities.** A template that escapes a value already escaped upstream emits `Ben &amp;amp; Jerry's` where the value should read `Ben & Jerry's`. Googlebot used to unroll the extra layers, which hid the mistake; since August 2026 it applies a single pass of HTML unescaping, so the surplus layer stays in the extracted value.[^6] Write the plain character where JSON permits it, or a JSON escape such as `\u0026`.

**Schema only on some pages.** Inconsistent application across the site fragments the entity graph. Apply schema systematically.

**Stale `dateModified`.** Auto-incrementing the dateModified on every build (a common mistake with static-site generators) destroys the freshness signal. Set it from the actual content modification date.

## Maintenance and monitoring

Schema implementations drift. Field changes to schema types, framework upgrades that change rendering, and CMS template edits can all silently break schema. Monitoring approaches:

- **Search Console > Enhancements.** Reports rich result eligibility and errors per schema type. A type’s report appears only once Google has found valid markup of a supported rich result type on the property, so an absent report means nothing was detected rather than nothing was wrong. The reports also show a sample rather than every item, so check a specific missing URL with URL Inspection instead of reading absence from the list.[^11]
- **Periodic spot-checks.** Run the Rich Results Test on a sample of important URLs quarterly.
- **Crawl-based audits.** Screaming Frog and Sitebulb extract structured data from every URL during a crawl, surfacing missing or invalid schema across the site.

## Frequently asked questions

### Does structured data improve rankings directly?

No. The indirect effects (rich results, better CTR, clearer topic signals, AI citation) move rankings.

### How do I know which schema types my site is eligible for?

Google's [search gallery](https://developers.google.com/search/docs/appearance/structured-data/search-gallery) lists current rich result types and their requirements. Not all schema types produce rich results; those that don't still serve indexing and AI purposes.

### Can structured data be added retrospectively to old content?

Yes. Adding schema to existing pages is a frequent quick-win SEO project. Pages that previously had no schema often gain rich result eligibility within weeks of implementation.

### How much schema is too much?

Schema should describe the page accurately and completely. There is no penalty for detailed markup, provided every schema block reflects real on-page content.

[^1]: [How AI Search Is Changing the Way Conversions are Measured — Bing Webmaster Blog](https://blogs.bing.com/webmaster/November-2025/How-AI-Search-Is-Changing%E2%80%AFthe%E2%80%AFWay%E2%80%AFConversions%E2%80%AFare-Measured), Fabrice Canel and Krishna Madhavan, 20 November 2025: "Structured content, like schema-marked product pages, FAQs, and comparison tables, helps AI systems interpret and summarize your content more effectively."
[^2]: [The Limits of Schema Markup for AI Search — Search Atlas](https://searchatlas.com/research/the-limits-of-schema-markup-for-ai-search/)
[^3]: [Changes to HowTo and FAQ rich results — Google Search Central Blog](https://developers.google.com/search/blog/2023/08/howto-faq-changes)
[^4]: [Sitelinks search box is going away — Google Search Central Blog](https://developers.google.com/search/blog/2024/10/sitelinks-search-box)
[^5]: [FAQ rich result deprecation — Google Search status and changelog](https://developers.google.com/search/updates#faq-deprecation)
[^6]: [JSON-LD Extraction For Googlebot Now Does One Pass Of HTML Unescaping — Search Engine Roundtable](https://www.seroundtable.com/json-ld-extraction-googlebot-41921.html)
[^7]: [General structured data guidelines — Google Search Central](https://developers.google.com/search/docs/appearance/structured-data/sd-policies)
[^8]: [Introduction to structured data markup in Google Search — Google Search Central](https://developers.google.com/search/docs/appearance/structured-data/intro-structured-data)
[^9]: [About Schema.org — schema.org](https://schema.org/docs/about.html)
[^10]: [Top ways to ensure your content performs well in Google's AI experiences — Google Search Central](https://developers.google.com/search/docs/fundamentals/ai-optimization-guide)
[^11]: [Rich result status reports — Search Console Help](https://support.google.com/webmasters/answer/7552505)
[^12]: [Video (VideoObject, Clip, BroadcastEvent) structured data — Google Search Central](https://developers.google.com/search/docs/appearance/structured-data/video)
[^13]: [Provide a site name to Google Search — Google Search Central](https://developers.google.com/search/docs/appearance/site-names)