✧ Key takeaways
Schema markup tells Google what your content means — and it can unlock star ratings, prices, and FAQ dropdowns. What it is, when it matters, and how to add it.
Open a Google search and look at the results. Some have star ratings under them. Some show prices, or a dropdown of questions and answers, or cooking times. Those extras are not decoration, and they are not random. They come from schema markup — code on the page that tells Google what the content means. This guide explains what it is, when it is worth your time, and how to add it without breaking anything.
What schema markup actually is
Search engines read words. Schema tells them what the words are. Without it, Google sees the text '4.8' on your page and has to guess whether that is a rating, a version number, or a price. With schema, you label it: this is an aggregate rating, the value is 4.8, and it comes from 132 reviews. That label is the markup.
Technically, schema is structured data written in a shared vocabulary maintained at Schema.org — a project run jointly by Google, Microsoft, Yahoo, and Yandex. The vocabulary defines hundreds of types: Article, Product, Recipe, Event, FAQPage, LocalBusiness, and many more. You describe your page using those types, and search engines use the description to understand the page and, sometimes, to enhance how it appears in results.
What it does for you — and what it does not
The visible payoff is rich results: those enhanced listings with stars, prices, FAQs, breadcrumbs, or event dates. Rich results take up more space on the results page, and the extra information answers the searcher's question before they click. Pages with useful rich results tend to get clicked more often than plain blue links for the same query.
What schema does not do is just as important. It is not a ranking factor in the way backlinks or content quality are. Adding schema to a weak page will not make it rank. It will not guarantee a rich result either — Google treats markup as a strong hint and decides case by case whether to show the enhancement. And it cannot rescue content that does not deserve the enhancement: marking up review stars for a page with no reviews is a fast way to lose the rich result entirely, and possibly to draw a manual action.
The format: JSON-LD
There are three formats for adding schema — Microdata, RDFa, and JSON-LD. Use JSON-LD. It is a block of JSON placed inside a script tag in the page head, it keeps the markup separate from your visible HTML, and it is the format Google recommends. A basic Article example looks like this:
<script type="application/ld+json">{ "@context": "https://schema.org", "@type": "Article", "headline": "How to Back Up a WordPress Site", "author": { "@type": "Person", "name": "Mors" }, "datePublished": "2026-11-13" }</script>That is the whole idea. You are writing a small data record about the page, using type names and property names from Schema.org. Everything else is variations on the same pattern.
Which types actually matter for a small site
Schema.org defines hundreds of types. You need about six.
Article
For blog posts and news. It carries the headline, author, publish date, and featured image. If you publish articles, this is the baseline — add it to every post.
FAQPage
For pages with genuine questions and answers. This is the one that produces the expandable question dropdowns in search results. Only use it when the questions and answers are visible on the page, and only for questions readers actually ask.
Product and Review
For pages that sell or review a product. Product markup carries price, availability, and review scores; Review markup carries the rating and the reviewer. Only mark up reviews you actually wrote and prices you actually verified — the 'review stars on everything' trick is exactly what Google penalises.
HowTo
For genuine step-by-step instructions. HowTo markup can produce step-by-step rich results, which are useful for tutorials. Do not use it for a page that is not, in fact, a set of steps.
BreadcrumbList
For site navigation trails (Home > Guides > SEO). It tells Google how your site is structured and can replace the plain URL in results with a readable path.
Organization and LocalBusiness
For your about and contact pages. Organization markup carries your name, logo, and social profiles. LocalBusiness adds address, hours, and phone number — worth it if you serve a local area.
How to add it
There are three routes, and the right one depends on your setup.
Plugins. If you run WordPress, Rank Math and Yoast both add basic Article and FAQ schema automatically, and dedicated tools such as Schema Pro cover more types. Plugins are the fastest route, but check what they actually output — a plugin can add markup for things your page does not have, and that mismatch is your problem, not the plugin's.
Manual JSON-LD. For a static site or a custom build, write the JSON-LD yourself and paste it into the page head. It is ten lines for an article, and you control every field. Keep a template for each content type and fill it in when you publish.
Your CMS or theme. Many themes and headless setups add some schema automatically. Before adding anything yourself, view your page source and search for 'application/ld+json' — you may already have Article markup, and adding a second block creates conflicts.
How to test it
Never publish schema you have not tested. Google's Rich Results Test takes a URL or a code snippet and tells you which rich results the page is eligible for, plus every error and warning. The Schema.org validator checks the markup itself against the vocabulary. Run both, fix every error, and re-test. Warnings — a missing recommended field, for example — are less urgent than errors, but clean them up when you can.
After publishing, watch Google Search Console's Enhancements reports. They show which of your pages carry valid markup, which have errors, and whether Google is actually showing the rich results. Give it a few days after publishing — Search Console data lags behind the live site.
Common schema mistakes
Marking up invisible content. Every claim in your schema must appear on the page itself. FAQ markup for questions that are not on the page, review stars with no review text, and prices that appear nowhere in the visible content are all violations. Google checks, and the penalty is losing the rich result.
Using the wrong type. A blog post is an Article, not a Product. A service page is not a Recipe. Picking an eye-catching type because it produces a nicer rich result is the fastest way to get the markup ignored.
Duplicating markup. Two JSON-LD blocks describing the same page — one from your theme, one from your plugin — will conflict. Audit what your site already outputs before adding more.
Forgetting to update it. Prices change, events pass, FAQs get rewritten. Stale markup is worse than none, because it puts wrong information directly into search results. Treat schema as part of the page, and update it when the page changes.
Do you need it?
Honest answer: most small sites should add it, but it is not the first SEO job. If your pages are not indexed, or your content does not answer the query, schema will not save you — fix indexing and content first. Our guide to Core Web Vitals and the piece on how long a blog post should be cover the foundations that matter more.
Once the basics are in place, schema is a cheap win. Article and FAQ markup take minutes per page, they make your listings more useful in search, and they cost nothing to maintain. Start there, add Product and Review markup only where it is honest, and test everything before you publish.