Diagram of a schema.org JSON-LD block nesting Product, Offer, and AggregateRating typesDetailed guide

Schema.org Markup Guide: Complete Structured Data

View contents

Schema.org Markup Guide: Complete Technical Reference for Structured Data

Introduction

Structured data is a standardized vocabulary—schema.org—added to HTML to explicitly describe a page's content to search engines: what it is (an article, a product, a recipe), who created it, and what properties it has. The UXR SEO Analyzer evaluates the presence, validity, and type coverage of structured data on every analyzed page.

This guide covers the recommended format, the most-used types, a complete implementation example, and the mistakes that most often invalidate markup.

Why Structured Data Matters

Without structured data, a search engine has to infer a page's meaning from indirect signals: text position, generic HTML tags, surrounding context. With structured data, that inference becomes an explicit statement: "this is a product, it costs $29.99, and it has 89 reviews averaging 4.5 stars." That precision doesn't just enable traditional rich results—it's also how AI-driven answer systems extract verifiable facts from a page instead of having to interpret them.

There are three syntaxes for implementing schema.org: JSON-LD, Microdata, and RDFa. Google explicitly recommends JSON-LD because it's declared in a <script> block separate from the visible HTML, which makes it easier to maintain, generate dynamically, and validate without touching the page's markup:

SyntaxWhere It LivesMaintainability
JSON-LDStandalone <script> blockHigh—generated and updated without touching visible HTML
MicrodataInline itemscope/itemprop attributesLow—mixed in with visual markup
RDFaInline vocab/typeof attributesLow—requires specialized templates
<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "Article",
  "headline": "Article title",
  "author": {
    "@type": "Person",
    "name": "Author name"
  },
  "datePublished": "2026-07-13",
  "dateModified": "2026-07-13"
}
</script>

Most-Used Types in SEO

TypeMain UseRich Result
Article / BlogPosting / NewsArticleEditorial contentNews carousel, visible author and date
ProductE-commerce product pagesPrice, availability, and reviews in the snippet
FAQPageFrequently asked questions sectionsExpandable questions in the search result
BreadcrumbListPage's navigation pathBreadcrumb trail instead of the raw URL
OrganizationSite-level brand identityLogo and entity data in the Knowledge Panel
LocalBusinessBusinesses with a physical locationHours, address, and phone in the snippet

The Most Important Rule: Only Mark Up Visible Content

Google's policy is explicit: structured data must describe content the user can actually see on the page. If the JSON-LD declares a product price, that price needs to exist in the visible content; if the FAQPage contains questions and answers, those questions and answers need to be on the page. Marking up content that isn't visible is a guideline violation and can result in a manual action.

Combining Several Types on One Page

A real page almost never carries just one schema.org type—it usually combines several independent JSON-LD blocks that describe different aspects of the same page. A typical blog article includes:

  • Article or BlogPosting for the editorial content itself
  • BreadcrumbList for the navigation path (Home > Blog > Category > Article)
  • Organization to identify the publishing brand, usually reused across every page on the site

Each block can live in its own <script type="application/ld+json">, or be combined into an @graph array when entities reference each other via @id. What matters is that identifiers stay consistent: if the Organization has "@id": "https://example.com/#organization", the Article must reference that exact same URL when declaring its publisher.

Structured Data for E-commerce (Product)

E-commerce sites face an additional layer of validation: Google Merchant Center runs its own structured data check focused on Product, separate from the generic Rich Results Test. That check catches issues the generic test misses, such as missing GTINs, price mismatches between the product feed and the JSON-LD markup, or an InStock status declared for products that are actually out of stock. Keeping price and availability in sync across the visible HTML, the JSON-LD, and the Merchant Center feed is essential to avoid suspensions.

Nesting Types

Schema.org types nest inside each other to describe relationships. An Article nests a Person as its author; a Product nests an Offer for pricing and an AggregateRating for reviews:

{
  "@type": "Product",
  "name": "Product name",
  "offers": {
    "@type": "Offer",
    "price": "29.99",
    "priceCurrency": "USD",
    "availability": "https://schema.org/InStock"
  },
  "aggregateRating": {
    "@type": "AggregateRating",
    "ratingValue": "4.5",
    "reviewCount": "89"
  }
}

How to Choose the Right Type

A common mistake is forcing a generic type when a more specific one exists. Before marking up a page, ask: is the content editorial (use Article), a purchasable item (use Product), answering explicit questions visible on the page (use FAQPage), or describing a business with a physical location (use LocalBusiness)? Google's Search Gallery documentation lists, for every supported rich result, exactly which type and properties to use—checking it before improvising avoids most wrong-type mistakes.

Validation

Before publishing, all markup should pass through validation tools: Google's Rich Results Test catches critical errors (missing required properties) and non-critical warnings (missing recommended properties) that are still worth fixing to maximize rich-result eligibility. Google's Search Gallery documents, type by type, which properties are required and which are recommended.

  1. Write the JSON-LD markup alongside the visible content it describes, never in isolation
  2. Validate JSON syntax (quotes, commas, braces) before testing it against Google's guidelines
  3. Run the Rich Results Test and resolve every critical error
  4. Review non-critical warnings and decide whether to add recommended properties
  5. Publish and monitor the Rich Results report in Search Console to catch regressions

Common Mistakes

  • Invented content: declaring a ratingValue or a price that doesn't appear on the page
  • Missing required properties: for example, an Article without headline or without datePublished
  • Wrong type: using generic Article when the content is clearly a Recipe or a Product
  • Multiple contradictory JSON-LD blocks: two scripts describing the same entity with different data
  • Inconsistent @id values: cross-references between entities that don't resolve to the same identifier
  • Stale sample data: leaving placeholder author names, prices, or dates from a template that were never replaced with real content

Structured Data and Crawl Budget

Structured data itself doesn't consume crawl budget any differently than regular HTML—but bloated or duplicated JSON-LD blocks add page weight, and pages with broken markup that trigger repeated re-crawls to check for fixes can indirectly slow down how quickly Google revisits a site's most important pages. Keeping JSON-LD minimal, valid on the first attempt, and free of duplicated blocks is good practice both for search engines and for page load performance.

Long-Term Maintenance

Schema.org markup isn't a one-time exercise. Sites that generate pages dynamically (CMS, e-commerce, template engines) should treat JSON-LD as part of the template, not a manual patch—otherwise every new page risks inheriting sample values or placeholders that were never swapped for real data. It's worth including a structured data check in the review process before publishing new content, which is exactly what the UXR SEO Analyzer automates.

What the UXR SEO Analyzer Checks

The tool identifies which schema.org types are present on the page, validates that required properties exist, detects malformed JSON-LD blocks (invalid JSON), and flags when the marked-up content doesn't match the content visible in the HTML.


References

  1. Schema.org - Product type
  2. Schema.org - Offer type
  3. Schema.org - AggregateRating type
  4. Schema.org - CreativeWork type (headline, datePublished, publisher)
  5. Schema.org - Organization type
  6. Schema.org - BreadcrumbList type
  7. Google Search Central - Article Structured Data Markup
  8. Google Search Central - Search Gallery of Structured Data
  9. Google Search Central - Structured Data for Q&A Pages

Related articles

Category hub

Hub

Structured Data: The Complete Schema.org Hub

Curated hub for structured data: schema.org, meta robots, Open Graph, and canonical URLs working together for rich results.

In the same category

Introduction

Canonical Url Explained

The canonical URL (canonical tag) is an HTML element that tells Google which is the preferred version of a page when multiple URLs exist with similar or...

Introduction

Open Graph Tags Explained

Open Graph tags (OG tags) are HTML meta tags that control how your content appears when shared on social media platforms like Facebook, LinkedIn, Twitter, and...

Introduction

Meta Robots: How to Control Indexing and Crawling

The meta robots tag controls whether a page gets indexed and whether its links get followed; understand its directives and common mistakes.