The short answer
Schema markup is code, usually JSON-LD, that describes a page in a vocabulary search engines share. You check it with Google's Rich Results Test for Google features, the Schema Markup Validator for syntax, and Search Console's URL Inspection tool after publishing. Valid markup makes a page eligible for rich results, but Google does not guarantee they will appear.
Key takeaways
- Schema markup describes a page in a shared vocabulary; it makes a page eligible for rich results, it does not guarantee them.
- Google recommends JSON-LD, and also accepts Microdata and RDFa.
- Use the Rich Results Test for Google features and the Schema Markup Validator for syntax.
- Google's FAQ rich result stopped appearing in search from 7 May 2026, so FAQPage markup no longer earns a visible result.
- Markup must match content visitors can see; invented reviews, prices or events can lead to a manual action.
What schema markup is
Schema markup is code on a page that describes what the page is about in a standard vocabulary shared by search engines. A product page can say, in code, that it sells a named product at a stated price. An article page can name its author and publication date. A business page can give its address, opening hours and phone number.
The vocabulary comes from schema.org. The broadest type is Thing; more specific types sit underneath it, so a LocalBusiness is both a Place and an Organization. Google's own definition is short: structured data is "a standardized format for providing information about a page and classifying the page content".
What it gets you is eligibility for rich results: the stars, prices, breadcrumbs and event details that make a result stand out in Google Search. It is not a ranking factor. Google has stated that structured data by itself is not a generic ranking factor, and that it does not guarantee valid structured data will show up in search results. Treat markup as a way to make a good page easier to understand, not as a shortcut to the top of the results.
Which format to use
Google accepts three formats: JSON-LD, Microdata and RDFa. Google recommends JSON-LD when your site's setup allows it, because it sits in a separate script block instead of being woven through the page's HTML. That separation makes it easier to write, easier to check, and easier to keep in step with the visible content.
A JSON-LD block looks like this, for a bakery:
json
{
"@context": "https://schema.org",
"@type": "Bakery",
"name": "Crumb & Craft Bakery",
"address": {
"@type": "PostalAddress",
"streetAddress": "412 Pearl Street",
"addressLocality": "Denver",
"addressRegion": "CO",
"postalCode": "80203"
},
"telephone": "+1-303-555-0148",
"openingHours": "Mo-Sa 07:00-18:00",
"priceRange": "$$"
}
Every value in that block should also appear on the page itself. If the bakery's opening hours are only in the code, the markup breaks Google's quality guidelines.
How to check schema markup in four steps
Checking markup is a short routine, and it is worth running before and after every publish.
Step 1: Run the Rich Results Test on the page. Google calls it the official tool for testing structured data to see which Google rich results can be generated. Paste the live URL, or paste a code snippet if the page is not live yet. The test reports the Google-supported types it found, any missing required properties, and a preview of the result where one exists. Test the live URL rather than a snippet when you can, because a snippet cannot catch problems in how the page is served.
Step 2: Run the Schema Markup Validator. The validator at validator.schema.org checks all Schema.org-based structured data without Google-specific warnings. Use it for types Google does not turn into rich results, such as sameAs links on an Organization, and for catching syntax errors the Rich Results Test may not flag. A page can pass one tool and fail the other, because they answer different questions: the Rich Results Test asks what Google will show, the validator asks whether the code is correct.
Step 3: Confirm in Search Console after publishing. Open the URL Inspection tool and check the version of the page Google crawled. This catches the common case where markup exists in your code but not in what Googlebot received, for example when JavaScript injects it after the crawl, or when a caching layer serves an old page.
Step 4: Watch the rich result reports over time. Search Console reports errors across a whole template, such as a missing price on every product page after a site change. A single page can test clean while a template change breaks hundreds of others, so the report is where you catch that.
Which schema types to use
Google's Search Gallery lists the features it supports, and the list changes. Check the gallery before adding a new type, because a type that is valid Schema.org vocabulary may not be a Google rich-result feature. The types that cover most sites are:
| Page type | Schema type to use | What Google can show |
|---|---|---|
| Product page | Product with offers |
Price, availability, review stars |
| Article or blog post | Article |
Headline, author, date |
| Business homepage | Organization or LocalBusiness |
Name, address, hours |
| Event page | Event |
Date, venue, ticket details |
| Recipe page | Recipe |
Cooking time, ratings, image |
| Video page | VideoObject |
Thumbnail, duration |
| Any page | BreadcrumbList |
Breadcrumb trail in the result |
Use the most specific type that applies. A bakery is a Bakery, not a generic LocalBusiness, and a recipe is a Recipe, not an Article. Google's guidelines ask for the most specific applicable type and property names defined by schema.org.
Two types deserve a warning. FAQ rich results stopped appearing in Google Search from 7 May 2026, and Google removed the documentation on 15 June 2026, so FAQPage markup no longer earns a visible result. HowTo rich results were restricted to desktop in August 2023 and then removed there too. The types themselves remain valid vocabulary, but they buy nothing in Google results.
A worked example: checking a product page
Take a product page for a handmade ceramic mug priced at $38. The page shows the name, price, stock status and two customer reviews. Your check runs like this:
- Confirm the visible facts first: name, $38 price, "in stock" wording, and the two reviews all appear on the page.
- Write or review the
Productmarkup, withofferscarrying the $38 price, the currency, and availability, andaggregateRatingreflecting only the two reviews shown. - Paste the URL into the Rich Results Test. It should list a product rich result and flag nothing missing. If it reports a missing
priceorpriceCurrency, theoffersblock is incomplete and the page is not eligible. - Paste the same code into the Schema Markup Validator to catch syntax slips, such as a missing comma or a wrong type name.
- After publishing, open URL Inspection in Search Console and confirm the crawled page contains the markup.
If the mug goes out of stock, update both the page and the markup the same day. Markup that says "in stock" for a product visitors cannot buy is exactly the mismatch Google's quality guidelines are written to catch.
Common mistakes that break schema markup
- Marking up invisible content. Reviews, prices, events or offers that do not appear on the page. This is the fastest route to a manual action, which removes rich-result eligibility for the page.
- Using the wrong type. Marking a category page as a
Product, or a service page as anEvent. Google recommends marking up product pages rather than pages that list products. - Leaving out required properties. Each rich-result type has required properties in Google's documentation. Items missing them are not eligible for rich results, however correct the rest of the code is.
- Stale data. Prices, dates and availability that were right at launch and wrong six months later. Re-check markup whenever the page content changes.
- JavaScript-only markup on shopping pages. Google warns that dynamically generated markup can make shopping crawls less frequent and less reliable. Server-rendered JSON-LD is the safer choice for product pages.
- Blocking the page. Markup on a page blocked by robots.txt or marked noindex cannot earn a rich result, because Google will not show the page at all.
Glossary: the terms you will meet
- Schema.org: the shared vocabulary of types and properties that search engines use to understand pages.
- JSON-LD: a format for structured data written as a script block, recommended by Google.
- Microdata and RDFa: two other formats Google accepts, written inside the page's HTML.
- Rich result: an enhanced search result, such as stars or a price, generated from structured data.
- Rich Results Test: Google's tool for testing which rich results a page's markup can generate.
- Schema Markup Validator: the validator at validator.schema.org, which checks syntax and vocabulary without Google-specific warnings.
- Manual action: a penalty Google applies to a page's structured data when it breaks the guidelines; the page loses rich-result eligibility but keeps its ranking.
A checklist before you publish
- [ ] The markup uses JSON-LD and the most specific type for the page.
- [ ] Every value in the markup also appears in visible page content.
- [ ] All required properties for the rich-result type are filled in.
- [ ] The Rich Results Test shows the expected rich result with no errors.
- [ ] The Schema Markup Validator reports no syntax errors.
- [ ] Search Console's URL Inspection confirms Google found the markup on the crawled page.
- [ ] Prices, dates and availability in the markup match the page today, not last quarter.
Schema markup rewards accuracy more than ambition. A single correct Product or LocalBusiness block, checked with the tools above and kept in step with the page, does more for a site than a dozen types added in a hurry. For the other half of the visibility question, how Google reports what it found, see Google Search Console vs Google Analytics, what Google Search Console impressions mean, and whether ChatGPT is good for SEO. If you need help with the wider SEO work around it, Adziq's SEO services and the guide on SEO vs Google Ads cover the trade-offs.
Common questions
What is schema markup?
Schema markup is code added to a page that describes its content in the shared vocabulary at schema.org, for example that a page is a product, an article or a local business. Search engines read it to understand the page, and Google may use it to show a rich result.
Does schema markup improve rankings?
No, not directly. Google has stated that structured data by itself is not a generic ranking factor. Its value is eligibility for rich results, which can raise click-through rates, and clearer meaning for search engines and AI systems.
How do I check schema markup on a live page?
Paste the URL into Google's Rich Results Test to see which rich results Google can generate from it, then open the same page in Search Console's URL Inspection tool to confirm Google found the markup on the crawled version.
Why does the Rich Results Test pass but no rich result appears?
Google does not guarantee that valid structured data will show up in search results. Eligibility is only the first step; Google also weighs the page's quality, relevance and whether the feature fits the query.
Can I mark up content that is not visible on the page?
No. Google's quality guidelines require markup to be a true representation of the page content. Marking up hidden content, or adding reviews, ratings or prices that do not appear on the page, can lead to a manual action that removes rich-result eligibility.
Sources
- Introduction to structured data (Google Search Central)
- General structured data guidelines (Google Search Central)
- Search Gallery (Google Search Central)
- Rich Results Test (Google)
- Schema Markup Validator
- Schema.org vocabulary
Adziq sells marketing services and does not accept payment for placement in its articles. See our editorial policy.
