Two pages, same topic, same quality of writing. One shows up in Google as a plain blue link. The other shows a star rating, a price and a stock status, and takes up noticeably more space. The second page did one extra thing: it described itself to Google in a language Google can parse without guessing.
That language is schema markup. It will not make a bad page rank, and anyone promising otherwise is selling something. What it does is make a page eligible for richer search results, help Google understand entities and relationships rather than just words, and — increasingly — make your content usable by AI systems that summarise rather than link. This guide covers what to add, in what order, and how to check it worked.
What schema markup actually is
Schema markup is structured data: a block of machine-readable code that labels what the things on your page are. Not "here is some text about a recipe" but "this is a Recipe, it takes 40 minutes, it has these ingredients, it was rated 4.6 by 89 people."
Three terms people mix up:
- Schema.org — the shared vocabulary. A dictionary of types like Article, Product, LocalBusiness, FAQPage and their properties.
- Structured data — the general concept of marking up content in a machine-readable way.
- JSON-LD — the format to use. A <script type="application/ld+json"> block, usually in the <head>.
Use JSON-LD. The older formats, microdata and RDFa, tangle markup into your HTML and break every time someone touches the template. JSON-LD sits in one block, separate from the visible page, and is what Google recommends.
Schema does not tell Google your page is good. It removes the work of Google figuring out what your page is about — and removing ambiguity is worth more than it sounds.
What you get for it
Be clear-eyed about the return. Schema markup gives you three things.
Rich results. Stars, prices, breadcrumbs, event dates, recipe times, job details. These take more space in the results and tend to earn more clicks — not because ranking improved, but because the listing is more useful and more visible. This is the immediate, measurable benefit.
Entity understanding. Markup connects your content to known things — an organisation, an author, a place, a product. Over time this helps Google associate your site with a topic rather than a set of keywords. Slow, compounding, hard to attribute.
Machine readability beyond search. AI assistants, voice results and aggregators all parse structured data more reliably than prose. As more discovery happens through summarisation rather than ten blue links, being unambiguous about what you are matters more.
What it does not give you: a ranking boost. Google has said this repeatedly and the evidence agrees. Sites that add schema often see more traffic, but through click-through rate, not position.
Finally know what’s actually working.
Track reach, engagement, and ROI across every channel in one dashboard. 15-day free trial, no card required.
See your analytics →The five types most sites need
Start here. This covers the majority of the available value for most businesses.
1. Organization
One block, site-wide, usually on the homepage. Your name, logo, URL, social profiles, contact details. It is what feeds the knowledge panel and helps Google treat your brand as an entity rather than a string of characters.
Include sameAs with links to your verified social profiles and any authoritative listing. This is how Google connects the accounts to the brand.
2. WebSite with SearchAction
Small block on the homepage. Google retired the sitelinks search box in late 2024, so the SearchAction part no longer earns anything visible, but WebSite markup is still one of the signals Google uses to choose the site name shown in results. Two minutes of work.
3. BreadcrumbList
Can turn the ugly URL in your search listing into a readable path — Home › Blog › SEO › Schema Markup — on desktop results (Google stopped showing breadcrumbs on mobile results in 2025). Helps Google understand your site hierarchy either way. Add it to every page that sits below the top level.
4. Article or BlogPosting
For every editorial page. Headline, description, publish date, modified date, author, publisher, image. The dateModified field matters more than people think — it is part of how freshness gets assessed, and it is one of the most commonly wrong fields on the web because templates set it once and never update it.
5. FAQPage
For pages with genuine question-and-answer sections. The eligibility rules have tightened — since 2023 Google shows FAQ rich results only for well-known, authoritative government and health sites — but the markup still helps comprehension, and the discipline of writing real questions improves the page regardless.
Two rules: the questions and answers must be visible on the page, and they must be real questions people ask. Marking up invented questions to farm space is the behaviour that caused the rules to tighten.
Then, depending on what you do
- Product — name, price, currency, availability, reviews. Non-negotiable for ecommerce; the price and stock status in the listing change click behaviour materially.
- LocalBusiness — address, hours, phone, geo coordinates. Pairs with your Google Business Profile; the two reinforce each other.
- Event — dates, location, ticket availability.
- VideoObject — for pages whose main content is video. Enables the video thumbnail in results.
- Recipe — for genuine recipes. (Google no longer shows HowTo rich results, so HowTo markup is not worth prioritising.)
- SoftwareApplication — for apps and SaaS, with pricing offers.
Getting it onto the page
Three routes, in descending order of how well they hold up.
Template-generated, from your actual data. The right answer. Your CMS or framework builds the JSON-LD from the same fields that render the page, so the markup cannot drift out of sync with the content. If your publish date changes, so does the markup, automatically.
A plugin or module. Fine for WordPress and similar. Check what it outputs rather than trusting it — many plugins emit markup for fields you never filled in, which produces warnings.
Hand-written per page. Works for a homepage or a pricing page. Does not scale, and hand-written blocks are where stale data lives.
The failure mode in all three is the same: markup that claims something the page does not show. A rating in the JSON-LD with no reviews on the page is a manual-action risk, not a clever shortcut.
Nest it, do not scatter it
Rather than five separate script blocks, use one @graph array with @id references linking the entities — the Article references the Organization as publisher, the BreadcrumbList references the page. It is cleaner, avoids contradictions, and is how most well-built sites do it now.
Testing, and what the errors mean
Two tools, both free, both worth using before you ship.
The Rich Results Test tells you which rich result types the page is eligible for. This is the one that answers "will this actually do anything."
The Schema Markup Validator checks the syntax against schema.org without Google's eligibility filter. Use it when the Rich Results Test says nothing is eligible and you want to know whether the markup is even valid.
Then, after deployment, Search Console's Enhancements reports show what Google saw across the whole site. This is where you catch the template bug that broke 400 pages, which no per-page test will find. Our Search Console guide covers the wider reporting routine, and technical SEO basics covers the other site-wide checks.
Common errors and what they mean:
- "Missing field 'image'" — usually a warning, not an error. Rich results may still work, but adding it improves eligibility.
- "Invalid object type for field 'author'" — you passed a string where a Person or Organization object is expected. Very common.
- "Either 'offers', 'review' or 'aggregateRating' should be specified" — Product markup without commercial detail. Add price and availability.
- "Duplicate field" — two blocks describing the same entity differently. This is what @graph prevents.
Plan, approve, publish — together.
A shared calendar, approvals, and roles so your whole team ships on time. 15-day free trial, no card required.
Try Skyfliq free →What a real block looks like
For an article, the minimum that does the job — one @graph, three entities, everything cross-referenced:
- The Organization, with an @id of https://example.com/#organization, its name, logo and sameAs links.
- The BlogPosting, with headline, description, datePublished, dateModified, an image, an author object, and publisher pointing at that Organization @id rather than repeating it.
- The BreadcrumbList, with a position, name and item for each level.
The cross-referencing is the part people skip. Repeating your organisation details inside every article block works, but it means a change to your logo URL has to propagate through every page. Declaring it once and referencing the @id means it does not.
A second thing worth getting right: headline should match the visible H1, not the title tag, so the markup describes what a visitor actually sees.
Five mistakes worth avoiding
Marking up content that is not on the page. The most serious one. If the FAQ answers are only in the JSON-LD, that is cloaking and it gets penalised.
Fake or aggregated ratings. Self-serving review markup — your own star rating on your own product page, with no verifiable reviews — has been a manual-action target for years.
Stale dates. A dateModified that never changes tells Google your content was never updated. If you refresh a page, the field must move.
Marking up everything. Schema on your privacy policy achieves nothing. Spend the effort on pages that have a rich-result type worth earning.
Assuming markup guarantees the rich result. Eligibility is not entitlement. Google decides per query whether to show it, and for some types only for sites it considers authoritative.
A sensible rollout
If you are starting from nothing:
- Week one: Organization, WebSite and BreadcrumbList site-wide. Low effort, applies everywhere.
- Week two: Article or BlogPosting across editorial templates, with dateModified wired to the real field.
- Week three: the type specific to your business — Product, LocalBusiness, Event, SoftwareApplication.
- Week four: FAQPage on the pages that genuinely have questions, then check the Search Console Enhancements reports and fix whatever the site-wide view surfaces.
Then leave it alone and check monthly. Schema is infrastructure, not a campaign — the value is in it being correct and staying correct, not in adding more of it.
Turn followers into customers.
Capture leads, nurture them by email, and close — all where you already post. Free for 15 days, no card required.
Start free →The realistic expectation
Adding schema markup to a site that has none typically produces a modest, steady lift in click-through rate on the pages that earn rich results, and no change in position. That is a good return for a few days of work that then keeps paying, but it is not a growth strategy on its own.
Do it because it removes ambiguity about what you are — and because the systems reading your site are increasingly not people.
Related guides: On-Page SEO: The Practical Checklist for 2026