What You Will Learn
- What structured data tells Google and how it differs from HTML content signals
- Why JSON-LD is the only recommended format and how to implement it correctly
- Every schema type eligible for rich results in Google Search
- Complete Article, Product, FAQ, and Breadcrumb schema implementations with real code
- Common structured data errors that prevent rich results from appearing
- How to test structured data with Rich Results Test and Search Console
- Google's structured data quality policies and what triggers manual actions
What is Schema Markup
Schema markup (structured data) is machine-readable code that describes the meaning of your content to search engines. HTML tells browsers how to display content; schema markup tells Google what that content is — an article, a product, a recipe, an event, a person, a business. Google uses this context to display rich results in search — star ratings, prices, FAQ dropdowns, breadcrumb trails, and knowledge panel information.
Structured data does not directly affect keyword rankings. Google's official documentation states it is used to understand content and serve rich results, not as a general ranking signal. However, rich results improve click-through rates significantly — FAQ snippets and star ratings in search results increase CTR by making listings more prominent and informative.
Schema.org defines over 900 types. Google actively supports a subset for rich results — Article, Product, Recipe, FAQPage, BreadcrumbList, Event, LocalBusiness, JobPosting, and others. Implementing schema types not on Google's supported list will be read but will not produce rich results. Always check the Google Search Central documentation for the current list of supported schema types.
JSON-LD — The Only Recommended Format
Structured data can be implemented in three formats: JSON-LD, Microdata, and RDFa. Google recommends JSON-LD exclusively. JSON-LD is a <script type="application/ld+json"> block in the <head> (or <body>) of the page — it does not modify existing HTML markup and is completely separate from the visible content. This makes it easy to add, update, and manage without touching the page template.
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Article",
"headline": "Your Article Title",
"datePublished": "2026-04-04",
"dateModified": "2026-04-04",
"author": {
"@type": "Person",
"name": "Author Name",
"url": "https://www.example.com/author/"
},
"publisher": {
"@type": "Organization",
"name": "Site Name",
"logo": {
"@type": "ImageObject",
"url": "https://www.example.com/logo.png"
}
},
"image": "https://www.example.com/article-image.jpg"
}
</script>
Core JSON-LD rules
- Always include
"@context": "https://schema.org" - The
"@type"value must exactly match a Schema.org or Google-supported type name (case-sensitive) - URLs must be absolute, not relative
- Date values must use ISO 8601 format:
"2026-04-04"or"2026-04-04T14:30:00Z" - Multiple schema types on one page require separate
<script type="application/ld+json">blocks, or use"@graph"to combine them
Rich Result Types Supported by Google
| Schema Type | Rich Result | Best For |
|---|---|---|
| Article / NewsArticle / BlogPosting | Top Stories carousel, enhanced article display | News sites, blogs, editorial content |
| Product | Price, availability, star ratings in search | E-commerce product pages |
| FAQPage | Expandable FAQ dropdowns below listing | Any page with question-answer content |
| Recipe | Cooking time, calories, star ratings, carousel | Food and cooking sites |
| Event | Date, location, ticket links in search | Event listings, conferences, performances |
| LocalBusiness | Business info in Knowledge Panel | Physical business locations |
| BreadcrumbList | Breadcrumb trail in search result URL | Any site with hierarchical navigation |
| JobPosting | Job listings with salary, location in search | Job boards, company careers pages |
| HowTo | Step-by-step instructions with images | Tutorial and instructional content |
| VideoObject | Video thumbnails, duration in search | Pages with embedded videos |
| SiteLinksSearchBox | Search box in Knowledge Panel | Large sites with internal search |
Article Schema — Implementation
Article schema is required for inclusion in Google's Top Stories carousel and enhances how article pages appear in regular search results. Use Article for general content, NewsArticle for news journalism, and BlogPosting for blog content. The key properties Google uses:
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Article",
"headline": "Article Title — max 110 characters",
"description": "Brief article description",
"image": [
"https://example.com/article-1x1.jpg",
"https://example.com/article-4x3.jpg",
"https://example.com/article-16x9.jpg"
],
"datePublished": "2026-04-04T08:00:00Z",
"dateModified": "2026-04-04T10:30:00Z",
"author": [{
"@type": "Person",
"name": "Author Name",
"url": "https://example.com/authors/name/"
}],
"publisher": {
"@type": "Organization",
"name": "Publication Name",
"logo": {
"@type": "ImageObject",
"url": "https://example.com/logo-600x60.png",
"width": 600,
"height": 60
}
}
}
</script>
Provide images in three aspect ratios (1:1, 4:3, 16:9) — Google selects the most appropriate for the display context. The publisher logo must be 600px wide and no taller than 60px to qualify for AMP Top Stories. dateModified is critical for news freshness signals.
Product Schema — Implementation
Product schema enables price, availability, and star rating information in Google Shopping and organic search results. Google requires that Product schema only appear on pages for a single specific product — not category pages or pages listing multiple products.
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Product",
"name": "Product Name",
"image": ["https://example.com/product-1.jpg"],
"description": "Product description",
"sku": "SKU-12345",
"brand": {
"@type": "Brand",
"name": "Brand Name"
},
"offers": {
"@type": "Offer",
"url": "https://example.com/product/",
"priceCurrency": "GBP",
"price": "29.99",
"priceValidUntil": "2026-12-31",
"availability": "https://schema.org/InStock",
"itemCondition": "https://schema.org/NewCondition"
},
"aggregateRating": {
"@type": "AggregateRating",
"ratingValue": "4.5",
"reviewCount": "127"
}
}
</script>
FAQ Schema — Implementation
FAQPage schema creates expandable question-answer pairs directly in the Google search result. Each question appears as a clickable accordion below the main result — expanding to show the answer without the user leaving search. This significantly increases result footprint (vertical space in search results) and CTR.
Google restricted FAQ rich results in 2023 to authoritative government and health sites only in standard search. However, FAQPage schema is still used for Google Assistant and other surfaces. Implement it correctly and Google will use it where eligible — do not remove existing implementations.
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "FAQPage",
"mainEntity": [
{
"@type": "Question",
"name": "What is structured data?",
"acceptedAnswer": {
"@type": "Answer",
"text": "Structured data is machine-readable code that describes the meaning of page content to search engines, enabling rich results in search."
}
},
{
"@type": "Question",
"name": "Does schema markup improve rankings?",
"acceptedAnswer": {
"@type": "Answer",
"text": "Schema markup does not directly improve keyword rankings. It enables rich results which can improve click-through rates."
}
}
]
}
</script>
BreadcrumbList Schema
Breadcrumb schema replaces the URL in Google search results with a human-readable path (Home > Category > Page). This makes your listing more descriptive and trustworthy in search results. It is one of the simplest and most widely applicable schema types — every site with hierarchical navigation should implement it.
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "BreadcrumbList",
"itemListElement": [
{
"@type": "ListItem",
"position": 1,
"name": "Home",
"item": "https://www.example.com/"
},
{
"@type": "ListItem",
"position": 2,
"name": "SEO",
"item": "https://www.example.com/seo/"
},
{
"@type": "ListItem",
"position": 3,
"name": "Technical SEO",
"item": "https://www.example.com/seo/technical/"
}
]
}
</script>
Testing and Validation
Rich Results Test
Google's Rich Results Test (search.google.com/test/rich-results) validates structured data against Google's requirements for rich results — not just Schema.org validity. Enter a URL or paste code. The tool shows which schema types were detected, which properties are valid, and which errors or warnings prevent rich result eligibility.
Google Search Console — Rich Results report
Search Console > Enhancements shows rich result status for all pages with structured data: Valid, Valid with warnings, Error. Errors prevent rich results from appearing. Common errors:
- Missing required fields. Each rich result type has required properties. Product requires at minimum
nameandoffers. Recipe requiresname,image, and eithertotalTimeorrecipeYield. - Content mismatch. Schema content must match the visible page content. A product schema showing a price not visible on the page violates Google's policies.
- Fake reviews. Aggregated ratings must be based on genuine user reviews. Manually set ratings that do not reflect real user opinions are a policy violation.
- Incorrect date format. Dates must be ISO 8601. Using "April 4, 2026" instead of "2026-04-04" will fail validation.
Authentic Sources
Official introduction to structured data for Google Search.
The complete Schema.org vocabulary maintained by Google, Microsoft, Yahoo, and Yandex.
All structured data types eligible for rich results in Google Search.
Policies for structured data quality and spam.