Schema Markup & JSON-LD Structured Data Guide

Structured data is machine-readable code that helps search engines understand the content of your web pages at a deeper level than plain HTML allows. By adding structured data markup, you explicitly tell Google what your page is about — whether it's an article, a product, an FAQ, a recipe, or a local business — enabling richer, more informative search results that drive higher click-through rates.

What Is Structured Data?

At its core, structured data adds context to your content. HTML tells a browser how to display text; structured data tells search engines what that text means. A price inside a paragraph is just text to Google — but a price wrapped in Product schema becomes a data point that can appear in rich results with star ratings, pricing, and availability information.

Structured data uses vocabularies defined by Schema.org, a collaborative project between Google, Bing, Yahoo, and Yandex that standardizes markup across all major search engines.

JSON-LD vs Microdata vs RDFa

There are three formats for implementing structured data. Here's how they compare:

FormatImplementationProsCons
JSON-LDSeparate <script> block in <head> or <body>Easy to add/remove, doesn't touch HTML, Google's recommended formatData can drift from visible content if not maintained
MicrodataHTML attributes (itemscope, itemprop) on existing elementsTightly bound to visible contentClutters HTML, harder to maintain, breaks with template changes
RDFaHTML attributes (typeof, property) on elementsPowerful for complex ontologiesVerbose, rarely used for SEO, steep learning curve

Use JSON-LD. Google explicitly recommends it, the developer experience is vastly better, and it separates your data layer from your presentation layer. Every example in this guide uses JSON-LD.

Common Schema Types

Schema.org defines hundreds of types, but a focused set is responsible for the vast majority of SEO benefits:

Article

Use for blog posts, news articles, and editorial content. Required properties include headline, author, datePublished, and image. The Article schema enables rich results with headline, thumbnail, and date in search results.

Product

For e-commerce product pages. Include name, image, description, offers (with price, priceCurrency, availability), and aggregateRating. Product schema powers the product panels in Google Shopping and organic results with pricing, ratings, and stock status.

FAQPage

For pages with a list of questions and answers. Each question requires name (the question text) and acceptedAnswer with text (the answer). FAQ rich results can dramatically increase your SERP real estate by displaying expandable Q&A directly in search results.

HowTo

For instructional content with sequential steps. Each step needs name and text; optional image and url per step. HowTo schema generates step-by-step rich results, especially powerful for "how to" queries.

Organization & LocalBusiness

Organization schema establishes your brand identity — logo, social profiles, contact info. LocalBusiness extends Organization for physical locations with address, openingHours, geo coordinates, and telephone. Essential for local SEO and Knowledge Panel appearances.

BreadcrumbList

Defines the navigation path to a page. Google uses this to display breadcrumb trails in search results instead of raw URLs, which improves both appearance and click-through rates. Always implement this on sites with hierarchical navigation.

WebApplication

For web-based tools and apps. Include name, url, applicationCategory, operatingSystem, and offers. Useful for SaaS products and online tools to appear in app-related searches.

Rich Results Eligibility

Not all schema types trigger rich results. Google supports a specific subset and has strict requirements for each:

  • Content must match. The structured data must accurately reflect the visible page content. Adding FAQ schema to a page without visible Q&A is a policy violation.
  • Required properties must be present. Each schema type has mandatory fields. Missing even one disqualifies the page from rich results.
  • Page quality matters. Pages with thin content, excessive ads, or spam signals won't receive rich results regardless of schema quality.
  • No guarantees. Even valid, high-quality schema doesn't guarantee display — Google's algorithms make the final decision based on query context, user intent, and device.

Testing & Validation

Always validate your structured data before and after deployment:

  1. Google Rich Results Test — validates whether your page qualifies for Google-specific rich results. Test live URLs or paste code directly.
  2. Schema.org Validator — checks general schema.org compliance against the full vocabulary specification.
  3. Google Search Console — the Enhancements section shows structured data errors, warnings, and valid items detected across your entire site. Monitor this regularly.
  4. Structured Data Linter — a more technical tool for complex schemas with nested types.

Implementation Best Practices

  • One schema per script block. Keep each schema type in its own <script type="application/ld+json"> block for clarity and easier debugging.
  • Match visible content. Never add data to schema that isn't reflected on the page — Google considers this spammy structured data and may issue manual actions.
  • Use absolute URLs. All URL properties (url, image, mainEntityOfPage) should be full, absolute URLs starting with https://.
  • Keep it updated. Structured data with outdated prices, incorrect availability, or old dates erodes trust and can trigger rich result removal.
  • Don't mark up hidden content. Schema must represent content visible to users. Hidden elements marked up with schema violate Google's guidelines.
  • Start with high-impact types. Prioritize Article, FAQ, BreadcrumbList, and Product/LocalBusiness based on your site type. These deliver the most visible search result enhancements.

Common Mistakes

  1. Missing required properties — skipping image on Article or price on Product makes the entire schema ineligible.
  2. Self-referencing reviews — marking up reviews for your own organization on your own site violates Google's policy.
  3. Invalid JSON syntax — trailing commas, unescaped quotes, or missing brackets silently break the entire block. Always validate JSON syntax.
  4. Stacking too many types on irrelevant pages — adding Recipe schema to a non-recipe page hoping for rich results is a policy violation.
  5. Using Microdata and JSON-LD for the same entity — this can cause duplicate or conflicting signals. Pick one format and use it consistently.

Try It Yourself

Generate valid JSON-LD structured data for Article, FAQ, Product, HowTo, Organization, and more — with all required and recommended properties pre-filled.

Schema Generator →

Frequently Asked Questions

No. Structured data makes your page eligible for rich results, but Google does not guarantee they will be displayed. Google's algorithms decide whether to show rich results based on page quality, content accuracy, user location, device type, and other factors. Pages with spam, thin content, or policy violations will not receive rich results regardless of schema markup. Think of structured data as a prerequisite, not a guarantee.
Google recommends JSON-LD as the preferred format for structured data. JSON-LD is easier to implement because it lives in a separate script block and doesn't require modifying your HTML markup. Google's own documentation and tools default to JSON-LD examples. While Microdata and RDFa are still supported, Google has explicitly stated its preference for JSON-LD in developer documentation.
Yes. A single page can include multiple schema types — for example, an Article schema, a BreadcrumbList schema, and a FAQPage schema on the same page. Each schema should be in its own separate script block with type application/ld+json. This is common practice and recommended when the page legitimately contains multiple types of structured content.
Invalid structured data will either be ignored by search engines or generate warnings in Google Search Console. Critical errors — like missing required properties — mean the schema won't be processed at all and the page won't be eligible for rich results. Non-critical warnings indicate optional properties are missing. Use Google's Rich Results Test to validate your markup before deploying.
Use two primary tools: Google's Rich Results Test (search.google.com/test/rich-results) checks whether your page is eligible for Google rich results and validates against Google's specific requirements. Schema.org's validator (validator.schema.org) checks general schema.org compliance. Always test with both — a page can be valid schema.org but still fail Google's stricter requirements.