The Complete Schema.org Structured Data Guide
Everything you need to implement JSON-LD schema markup on any website — from WordPress and Shopify to custom HTML. Boost your rich results eligibility and improve how Google understands your content.
What is schema.org structured data?
Schema.org is a collaborative vocabulary created by Google, Bing, Yahoo, and Yandex to give search engines a standardised way to understand webpage content. When you add structured data markup to your pages, you are essentially speaking search engines' native language — telling them not just that a page exists, but exactly what type of content it contains.
For example, a recipe page without schema looks like a wall of text to a search engine. With schema markup, Google knows it contains a cooking time of 30 minutes, 4 servings, a 4.8-star rating from 200 reviews, and a list of ingredients. That data can then appear directly in search results as a rich snippet.
Schema markup does not live inside your visible page content. It is embedded in your HTML as metadata — typically as a JSON-LD script block — and is only read by search engine crawlers and other machines.
Why schema markup matters for SEO in 2026
Structured data has become one of the most reliable ways to differentiate your search listings. While it is not a direct ranking signal, its impact on visibility is significant and well-documented.
Rich results
FAQs, star ratings, breadcrumbs, and product details appear directly in SERPs, dramatically increasing real estate and CTR.
Knowledge Panels
Organization and Person schema helps Google generate Knowledge Panels for your brand — a powerful trust and authority signal.
AI and SGE visibility
Google's AI Overviews and Search Generative Experience pull heavily from structured data to attribute answers and sources.
Voice search
Schema markup improves the likelihood of your content being used in voice search answers, particularly HowTo and FAQ types.
E-E-A-T signals
Author and Person schema supports Google's Experience, Expertise, Authoritativeness, and Trustworthiness evaluation framework.
Local pack visibility
LocalBusiness schema with accurate geo-coordinates and opening hours supports local pack and map pack appearances.
JSON-LD: Google's recommended format
There are three ways to implement schema markup — JSON-LD, Microdata, and RDFa. Google officially recommends JSON-LD for all new implementations, and for good reason: it is clean, portable, and does not require you to modify your existing HTML structure.
A JSON-LD block is a <script type="application/ld+json"> tag that can be placed anywhere in your page's <head> or <body>. Here is a minimal Organisation example:
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Organization",
"name": "Your Company Name",
"url": "https://yourwebsite.com",
"logo": "https://yourwebsite.com/logo.png",
"contactPoint": {
"@type": "ContactPoint",
"telephone": "+1-800-555-0100",
"contactType": "customer service"
}
}
</script>You can stack multiple JSON-LD blocks on a single page. Each block is independent. Use one per schema type for cleaner code and easier maintenance.
The most valuable schema types for SEO
Schema.org defines hundreds of types, but a small subset drives the vast majority of SEO value. Prioritise these:
Organization / LocalBusiness
High priorityEstablishes your brand entity. Required for Knowledge Panel generation. LocalBusiness adds address, hours, and geo-coordinates for local SEO.
{
"@context": "https://schema.org",
"@type": "LocalBusiness",
"name": "Your Business",
"address": {
"@type": "PostalAddress",
"streetAddress": "123 Main St",
"addressLocality": "Austin",
"addressRegion": "TX",
"postalCode": "78701",
"addressCountry": "US"
},
"telephone": "+1-512-555-0100",
"openingHours": "Mo-Fr 09:00-17:00",
"geo": {
"@type": "GeoCoordinates",
"latitude": 30.2672,
"longitude": -97.7431
}
}FAQPage
High priorityOne of the highest ROI schema types. Generates expandable FAQ dropdowns directly in the SERP, doubling your search listing's vertical size.
{
"@context": "https://schema.org",
"@type": "FAQPage",
"mainEntity": [{
"@type": "Question",
"name": "What is your return policy?",
"acceptedAnswer": {
"@type": "Answer",
"text": "We accept returns within 30 days of purchase."
}
}]
}Product
High priorityEnables rich product snippets with price, availability, and star ratings in Google Shopping and organic results.
{
"@context": "https://schema.org",
"@type": "Product",
"name": "Product Name",
"image": "https://example.com/product.jpg",
"description": "Product description here.",
"offers": {
"@type": "Offer",
"price": "29.99",
"priceCurrency": "USD",
"availability": "https://schema.org/InStock"
},
"aggregateRating": {
"@type": "AggregateRating",
"ratingValue": "4.7",
"reviewCount": "124"
}
}Article / BlogPosting
Medium priorityRequired for Google Top Stories carousel eligibility. Include datePublished, author, and headline for best results.
{
"@context": "https://schema.org",
"@type": "BlogPosting",
"headline": "Your Article Title",
"datePublished": "2026-01-15",
"dateModified": "2026-02-01",
"author": {
"@type": "Person",
"name": "Jane Smith",
"url": "https://example.com/about/jane"
},
"image": "https://example.com/article-image.jpg",
"publisher": {
"@type": "Organization",
"name": "Your Site",
"logo": {
"@type": "ImageObject",
"url": "https://example.com/logo.png"
}
}
}BreadcrumbList
Medium priorityReplaces the plain URL in search results with a clean breadcrumb trail. Improves navigation context and CTR on inner pages.
{
"@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": "This Article",
"item": "https://example.com/blog/this-article"
}
]
}WordPress: plugins and shortcuts
WordPress is the easiest platform for schema implementation thanks to a mature plugin ecosystem. You rarely need to touch code.
Recommended plugins
Automatically adds Organisation, WebSite, Article, BreadcrumbList, and Product schema. The free tier includes more schema types than Yoast's premium. Schema settings live under Rank Math → Titles & Meta.
Handles Organisation, WebSite, Article, and BreadcrumbList automatically. FAQ and HowTo blocks in the Gutenberg editor automatically generate the corresponding schema. Premium adds more types.
Dedicated schema plugin with 20+ schema types, conditional display rules, and WooCommerce integration. Ideal when you need full control over schema on complex sites.
WooCommerce adds Product schema with price and availability by default. Pair with Rank Math or Yoast for AggregateRating and fuller product markup.
WordPress shortcut: manual JSON-LD without a plugin
If you prefer not to use a plugin, add JSON-LD directly to your theme's functions.php using wp_head():
add_action('wp_head', function() {
if (is_front_page()) {
echo '<script type="application/ld+json">' . json_encode([
'@context' => 'https://schema.org',
'@type' => 'Organization',
'name' => get_bloginfo('name'),
'url' => home_url(),
'logo' => get_site_icon_url(),
]) . '</script>';
}
});Rank Math's Schema Generator (Rank Math → Schema → Add New Schema) lets you build and preview any schema type visually with no code. It is the fastest path to correct schema on WordPress.
Shopify: apps and theme editing
Shopify themes include basic Product schema by default, but the default implementation often misses AggregateRating, brand, and offer details that unlock richer results.
Recommended Shopify apps
The gold standard for Shopify schema. Adds 15+ schema types automatically including Product, Organisation, BreadcrumbList, Article, and FAQPage. One-time payment, no ongoing subscription.
Adds Organisation, Product with reviews, and BreadcrumbList on the free tier. Premium adds Article, FAQPage, and custom schema types.
While primarily an image optimisation tool, TinyIMG adds product image schema and structured data for image search visibility.
Manual JSON-LD in Shopify themes
To add custom JSON-LD to a Shopify theme, edit theme.liquid (Online Store → Themes → Edit Code) and add your script block inside the <head> tag. Use Liquid variables for dynamic data:
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Organization",
"name": "{{ shop.name }}",
"url": "{{ shop.url }}",
"logo": "{{ 'logo.png' | asset_url }}"
}
</script>Wix and Squarespace
Wix
Wix automatically adds Organisation, WebSite, and BreadcrumbList schema for most sites. For additional schema types, use the Wix Structured Data Markup app or add custom JSON-LD via Settings → Custom Code → Add Code (place in the <head> section, all pages).
Wix's built-in SEO tools (Wix SEO Wiz) handle basic schema automatically. For product pages on Wix Stores, Product schema with price and availability is included by default.
Squarespace
Squarespace generates Organisation, WebSite, Article, and Product schema automatically on Business and Commerce plans. To add custom schema, go to Settings → Advanced → Code Injection and paste your JSON-LD in the Header section.
Neither Wix nor Squarespace gives you full control over their auto-generated schema. If the built-in schema has errors, you may need to override it with custom code injection. Always scan your pages with SchemaScan to verify what is actually being output.
Custom HTML and headless sites
For custom-built sites, Next.js, Nuxt, SvelteKit, or static HTML — you have complete control. The pattern is the same regardless of framework: render a <script type="application/ld+json"> tag in the document head with your JSON object.
Next.js example
// In your _document.js or page component
const schema = {
"@context": "https://schema.org",
"@type": "WebPage",
"name": "Page Title",
"url": "https://yoursite.com/page"
};
// In your JSX:
<script
type="application/ld+json"
dangerouslySetInnerHTML={{ __html: JSON.stringify(schema) }}
/>Dynamic schema for blog posts
For content-driven pages, generate schema dynamically from your CMS data:
const articleSchema = {
"@context": "https://schema.org",
"@type": "Article",
"headline": post.title,
"datePublished": post.publishedAt,
"dateModified": post.updatedAt,
"author": {
"@type": "Person",
"name": post.author.name,
"url": post.author.profileUrl
},
"image": post.coverImage,
"url": `https://yoursite.com/blog/${post.slug}`
};Pro tips and shortcuts
Use @id to link schema entities together
Give each schema entity a unique @id (a URL fragment works well, e.g. https://yoursite.com/#organization). Reference it from other blocks to build a connected entity graph. This helps Google understand relationships between your Organisation, WebSite, and content.
Priority order: FAQ → Product → Organisation → Article
If you are starting from zero, implement schema in this order for maximum immediate SEO impact. FAQPage and Product schema have the most visible rich result payoff. Organisation schema builds long-term entity authority.
Always include an image property
Google requires an image property for most rich result types. Articles need a 1200×630px image minimum. Products need at least one product image. Missing images are the most common reason rich results are withheld.
Test before deploying with a JSON linter
Paste your JSON-LD into jsonlint.com before adding it to your site. A single missing comma or unclosed bracket silently breaks the entire block. SchemaScan flags JSON-LD syntax errors, but catching them before deployment saves time.
Use sameAs to link your entity to external profiles
The sameAs property links your Organisation or Person entity to authoritative external profiles — LinkedIn, Twitter/X, Wikipedia, Wikidata, Crunchbase. This significantly strengthens your Knowledge Panel eligibility and entity authority.
Don't mark up content not visible on the page
Google penalises misleading schema — marking up FAQs that do not exist on the page, or product prices that differ from what is shown. Only mark up content that users can actually see. Schema must reflect visible page content.
Submit to Google Search Console after adding schema
After implementing schema, go to Google Search Console → URL Inspection → Request Indexing for your key pages. This accelerates recrawling and speeds up rich result appearances from weeks to days.
Use speakable schema for AI and voice readiness
The Speakable schema type marks sections of your content as suitable for text-to-speech. While not widely deployed yet, it positions your content well for voice search and AI assistant responses as these channels grow.
Frequently asked questions
What is the difference between JSON-LD, Microdata, and RDFa?
JSON-LD is a JavaScript snippet added to your page's head or body. It is Google's preferred format and the easiest to implement without touching your existing HTML. Microdata embeds schema attributes directly into your HTML tags. RDFa is an older attribute-based format. For most websites, JSON-LD is the best choice due to its simplicity and Google's official recommendation.
Does schema markup directly improve Google rankings?
Schema markup does not directly boost rankings as a ranking signal. However, it can significantly increase your click-through rate (CTR) by enabling rich results — star ratings, FAQs, breadcrumbs, and product details that appear in the SERP. Higher CTR leads to more traffic, which indirectly supports rankings over time.
What is the best schema plugin for WordPress?
Rank Math offers more granular schema control on the free tier, making it the best free option. Schema Pro is a premium dedicated plugin ideal for agencies managing complex sites. Yoast SEO is the most widely installed and handles the core schema types well on both free and premium tiers.
How do I add schema markup to Shopify?
Shopify themes include basic Product and Organization schema by default. For richer markup, edit your theme's Liquid files to inject JSON-LD directly, or install apps like JSON-LD for SEO or Schema Plus for SEO from the Shopify App Store.
How long does it take for Google to recognise new schema?
Google typically picks up new schema within a few days to two weeks after a page is recrawled. Submitting the URL via Google Search Console URL Inspection and requesting indexing can speed this up significantly.
What is the most valuable schema type for local businesses?
LocalBusiness schema (or a specific subtype like Restaurant, MedicalClinic, or LegalService) is the single most valuable type for local SEO. It communicates your address, phone, opening hours, and geo-coordinates directly to Google, supporting local pack and Knowledge Panel appearances.
Can I have multiple schema types on one page?
Yes — and you should. Most pages benefit from multiple schema blocks: a WebPage or Article type for the content, BreadcrumbList for navigation, and Organisation on every page to reinforce entity identity. Each JSON-LD block is independent. You can also use an @graph array to combine them in a single script tag.
Validate your schema markup now
Use SchemaScan to check whether your schema.org implementation is working correctly. Get an instant audit score and free fix-it report for any URL.
Run a free schema audit →