Schema markup is structured data you add to your HTML to tell search engines exactly what your content means — not just what it says. Google reads it and uses it to power rich results: star ratings, FAQ dropdowns, article bylines, sitelinks, breadcrumbs. It doesn't directly boost your ranking position, but it can meaningfully lift click-through rate by making your result visually distinct in the SERP.
What schema markup actually does
When Google crawls a page, it parses your HTML and makes educated guesses about your content. Schema removes the guessing. A BlogPosting schema tells Google: this is an article, written by this person, published on this date, about this topic. A FAQPage schema unlocks the expandable Q&A cards under your listing. A Product schema feeds the star rating and price callouts in Shopping results.
The upside is concrete. Pages with FAQ rich results routinely show CTR improvements because they take up more real estate. Review snippets make your listing stand out on pages dominated by plain blue links. The cost is low — a few dozen lines of JSON in your <head>. There's no good reason not to implement it.
JSON-LD vs Microdata vs RDFa — pick JSON-LD
There are three ways to add schema markup to a page:
- JSON-LD — a
<script>block in the<head>containing a JSON object - Microdata — attributes added directly to HTML elements (
itemscope,itemprop) - RDFa — similar to Microdata, different attribute names
Google recommends JSON-LD. It's the only format all three major crawlers (Google, Bing, Yandex) handle consistently. It sits in the <head> and doesn't touch your visible markup, which means you can update it without risking layout changes. Microdata was popular in 2013; ignore it unless you're maintaining legacy code. RDFa has legitimate use cases in government and academic publishing but is overkill for most sites.
Every example in this guide uses JSON-LD.
The 5 schema types that cover 95% of sites
Article / BlogPosting
Use Article for news and editorial content. Use BlogPosting for blog posts — it's a subtype that signals informal or personal publishing. Both unlock article-style rich results with byline, date, and publication logo.
Minimum required properties: headline, author, datePublished, image. Without image, Google typically won't render the article appearance in mobile results.
{
"@context": "https://schema.org",
"@type": "BlogPosting",
"headline": "How to Add Schema Markup to Your Site",
"author": {
"@type": "Person",
"name": "Jane Smith"
},
"datePublished": "2026-05-23",
"image": "https://example.com/images/schema-guide.jpg",
"publisher": {
"@type": "Organization",
"name": "Example Blog",
"logo": {
"@type": "ImageObject",
"url": "https://example.com/logo.png"
}
}
}
FAQPage
FAQPage powers the expandable Q&A accordion that appears under some search results. Each question must appear visibly on the page — Google will reject FAQ schema if the questions aren't readable in the HTML.
{
"@context": "https://schema.org",
"@type": "FAQPage",
"mainEntity": [
{
"@type": "Question",
"name": "What is schema markup?",
"acceptedAnswer": {
"@type": "Answer",
"text": "Schema markup is structured data added to HTML that helps search engines understand your content."
}
}
]
}
Product
Product schema feeds Google's Shopping-style rich results. Key fields: name, image, description, offers (with price, priceCurrency, availability). If you have reviews, add an aggregateRating object. Don't fake reviews — Google's spam policies are specific about review manipulation.
Organization
Organization schema belongs on your homepage or About page. It establishes your brand identity, logo, contact info, and social profiles. Google uses it to build the Knowledge Panel for your brand. Include sameAs with links to your Twitter, LinkedIn, and other profiles so Google can merge the signals.
LocalBusiness
A subtype of Organization designed for businesses with a physical location. Adds address, phone, hours, geo coordinates, and openingHoursSpecification. Feeds Google's local Knowledge Panel and can influence Local Pack eligibility. Always include @id pointing to your canonical homepage URL.
How schema.org and Google's implementation diverge
Schema.org is the vocabulary. Google is one consumer of it, and it only supports a subset of what schema.org defines. A few places this trips people up:
imagerequirements: Schema.org makesimageoptional onArticle. Google requires it for rich result eligibility.Reviewmarkup: Schema.org allows first-party reviews. Google's guidelines prohibit self-serving reviews and require reviews to come from independent sources.HowToandRecipe: Both are schema.org types. Google supports them for rich results but has specific property requirements you won't find on schema.org's own spec pages.@idfields: Schema.org doesn't mandate@idon most types. Google's documentation recommends it onOrganizationandLocalBusinessfor entity disambiguation.
When in doubt, cross-reference Google's structured data documentation rather than schema.org alone.
Where to place JSON-LD in your HTML
Drop the <script type="application/ld+json"> block anywhere in the <head>. Google can also read it in the <body>, but <head> placement is cleaner and avoids edge cases with JavaScript-rendered content.
<head>
<title>Your Page Title</title>
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "BlogPosting",
"headline": "Your Article Title"
}
</script>
</head>
You can have multiple <script type="application/ld+json"> blocks on the same page — useful when a page needs both Organization and BreadcrumbList. Keep each type in its own block rather than trying to nest them into a single object unless the spec explicitly supports that structure.
How to validate schema markup
There are two tools you should run after every implementation:
Google Rich Results Test (search.google.com/test/rich-results): paste your URL or raw HTML and see exactly which rich results Google considers your page eligible for. This is the canonical test — if it passes here, it passes.
Schema.org Validator (validator.schema.org): broader vocabulary check. Useful for catching typos and missing required fields that Google's test might not surface explicitly.
Common validation errors and their fixes are covered in the validation errors guide.
Platform-specific implementation guides
Schema markup is conceptually simple but the implementation mechanics differ by platform. Here are step-by-step guides for the most common setups:
-
How to add JSON-LD schema markup to Webflow CMS collection pages — Webflow's SEO tab doesn't include structured data. This guide covers the embed-block approach with CMS field interpolation.
-
How to add FAQ schema to WordPress without a plugin — Skip Yoast and RankMath. A Custom HTML block in Gutenberg is all you need.
-
How to add schema markup to a Next.js App Router site — The
metadataAPI doesn't cover JSON-LD. Here's the typed server-component pattern. -
How to add BlogPosting schema to a Shopify blog article — Shopify's docs focus on Product schema. This covers the missing
article.liquidsnippet. -
VideoObject schema markup for YouTube embeds — Get video carousels in search by marking up your embedded YouTube videos correctly.
-
Organization vs LocalBusiness schema on your homepage — Which type to use, when to nest them, and what happens if you pick wrong.
-
How to fix schema markup validation errors — The seven most common Rich Results Test failures and how to resolve each one.
Keeping schema in sync with your content
Schema markup is not a "set it and forget it" task. When you update an article's title, change a product's price, or add FAQ entries, the corresponding schema needs to update too. Stale schema — an offers.price that no longer matches the visible price, or a datePublished that differs from your displayed date — can trigger a manual action from Google's quality team.
Build your schema generation into your content pipeline wherever possible. CMS-driven sites should pull values from the same fields that populate the visible page, not from a separate manual field that has to be maintained independently. The platform guides above all follow this principle.
RankCrab's schema tools
RankCrab's schema generator handles Article, FAQ, Product, Organization, and LocalBusiness. Paste your values, click generate, copy the output. It produces clean, Google-validated JSON-LD with the required fields pre-populated and optional fields included where they help rich result eligibility.
RankCrab's on-page audit also checks for schema presence and flags common issues — missing required fields, stale dates, and schema types that don't match the page content type. If you're running a content-heavy site, the audit catches schema drift before Google does.