← Back to blog
Structured Data

Schema Markup Explained: What It Is and How to Generate It

Schema markup doesn't directly boost rankings, but it's the difference between a plain blue link and a rich result with stars, images, or an FAQ dropdown. Here's how it actually works.

By Rajhussain Kanani6 min read

What schema markup actually is

Schema markup is structured data — usually a <script type="application/ld+json"> block in a page's HTML — written in a shared vocabulary (schema.org) that tells search engines exactly what a piece of content is, instead of leaving them to infer it from plain text. A recipe, a product, an FAQ, a review, an event: each has its own schema type with its own expected properties, and a search engine that can read the markup doesn't have to guess.

What it does — and what it doesn't

Schema markup does not directly boost rankings. Adding it to a mediocre page won't make it outrank a better one. What it does do is make a page eligible for rich results — star ratings on a product, a recipe card with a photo and cook time, an FAQ dropdown right in the search result, breadcrumb trails instead of a raw URL. None of that changes the ranking position directly, but a richer, more visually distinct result at the same position reliably earns more clicks.

It's worth distinguishing this from the title and meta description, which control the plain-text headline and snippet every result gets by default. Schema markup only changes the result's presentation when it qualifies for a specific rich-result type — the two aren't alternatives, they stack, and a page missing either one is leaving a distinct, separate opportunity on the table.

Schema types most sites can actually use

  • Article — for blog posts and news content.
  • Product — price, availability, and review data for e-commerce pages.
  • LocalBusiness — address, hours, and contact info for local search.
  • Review and AggregateRating — star ratings shown directly in results.
  • BreadcrumbList — shows a page's site hierarchy instead of its raw URL.

A note on FAQPage: this type used to render an expandable question list directly in search results, but Google retired the FAQ rich result for all sites in May 2026. Marking up a genuine Q&A section with FAQPage is still valid, accurate structured data — it just no longer earns the visual SERP treatment it used to. If your only reason for adding it was that rich result, it's not worth the effort anymore; if the page already has real, substantive Q&A content, the markup itself does no harm.

A broken Product schema, fixed

Structured data errors are usually small and easy to miss reading top to bottom. Here's a Product block with two real problems:

{
  "@context": "https://schema.org",
  "@type": "Product",
  "name": "Trail Runner X2"
  "offers": {
    "@type": "Offer",
    "priceCurrency": "USD"
  }
}

A missing comma after "Trail Runner X2" breaks the JSON parser entirely — the whole block fails, not just that line — and even once the syntax is fixed, this Offer is missing price and availability, both required for Product rich-result eligibility. Fixed:

{
  "@context": "https://schema.org",
  "@type": "Product",
  "name": "Trail Runner X2",
  "image": "https://example.com/trail-runner-x2.jpg",
  "offers": {
    "@type": "Offer",
    "price": "129.00",
    "priceCurrency": "USD",
    "availability": "https://schema.org/InStock"
  }
}

Valid JSON, and every property Google's Product rich-result documentation actually requires is present — image, price, and availability alongside the name. This is the difference between markup that's technically present and markup that actually qualifies for anything.

Build ready-to-embed JSON-LD for any of these types with CheckSEO's Schema Markup Generator — no signup.

Generate schema markup

5 schema markup mistakes

1

Invalid JSON syntax

A single missing comma or unclosed bracket breaks the entire block — unlike a typo in visible text, a malformed JSON-LD script often fails silently, with no warning until you actually validate it.

2

Missing required properties

Each schema type has properties Google treats as required for rich-result eligibility — a Product schema without a price, for example, simply won't qualify even though the markup itself is technically valid.

3

Marking up content that isn't visible on the page

Google's guidelines require that structured data reflect what a visitor can actually see. Adding review stars via schema for reviews that don't appear anywhere on the page violates this and can trigger a manual action.

4

Using the wrong @type for the content

Tagging a blog post as Product schema, or a service page as an Article, confuses the very systems the markup exists to help — match the type to what the page actually is.

5

Never validating after publishing

A site redesign or template change can silently strip or break schema that was working fine before. Structured data has no visible symptom when it breaks — the only way to catch it is to check.

How Google actually reads a JSON-LD block

A common misconception is that structured data has to mirror the visible page layout exactly, in the same order. It doesn't — JSON-LD is parsed independently of the rendered DOM, as a separate data document that happens to live inside the page's HTML. That's exactly why it works well for describing things that don't map cleanly to a single visible block, like an event with a separate venue address, or a product with variant-specific pricing spread across a page's UI. The one hard rule, covered above, is that everything in the markup has to be substantively present somewhere on the page for a visitor to see — Google's guidelines call this "structured data must reflect the page's visible content," not "in the same DOM order as the markup."

For a page that's genuinely more than one entity — a product page that's also part of a breadcrumb trail, sitting inside an organization's catalog — multiple schema types can coexist using @graph, an array of separate typed objects in one JSON-LD block instead of forcing everything into a single nested structure. Most single-purpose pages don't need this; it's worth knowing about mainly so a page with a Product block and a separate BreadcrumbList block isn't mistaken for an error — two valid, independent types can legitimately sit side by side.

Validate what you generate

Once markup is live, run it through the Schema Markup Validator to confirm it parses and every required property is present — generating correct JSON-LD and confirming it stayed correct are two separate steps, and skipping the second one is how schema quietly breaks after a redesign.

Schema is additive, not a substitute for the page itself

It's worth stating plainly: no amount of correct structured data compensates for a page that doesn't actually answer what it claims to. Schema tells Google what a piece of content is, not that the content is good — a Product block on a page with a vague, unhelpful description doesn't make that description any more useful, it just labels it more precisely. Treat schema as the last step in publishing a page, applied to content that's already worth indexing, rather than a shortcut that makes weaker content perform better than it otherwise would.

Generate yours now

CheckSEO's Schema Markup Generator builds ready-to-paste JSON-LD for Article, Product, LocalBusiness, Event, Review, HowTo, and more — no need to hand-write the syntax.

Frequently asked questions

What is schema markup?

Structured data added to a page's HTML, usually as a JSON-LD script block, written in a shared vocabulary (schema.org) that tells search engines exactly what a piece of content is — a recipe, a product, an FAQ, a review — instead of leaving them to infer it from plain text.

Why is schema markup important for SEO?

It doesn't directly move rankings, but it makes a page eligible for rich results — star ratings, FAQ dropdowns, recipe cards, breadcrumbs — that stand out in search results and typically improve click-through rate at the same ranking position.

How do I know if my website has schema markup?

View the page's source and search for a <script type="application/ld+json"> block, or run it through a schema validator, which will list every structured data type it finds and flag anything invalid.

What tools validate schema markup?

Google's own Rich Results Test is the authoritative check for rich-result eligibility. CheckSEO's Schema Markup Validator covers the same ground — finding every JSON-LD block on a page and confirming it parses and has a valid @type.

How do I implement schema markup?

Generate the correct JSON-LD for your content type, paste it into a <script type="application/ld+json"> tag in the page's <head> or body, then validate it — a single missing comma or required property can invalidate the whole block silently.

Check your own site with the Schema Markup Generator.

Open Schema Markup Generator

More from the blog