Schema.org markup is a structured-data vocabulary understood by Google, Yandex, Bing and most search assistants. Correct markup unlocks SERP rich snippets — stars, prices, FAQ accordions, breadcrumb navigation, product info. Per Google, pages with rich snippets average 30% higher CTR than regular ones. This article walks through which markup types fit which pages, how to use @id to link entities, and how to test markup via Google Rich Results Test and Schema Validator.
JSON-LD vs Microdata vs RDFa
Three schema.org formats. JSON-LD — a separate `<script>` block in `<head>` or `<body>` with JSON. Doesn't mix with HTML, easy to maintain, Google-recommended. Microdata — `itemscope`, `itemtype`, `itemprop` attributes inline in HTML. Harder to maintain but easier for template-generated dynamic data. RDFa — the oldest format, syntax close to Microdata. In 2026 all three are understood by every engine, but JSON-LD is the de-facto standard. Use JSON-LD whenever you can; other formats only for legacy markup that's hard to rewrite.
Baseline set for a typical site
The minimum markup set every modern site needs. Homepage — Organization (name, logo, contacts) + WebSite (for sitelinks searchbox). Inner pages — BreadcrumbList (Google swaps URLs in SERP for crumbs). Blog posts — Article with author, datePublished, dateModified, headline. FAQ-block pages — FAQPage. Product catalogue — Product with offers (price), AggregateRating (if reviews exist). Comparison pages — Review. Author pages — Person. This set covers 90% of needs.
Linking entities via @id
The most underused trick in schema.org. Via `@id` you create a "global identifier" for an entity and reference it from different JSON-LD blocks. Example: homepage has Organization with `@id: "https://site.com/#organization"`. On an article page in Article schema you set `publisher: { "@id": "https://site.com/#organization" }` — and Google understands the publisher of the article is the same organisation as on the homepage. This builds an entity "graph" of your site that Google uses for the knowledge panel and to understand brand structure. Site Metrics Tool uses this pattern on every page — each blog post references the unified organisation @id.
Top-10 schema types by impact
- Organization + WebSite — mandatory on homepage, builds the knowledge panel.
- BreadcrumbList — replaces URLs in SERP with crumbs, lifts CTR.
- FAQPage — accordion in the SERP, 3× CTR on instructional queries.
- Product + Offer + AggregateRating — stars and price in SERP for e-commerce.
- Article + Author — required for Top Stories and for E-E-A-T.
- HowTo — step list in SERP for guides.
- Review + AggregateRating — stars for reviews and comparisons.
- Event — event card with date and location.
- LocalBusiness — mandatory for local businesses.
- SoftwareApplication — for SaaS and apps, unlocks the app card.
Testing and debugging markup
Three tools for verification. One — Google Rich Results Test (search.google.com/test/rich-results): shows which types Google recognised and flags errors. Two — Schema Markup Validator (validator.schema.org): a stricter tester checking full schema compliance, not only Google-specific requirements. Three — GSC → Enhancements: in real SERPs shows what Google uses from your markup and any errors found during indexing. These three cover 100% of debugging tasks. Site Metrics Tool's `/tools/meta-tags-checker` also validates JSON-LD on any page — no signup.
Frequently asked
Can multiple schema types coexist on a page?
Yes and you should. Homepage — Organization + WebSite. Blog post — Article + BreadcrumbList + FAQPage (if FAQ present). Product card — Product + AggregateRating + BreadcrumbList. Key rule: each type in its own `<script>` block.
What happens if the markup has errors?
Google ignores broken markup and skips the rich snippet. No direct penalty, but you lose CTR upside. Faked markup (e.g., AggregateRating without real reviews) can trigger a manual action — much worse.
Does schema.org work for Yandex?
Yes — Yandex understands the basic types (Organization, Article, Product, FAQPage, LocalBusiness). Yandex additionally uses its own markup for expanded answers, but it respects baseline JSON-LD as well.