what is schema markup

What Is Schema Markup? A Clear, Practical Guide

Someone told you to “add schema markup” and didn’t explain what that means. Here’s the plain version.

Schema markup is code you add to a page’s HTML. It labels what’s on the page (a product, a review, an event, a business) in a language search engines understand.

It doesn’t change what a visitor sees. It changes what a search engine can confidently say about your page.

This guide covers what schema markup actually does, what it doesn’t do, and how to add it without wasting time on the wrong type.

What is schema markup, exactly?

Schema markup is one way of doing “structured data.” Structured data means organizing your content in a labeled format instead of plain sentences.

The labels come from Schema.org, a shared vocabulary built by Google, Microsoft, Yahoo, and Yandex together.

People use “schema markup” and “structured data” interchangeably. Close enough for everyday use, but here’s the real difference:

  • Structured data is the general idea: organize information so a machine can read it.
  • Schema markup is the specific set of labels, like price, author, or datePublished, that Schema.org gives you to do that.

Here’s a simple way to picture it. If you write “This laptop costs $899 and ships in 2 days,” a search engine has to guess which number is the price.

Fill in a form field labeled price: 899 instead, and there’s nothing left to guess.

One mix-up worth clearing up early: schema markup is not the same thing as Open Graph tags (the og: title, og: image properties you’ve probably also seen). Open Graph controls how a link looks when it’s shared on Facebook or LinkedIn; schema markup controls how a page is understood by search engines.

Most pages carry both, and they don’t conflict; they just do different jobs.

How schema markup works

Schema markup usually sits inside a <script> tag on the page, written in a format called JSON-LD.

A search engine reads that script separately from your normal text. It uses it to understand what the page is really about.

Here’s what it looks like for an event page:

<script type=”application/ld+json”>
{
“@context”: “https://schema.org”,
“@type”: “Event”,
“name”: “Downtown Small Business Marketing Workshop”,
“startDate”: “2026-11-04T18:00”,
“location”: {
“@type”: “Place”,
“name”: “Riverside Community Center”,
“address”: “412 Main St, Springfield, IL”
},
“offers”: {
“@type”: “Offer”,
“price”: “0”,
“priceCurrency”: “USD”,
“availability”: “https://schema.org/InStock”
}
}
</script>

None of that shows up as visible text. A visitor just sees a normal event page.

But a crawler no longer has to guess the date, price, or venue from the surrounding paragraph. It’s spelled out.

There are three ways to write structured data: JSON-LD, Microdata, and RDFa. Google recommends JSON-LD, and for good reason.

It sits in one block, separate from your visible HTML. That makes it far easier to add, update, or generate automatically without touching your page’s design.

Microdata and RDFa still work, but almost nobody starts a new project with them anymore. Stick with JSON-LD.

Why schema markup matters for SEO (and what it doesn’t do)

Let’s clear up the confusion here, because most guides are vague about it on purpose.

What it can do: get your page eligible for a rich result, meaning an enhanced listing with star ratings, prices, stock status, or an FAQ dropdown.

Rich results simply take up more space and tell searchers more before they click. That can lift your click-through rate.

what is schema markup

Comparison of a standard search result and a rich result with schema markup

Quick distinction worth making here: a rich result isn’t the same as a featured snippet (the box at the very top of the page that pulls a paragraph or list from your content). Featured snippets come from Google extracting your existing text, not from schema markup.

Rich results are what schema markup actually influences.

What it cannot do: move your ranking position. Google says this directly: structured data doesn’t affect rankings, only whether you’re eligible for certain visual features.

Google also won’t promise the rich result will actually show up, even with perfect markup. Its algorithm picks whatever it thinks helps that specific searcher.

So think of schema markup as a clarity tool, not a shortcut. Weak content with perfect markup is still weak content.

Strong content with the right markup, though, gets a real shot at standing out at the same ranking spot.

Does schema markup help with AI search visibility?

People ask this a lot now that AI Overviews and chat assistants shape how people find things.

Short answer: it’s not required, it’s not proven to help, but it doesn’t hurt either.

Google has said plainly that no special schema markup is needed to show up in its AI features. Its guidance on AI search does mention keeping structured data consistent with your visible content.

But that’s listed as one small piece of general SEO advice, not a dedicated AI trick.

Bottom line: add schema markup because it’s good practice, not because someone called it an “AI SEO hack.”

If anyone promises you’ll get cited in ChatGPT or AI Overviews because of schema markup, be skeptical. Nobody, including Google, has published proof that’s how it works.

Common types of schema markup

Schema.org lists hundreds of types. Most sites only ever need a handful.

Here’s what each one actually does, with an example of the payoff. If you’ve got a page type not covered here (job postings, courses, software apps), Google’s full structured data gallery covers dozens more.

Organization markup

Use this on your homepage or about page. It tells Google your business name, logo, address, and contact details, which can shape a knowledge panel when someone searches your brand.

what is schema markup

Organization schema feeds a knowledge panel with logo, address, phone, and hours.

You’ll need: name, logo, URL, and ideally sameAs links to your real social profiles. One block on your homepage covers your whole site.

LocalBusiness markup

If you have a physical location, this is the one that matters most. It confirms your address, hours, and phone number for local search and Maps.

what is schema markup

LocalBusiness schema supports local search results with ratings and hours

You’ll need: name, address, telephone, and openingHoursSpecification. Use the most specific subtype that fits (Restaurant, Store, Dentist) instead of the generic LocalBusiness when one exists.

Article markup

Use this on blog posts and news content. It gives search engines your headline, author, and publish date, which supports richer listings and Top Stories eligibility.

what is schema markup

Article schema supporting a Top Stories style listing

You’ll need: headline, datePublished, dateModified, and author. Keep dateModified current; a stale date here undercuts the freshness signal you’re trying to send.

Review and AggregateRating markup

This one comes with a catch most guides skip. It has to describe something you don’t control the content of.

You can’t mark up your own testimonials with Organization schema and expect star ratings to appear. Google excludes self-authored reviews of your own business from that rich result on purpose.

Products aren’t the only thing this applies to. Google supports review snippets for local businesses, recipes, movies, books, and software apps; the same don’t-review-yourself rule applies to all of them.

what is schema markup

Review schema showing a star rating and pros/cons snippet on a search result.

You’ll need: the item being reviewed, a reviewRating value, and the reviewer’s name. Skip this type entirely if your only reviews live in a third-party widget you don’t control the code for.

Product markup

Use this on a page selling something directly, with a working checkout. It’s what lets price, stock status, and star ratings show up next to the link instead of just a title and description.

what is schema markup

Product schema showing price, stock status, and ratings on a shopping search

You’ll need: name, image, and a nested offers block with price, priceCurrency, and availability. Every one of those has to match what’s actually on the page.

Offer/merchant listing markup

This is Product markup’s more detailed cousin, used specifically for checkout-ready listings. It adds the shipping cost, return window, and delivery timing that a plain product description leaves out.

what is schema markup

Offer schema adds shipping, returns, and delivery details to a merchant listing.

You’ll need everything Product markup needs, plus shippingDetails and hasMerchantReturnPolicy. Use this instead of plain Product markup once a page actually has a working “buy” button.

Recipe markup

Use this on a recipe page, and be specific about ingredients, prep time, and ratings. Get this right, and your listing can show a photo, a star rating, and the time it takes to cook, right there in the results.

what is schema markup

Recipe schema builds a recipe card with photo, rating, and prep time

You’ll need: name, image, recipeIngredient, recipeInstructions, and totalTime. Skip aggregateRating unless the ratings shown are genuinely from readers, not made up.

Event markup

Use this for a page with a specific date, venue, and (if any) ticket price. It’s the type most likely to show up exactly as written, since dates and locations are unambiguous.

what is schema markup

Event schema showing date, venue, and price on a search result

You’ll need: name, startDate, location, and offers if there’s a price. If the event gets rescheduled or cancelled, update eventStatus immediately; this is one of the few types Google checks for staleness aggressively.

FAQPage markup

Use this on a page where questions and answers are visibly written out, word for word. It can turn your listing into an expandable FAQ dropdown.

what is schema markup

FAQPage schema shown as an expandable FAQ list under a search result

You’ll need: a mainEntity array of Question items, each with an acceptedAnswer. Copy the wording exactly from the visible page; don’t summarize or rephrase it in the markup.

BreadcrumbList markup

This tells search engines where a page sits in your site, like Home > Laptops > Gaming Laptops. It replaces a raw URL with a readable path in the search result.

what is schema markup

BreadcrumbList schema replaces a raw URL with a readable path

You’ll need an itemListElement array, each item with a position, name, and item URL. This one’s easy to generate automatically from your site’s own navigation structure.

Two more examples, in code

You already saw a full Event example earlier in this guide. Here are two more of the most commonly used types, written out in full so you can see exactly what real JSON-LD looks like beyond a single sample.

Organization markup, the kind you’d put on a homepage:

<script type=”application/ld+json”>
{
“@context”: “https://schema.org”,
“@type”: “Organization”,
“name”: “Your Business Name”,
“url”: “https://www.yourwebsite.com”,
“logo”: “https://www.yourwebsite.com/logo.png”,
“sameAs”: [
“https://www.linkedin.com/company/yourbusiness”,
“https://www.instagram.com/yourbusiness”
] }
</script>

Product markup, the kind you’d put on a page with a working checkout:

<script type=”application/ld+json”>
{
“@context”: “https://schema.org”,
“@type”: “Product”,
“name”: “Wireless Noise-Cancelling Headphones”,
“image”: “https://www.yourwebsite.com/images/headphones.jpg”,
“description”: “Over-ear wireless headphones with active noise cancellation.”,
“offers”: {
“@type”: “Offer”,
“priceCurrency”: “USD”,
“price”: “149.99”,
“availability”: “https://schema.org/InStock”
}
}
</script>

Need more than these three? The downloadable code file included with this guide has ready-to-paste JSON-LD for all ten types covered in this guide, including Offer/merchant listing, Recipe, Review, FAQPage, Event, and BreadcrumbList.

How to add schema markup to your website

You don’t need to mark up everything on every page. Match the type to what the page actually does, then follow this order:

  1. Figure out the page’s main purpose. A product page with a checkout gets Product/Offer markup. A homepage gets Organization markup. Don’t stack five types on a page that’s really about one thing.
  2. Write or generate the JSON-LD. There are four realistic ways to do this; pick whichever fits your setup:
    • By hand: copy one of the examples in this guide (or the code file included with it) and edit the values directly. No tools needed; works for any site.
    • With an AI tool: describe the page and ask for JSON-LD in the type you need. Fast, but always check the output against the real page; AI tools invent properties and prices that were never there.
    • With a WordPress plugin: most SEO plugins (Yoast, Rank Math, and similar) generate basic schema automatically from fields you’re already filling in, no extra code required.
    • With Google’s Structured Data Markup Helper: paste in a URL, tag the relevant text on the page by hand, and the tool builds the JSON-LD for you. Slower than a plugin, but useful for a one-off page with no plugin support.

what is schema markup

  • Setting the schema type in an SEO plugin’s Schema tab
  1. Drop it into <head> or <body>. It doesn’t need to sit near the content it describes. It just needs to be on the same page.

Test it before publishing. Run the page through Google’s Rich Results Test. Use the Schema Markup Validator if you just want to confirm the code itself is valid.

what is schema markup

  • Running a page through the Rich Results Test and getting a valid result
  1. Keep an eye on it. Search Console’s “Enhancements” reports flag errors on live pages before they quietly cost you a rich result. For a one-off check on a single live URL, use Search Console’s URL Inspection tool instead; it’s faster than digging through the site-wide report.

what is schema markup

  • Search Console Enhancements report showing valid items versus items with errors.

Common schema markup mistakes to avoid

Most schema problems aren’t typos. They’re violations of Google’s quality rules that quietly disqualify otherwise-valid code:

  • Marking up something that isn’t on the page. If your code says $49 and the page says $59, that reads as misleading, not just stale.
  • Using the wrong type. Google’s own examples call out labeling how-to instructions as a “recipe,” or a livestream as a “local event.”
  • Skipping a required property. Miss one and the whole item can lose its rich result, even if everything else checks out.
  • Marking up your own testimonials as reviews. This won’t earn stars, and it can trigger a manual action if it looks intentional.
  • Letting markup go stale. Old prices or outdated hours are treated as a quality signal, separately from whether your visible page is current.
  • Not retesting after site changes. A CMS update or plugin conflict can break your JSON-LD with zero visible warning.
  • Adding more than you need. If a property doesn’t genuinely apply, skip it rather than filling it with placeholder text.
  • Letting your schema drift from your other listings. If your address or hours differ between your LocalBusiness markup, your Google Business Profile, and your social pages, that inconsistency undermines the trust all of them are supposed to build.

Checking schema markup across a whole site

The Rich Results Test and Search Console cover one page or one property at a time, which works fine for a handful of pages. Once you’re past a few dozen pages, checking each one by hand gets impractical.

For larger sites, most SEO audit platforms include a structured data or markup score as part of a broader site crawl, flagging every page with invalid or missing schema in one pass instead of one URL at a time. If you already use an SEO tool for technical audits, check whether it has this built in before building a manual process from scratch.

Do you actually need schema markup?

Not every page benefits the same amount. Here’s where to spend the time and where to skip it.

Worth prioritizing:

  • Product and e-commerce pages, since price and availability directly drive purchase decisions
  • Recipes, how-tos, and events, since these rich results are visually distinct and well supported
  • Local business pages, for local pack and Maps accuracy
  • Review and comparison content, where pros/cons and ratings carry real weight
  • Your homepage, with one-time Organization markup

Fine to skip for now:

  • Low-traffic internal pages with no matching rich result type
  • Any content you can’t realistically keep accurate over time
  • Anything you’d be tempted to mark up with details that aren’t genuinely on the page

If you’re short on developer time, start with Organization markup sitewide. Then add Article or Product markup to whichever page type actually drives your traffic.

That’s a better two hours than trying to mark up everything at once.

Here’s what that looks like in practice. Say you run a five-page site for a local bakery: a homepage, a menu page, an about page, and two blog posts about seasonal specials.

Organization markup on the homepage, LocalBusiness markup wherever your address and hours live, and Article markup on the two blog posts cover almost everything worth doing. The menu page probably doesn’t need schema at all unless people can order from it directly.

Once that’s done, run your key pages through the Rich Results Test. It’s free, it takes a couple of minutes per page, and it usually turns up a few easy wins.

FAQs

Is schema markup the same as structured data?

Not quite. Structured data is the general concept; schema markup is the specific Schema.org vocabulary used to do it. Most people use the terms interchangeably, and that’s fine in casual conversation.

Do I need a developer to add schema markup?

Not always. WordPress and Shopify SEO plugins generate basic schema automatically. Anything custom or nested, like a review layered inside a product, usually needs manual JSON-LD.

Will schema markup guarantee rich results?

No. Google makes markup eligible for a rich result, not guaranteed to get one. It can still choose a plain text result even when your code is perfectly valid.

Can schema markup hurt my SEO?

Not directly; it isn’t a ranking factor either way. But misleading structured data can trigger a manual action that removes rich result eligibility until you fix it.

How is JSON-LD different from Microdata and RDFa?

All three work, but JSON-LD is one clean script block instead of scattered HTML attributes. That makes it easier to generate and maintain, which is why Google recommends it for new projects.

What tools can I use to check my schema markup?

Google’s Rich Results Test checks both validity and rich-result eligibility. Search Console’s Enhancements report tracks ongoing status across your whole site.

Share Article

Leave a Reply