Structured data (Schema.org markup) tells Google exactly what your content means — enabling rich results like star ratings, FAQ dropdowns, and product prices directly in search results. This complete guide covers JSON-LD implementation, Schema types, rich result eligibility, validation, and platform-specific instructions for 2026.
SEO Tip (2026): Google uses structured data signals as part of its understanding of page content — pages with valid, comprehensive Schema.org markup tend to receive better indexing priority and richer SERP features. After implementing structured data, use PageGuard to verify the SEO health of your pages.
Check your page's SEO & structured data health
Scan any URL to find missing meta tags, structured data errors, and technical SEO issues that prevent rich results.
Structured data is a standardized format for providing information about a page and classifying its content. While regular HTML tells a browser how to display content, structured data tells search engines what the content means.
The primary vocabulary for web structured data is Schema.org — a collaborative project founded by Google, Microsoft, Yahoo, and Yandex in 2011. Schema.org defines hundreds of "types" (Article, Product, Event, Person, etc.) and "properties" (name, price, datePublished, etc.) that form a shared language between websites and search engines.
Example: What a search engine sees without structured data:
"The Blue Widget costs $29.99 — ★★★★☆ (4.2/5, 318 reviews)"
Example: What a search engine understands with Product + AggregateRating schema:
{
"@type": "Product",
"name": "Blue Widget",
"offers": { "price": "29.99", "priceCurrency": "USD" },
"aggregateRating": { "ratingValue": "4.2", "reviewCount": "318" }
}
The machine-readable version enables Google to display price and stars directly in search results — often doubling click-through rates compared to plain text results.
Three formats can express Schema.org structured data. Google recommends JSON-LD for all new implementations:
| Format | Where It Lives | Maintenance | Google Recommendation |
|---|---|---|---|
| JSON-LD | <script> tag in <head> or <body> |
Easiest — separate from HTML | ✓ Recommended |
| Microdata | Embedded in HTML elements via attributes | Hard — tied to HTML structure | Supported but not preferred |
| RDFa | Embedded in HTML via RDF attributes | Complex — academic/publishing use | Supported but not preferred |
Use JSON-LD exclusively. It keeps your structured data separate from your HTML, making it easy to add, update, and debug without touching markup.
Google supports rich results for specific Schema.org types. Here are the most impactful for common site types:
JSON-LD is placed inside a <script type="application/ld+json"> tag. You can place multiple JSON-LD blocks on a single page for different Schema types.
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Article",
"headline": "How to Optimize Your Website for 2026",
"datePublished": "2026-03-04",
"dateModified": "2026-03-04",
"author": {
"@type": "Person",
"name": "Jane Smith"
},
"publisher": {
"@type": "Organization",
"name": "My Company",
"logo": {
"@type": "ImageObject",
"url": "https://example.com/logo.png"
}
},
"image": "https://example.com/article-image.jpg",
"mainEntityOfPage": {
"@type": "WebPage",
"@id": "https://example.com/article-url"
}
}
</script>
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Product",
"name": "Premium Widget",
"image": "https://example.com/widget.jpg",
"description": "High-quality widget for professionals",
"brand": { "@type": "Brand", "name": "WidgetCo" },
"sku": "WIDGET-001",
"offers": {
"@type": "Offer",
"price": "49.99",
"priceCurrency": "USD",
"availability": "https://schema.org/InStock",
"url": "https://example.com/widget"
},
"aggregateRating": {
"@type": "AggregateRating",
"ratingValue": "4.5",
"reviewCount": "127"
}
}
</script>
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "FAQPage",
"mainEntity": [
{
"@type": "Question",
"name": "What does your product do?",
"acceptedAnswer": {
"@type": "Answer",
"text": "Our product helps you monitor website health automatically."
}
},
{
"@type": "Question",
"name": "How much does it cost?",
"acceptedAnswer": {
"@type": "Answer",
"text": "We offer a free plan plus paid plans starting at $9/month."
}
}
]
}
</script>
BreadcrumbList should be added to every page on your site. It tells Google the hierarchical position of each page within your site structure, which appears as breadcrumb navigation below your page title in search results.
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "BreadcrumbList",
"itemListElement": [
{
"@type": "ListItem",
"position": 1,
"name": "Home",
"item": "https://example.com"
},
{
"@type": "ListItem",
"position": 2,
"name": "Blog",
"item": "https://example.com/blog"
},
{
"@type": "ListItem",
"position": 3,
"name": "How to Optimize Images",
"item": "https://example.com/blog/optimize-images"
}
]
}
</script>
Breadcrumb rich results replace the URL display in SERPs, making results look more organized and increasing CTR — especially for deep pages within a category structure.
Install Yoast SEO (premium) or RankMath (free) for automatic Article, BreadcrumbList, Organization, and WebPage schemas. For Product schema on WooCommerce, both plugins add basic Product markup. For advanced control, use the Schema & Structured Data for WP & AMP plugin. For custom JSON-LD blocks, add code via your theme's wp_head hook or a custom plugin.
Shopify themes automatically include basic Product, BreadcrumbList, and Organization JSON-LD. Customize in your theme's product.liquid or article.liquid files. Use the JSON-LD for SEO app for comprehensive Schema implementation without code editing. Verify with Google's Rich Results Test after any theme changes.
Add JSON-LD via the next-seo package or directly using a <Script type="application/ld+json"> component in your layout or page files. For dynamic pages, generate schema server-side using your data fetching (getServerSideProps or server components) so it's included in the initial HTML. Avoid client-side only rendering of structured data as Google may not execute JavaScript during some crawls.
These platforms have limited built-in Schema support. Webflow and Squarespace allow custom code injection in page settings — add your JSON-LD in the Head section. Wix has a SEO Settings panel with some structured data options. For advanced schemas, use the Wix Developer Center with custom code or third-party SEO apps from their App Market.
Add JSON-LD to your base layout template using template variables to dynamically populate schema properties. Hugo has partial templates for SEO; Jekyll uses Liquid tags; Eleventy uses Nunjucks or Liquid. Use front matter to define page-specific schema properties (headline, datePublished, author) that get injected into your JSON-LD template.
Add these two schemas to your homepage to establish brand identity and enable the Sitelinks Searchbox in Google results:
{
"@context": "https://schema.org",
"@type": "Organization",
"name": "Your Company",
"url": "https://example.com",
"logo": "https://example.com/logo.png",
"sameAs": [
"https://twitter.com/yourcompany",
"https://linkedin.com/company/yourcompany",
"https://github.com/yourcompany"
],
"contactPoint": {
"@type": "ContactPoint",
"contactType": "customer support",
"email": "support@example.com"
}
}
{
"@context": "https://schema.org",
"@type": "WebSite",
"name": "Your Site Name",
"url": "https://example.com",
"potentialAction": {
"@type": "SearchAction",
"target": {
"@type": "EntryPoint",
"urlTemplate": "https://example.com/search?q={search_term_string}"
},
"query-input": "required name=search_term_string"
}
}
The WebSite schema can enable a Sitelinks Searchbox in your brand's Google Knowledge Panel — but only for sites with sufficient authority and search volume for brand queries.
If you have a physical location or serve local customers, LocalBusiness schema is essential for local SEO and Google Business Profile integration:
{
"@context": "https://schema.org",
"@type": "LocalBusiness",
"name": "Your Business Name",
"image": "https://example.com/storefront.jpg",
"address": {
"@type": "PostalAddress",
"streetAddress": "123 Main St",
"addressLocality": "San Francisco",
"addressRegion": "CA",
"postalCode": "94102",
"addressCountry": "US"
},
"geo": {
"@type": "GeoCoordinates",
"latitude": 37.7749,
"longitude": -122.4194
},
"telephone": "+1-415-555-0100",
"openingHoursSpecification": [
{
"@type": "OpeningHoursSpecification",
"dayOfWeek": ["Monday","Tuesday","Wednesday","Thursday","Friday"],
"opens": "09:00",
"closes": "18:00"
}
],
"priceRange": "$$",
"aggregateRating": {
"@type": "AggregateRating",
"ratingValue": "4.7",
"reviewCount": "89"
}
}
Use the most specific subtype of LocalBusiness that applies to your business (Restaurant, MedicalClinic, LegalService, etc.) for the most relevant rich results.
Always validate structured data after adding or changing it. Use these tools in sequence:
Google Rich Results Test
Visit search.google.com/test/rich-results and enter your URL or paste your JSON-LD code. This shows which rich result features your page qualifies for and lists any errors or warnings. Test every unique page template in your site.
Schema Markup Validator
Visit validator.schema.org for a comprehensive Schema.org specification check. This catches issues that Google's tool may not flag — such as using deprecated properties or incorrect value types.
Google Search Console Rich Results Report
After deploying, monitor the Rich Results report under Experience in Google Search Console. It shows aggregate data on valid and invalid structured data across your site, with affected URL counts and specific error descriptions.
PageGuard SEO Scan
Use PageGuard's free scan to verify the overall technical SEO health of pages with structured data — checking canonical URLs, meta tags, and other signals alongside your Schema implementation.
❌ Marking up content that isn't visible to users
Google requires that structured data accurately reflects visible page content. Don't mark up content that exists only in JSON-LD but isn't displayed to users. For example, don't add a 5-star AggregateRating unless reviews are visible on the page.
❌ Missing required properties
Each Schema type has required properties for rich results eligibility. Product requires name + offers with price and priceCurrency. AggregateRating requires ratingValue and reviewCount. Article requires headline and datePublished. Check Google's developer documentation for each type's required vs. recommended properties.
❌ Using incorrect data types
Schema.org properties have specific expected data types. Prices must be strings ("29.99"), not numbers (29.99). Dates must use ISO 8601 format (YYYY-MM-DD). Boolean values must be actual booleans (true/false), not strings ("true"/"false"). Type mismatches cause validation errors.
❌ Adding the same schema to every page regardless of content
Avoid adding Product schema to blog posts or Article schema to product pages. Match your Schema type to the actual content type. Google may penalize sites that use structured data in misleading ways (e.g., adding AggregateRating to a page with no reviews).
❌ Broken JSON syntax
A single missing comma, unclosed bracket, or unescaped special character breaks the entire JSON-LD block and prevents Google from parsing it. Always use a JSON validator (jsonlint.com) after writing or modifying JSON-LD code. Be especially careful with apostrophes in text content.
❌ Using relative URLs instead of absolute URLs
All URLs in structured data must be absolute (including https://). The "image" property, "url" property, "item" in BreadcrumbList, and "mainEntityOfPage" @id all require full absolute URLs. Relative URLs like "/images/photo.jpg" cause validation errors.
Adding structured data doesn't guarantee rich results — Google decides whether to show them based on content quality, search relevance, and policy compliance. Here's what each Schema type typically achieves:
| Schema Type | Rich Result | Typical CTR Lift |
|---|---|---|
| Product + AggregateRating | Star ratings + price in SERP | +15–30% |
| FAQPage | Expandable Q&A below result | +20–30% |
| HowTo | Numbered steps with images | +10–20% |
| Recipe | Image, time, rating in SERP | +25–40% |
| BreadcrumbList | Navigation path instead of URL | +5–10% |
| Article | Top Stories, date display | Varies by news eligibility |
| Event | Date, location, price in SERP | +15–25% |
Rich result display can vary by device, search query, and Google's algorithm. Even if rich results aren't shown, structured data still helps Google understand your content — improving indexing quality and relevance signals.
After implementing Schema.org markup, verify that the surrounding page technical health is also strong — Google uses multiple signals together when deciding rich result eligibility and indexing priority.
PageGuard scans your pages for SEO health signals including canonical URL correctness, meta tag completeness, Core Web Vitals, and best practices compliance — all of which work together with your structured data to maximize search visibility.
Check if your pages are rich result–ready
Scan any URL to verify SEO health, canonical URL, meta tags, and page quality signals alongside your structured data implementation.
Structured data is machine-readable Schema.org markup (usually JSON-LD) that tells search engines exactly what your content means. It enables rich results — star ratings, FAQ dropdowns, product prices, and event dates directly in search results — which typically increase click-through rates 15–30%. While not a direct ranking factor, the engagement signals from better CTRs indirectly improve rankings.
All three express Schema.org vocabulary. JSON-LD lives in a separate script tag, is easiest to implement and maintain, and is Google's recommended format. Microdata and RDFa embed attributes directly into HTML elements, making them harder to maintain as your HTML changes. Use JSON-LD for all new implementations.
Use three tools: (1) Google's Rich Results Test (search.google.com/test/rich-results) — checks rich result eligibility and errors; (2) Schema Markup Validator (validator.schema.org) — validates against the full Schema.org specification; (3) Google Search Console's Rich Results report — monitors your site's structured data health over time. Test every page template, not just individual pages.
Google supports rich results for: Article, Breadcrumb, Course, Dataset, Event, FAQPage, HowTo, JobPosting, LocalBusiness, Product (with Offer and AggregateRating), Q&A Page, Recipe, Review Snippet, SoftwareApplication, and Video. Focus on the types most relevant to your content type — e-commerce sites should prioritize Product + AggregateRating; content sites benefit most from Article + FAQPage.
Not every page benefits equally. Prioritize: product pages (Product + AggregateRating), blog posts (Article + BreadcrumbList), FAQ sections (FAQPage), local business pages (LocalBusiness), and your homepage (Organization + WebSite). Add BreadcrumbList to every page sitewide. Pages like login, admin, or confirmation pages don't benefit from structured data.
Technical SEO Checklist 2026
Complete technical SEO audit covering crawlability, indexing, and Core Web Vitals
On-Page SEO Checklist 2026
Optimize title tags, meta descriptions, headings, and structured data
Core Web Vitals Optimization 2026
Fix LCP, INP, and CLS to improve Google page experience signals
Sitemap.xml Guide 2026
Create, submit, and optimize your XML sitemap for Google indexing