Structured Data and Schema Markup

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 vocabulary, which Google, Microsoft, Yahoo and Yandex founded,1 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.23 Its value for AI answers is unsettled, with Microsoft and Google saying different things, as covered under 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 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.4 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).2
  • AI systems are a split picture, covered under 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,5 Google says its AI features do not require it,4 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.2 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.

<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.2 <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.3 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”.6 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 20267 (restrictions had already limited eligibility to government and health sites since 20238). 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 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.8 The schema may still help Microsoft’s AI answers, the one operator that says structured content helps at all (see 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.9 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.10 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.

{
  "@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.

Link schema types together with @id to build an entity graph

Rather than writing standalone schema blocks, use the @id 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.

How do you validate structured data?

Two tools to use before shipping any schema change:

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.

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.”5 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”.4 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”.11 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.

Can LLMs read schema?

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.

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.3 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”.3 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”,3 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.2 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”,3 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.12 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.13
  • 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 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.

Footnotes

  1. About Schema.org — schema.org ↩

  2. Introduction to structured data markup in Google Search — Google Search Central ↩ ↩2 ↩3 ↩4 ↩5

  3. General structured data guidelines — Google Search Central ↩ ↩2 ↩3 ↩4 ↩5 ↩6

  4. Top ways to ensure your content performs well in Google’s AI experiences — Google Search Central ↩ ↩2 ↩3

  5. How AI Search Is Changing the Way Conversions are Measured — Bing Webmaster Blog, 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

  6. Video (VideoObject, Clip, BroadcastEvent) structured data — Google Search Central ↩

  7. FAQ rich result deprecation — Google Search status and changelog ↩

  8. Changes to HowTo and FAQ rich results — Google Search Central Blog ↩ ↩2

  9. Provide a site name to Google Search — Google Search Central ↩

  10. Sitelinks search box is going away — Google Search Central Blog ↩

  11. The Limits of Schema Markup for AI Search — Search Atlas ↩

  12. JSON-LD Extraction For Googlebot Now Does One Pass Of HTML Unescaping — Search Engine Roundtable ↩

  13. Rich result status reports — Search Console Help ↩