Topic

Schema markup

Everything you need to know about schema markup and JSON-LD: what it is, which types matter, how to implement it, and how to validate it — with guides for every major platform.

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:

  • image requirements: Schema.org makes image optional on Article. Google requires it for rich result eligibility.
  • Review markup: Schema.org allows first-party reviews. Google's guidelines prohibit self-serving reviews and require reviews to come from independent sources.
  • HowTo and Recipe: 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.
  • @id fields: Schema.org doesn't mandate @id on most types. Google's documentation recommends it on Organization and LocalBusiness for 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:

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.

Free tool
Schema markup generator
Generate valid JSON-LD in 60 seconds — no signup.
Try it

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.

Schema generated, validated, deployed.

Skip the JSON-LD copy-paste loop. RankCrab generates schema and audits every page for errors.