The Rich Results Test: what it checks and what it does not
Use the Rich Results Test to see which rich results your page is eligible for and what fields are missing. It will not tell you whether Google will actually show them. This guide shows you how to run it, read it and what to fix on a small product site.
By Théophile Louvart, founder of Porteur · Updated 14 September 2026 · Markdown
What the Rich Results Test actually does
The Rich Results Test tells you which Google rich results your page is eligible for and why. It reads your rendered page and the structured data on it.
It lists the rich result types it detects on the URL and flags missing required fields as errors. It flags incomplete but optional fields as warnings.
It does not judge the quality of your content or your likelihood of ranking. Structured data is not a ranking factor in itself as of 2026.
If your page is eligible, Google may show a rich result. It is not guaranteed. Eligibility means you meet the technical rules, no more.
How to run the Rich Results Test on a URL or code
Open the tool
Go to search.google.com/test/rich-results. Choose URL or Code.
Test a live URL
Enter a full URL such as https://yourproduct.com/pricing. Click Test URL. The tool renders the page and finds structured data added by HTML or JavaScript.
Test a code snippet
Click Code, paste JSON-LD, Microdata HTML or RDFa HTML. Click Test Code. Use this when you draft markup before deploying.
Pick the device
Use the default. Mobile is fine for most sites. The tool renders like Googlebot does for that device.
Read the summary
You will see Detected structured data, Eligible or Not eligible per type, and a list of errors and warnings to fix.
Use the code tab when your CMS blocks production changes. Validate offline first, then ship it. After deploy, always test the live URL again.
How to read Eligible, Warnings and Errors
Eligible means your page meets the technical requirements for that rich result type. Google may show it when your page appears in results.
- Warnings are missing recommended fields. You are eligible, but you might show with fewer enhancements.
- Errors are missing required fields or invalid values. You are not eligible until you fix them.
- Not detected means the tool did not find data of a supported rich result type on the page.
Common errors the tool reports and what they mean on a small site:
- Missing required field: add the exact property Google requires for the type. Example: Product without offers, review or aggregateRating.
- Relative URL where an absolute one is needed: include https://yourproduct.com/logo.png, not /logo.png for logo or item URLs.
- Invalid date format: use ISO 8601 such as YYYY-MM-DD or YYYY-MM-DDThh:mm:ssZ for datePublished or priceValidUntil. These are typical formats, not measured data.
- Price as text with a currency sign: split it. Use a numeric offers.price and a code in offers.priceCurrency such as USD, not a single string with a currency sign.
- Rating out of range: use valid ranges. ratingValue must sit within bestRating and worstRating if you declare them.
- Content not visible: you marked up data users cannot see. Remove it or show the content. Policy violations are not eligible.
- Broken graph: two types are nested in a way that breaks the connections. Check @id and itemReviewed point to the right nodes.
A fixed page shows Eligible for the target type, with zero errors and ideally zero warnings. Example: /features shows SoftwareApplication, eligible, with price and rating set correctly.
What the Rich Results Test does not tell you
- It does not guarantee display. Rich results show at Google’s discretion for a given query.
- It does not check whether your markup matches your on-page content. You must make them consistent.
- It does not check all sitewide issues. It tests the one URL or snippet you give it.
- It does not measure performance or ranking. Use Search Console for impressions and clicks after shipping.
- It does not validate schema.org types that Google does not support with a rich result. Use the Schema Markup Validator for that.
Example: /blog/how-to-export-data has perfect Article markup. The test says Eligible. It still might show a plain result for “export data guide” if the query or layout does not trigger article enhancements.
Choose the right type and fields: quick checks by page
Pick the schema type that matches the page. Use JSON-LD where you can. Keep properties in sync with what the user sees. Here is what to add on common product-site pages as of 2026.
- Article, NewsArticle or BlogPosting for blog posts and guides: set headline, image, datePublished, dateModified and author with name and url. Provide several high-resolution images in 16:9, 4:3 and 1:1. Google truncates long headlines.
- Product for an ecommerce product page: name is required and at least one of review, aggregateRating or offers. For offers, add price, priceCurrency, availability and url. Add brand, sku and gtin if you have them. For merchant listing results, add shipping and return details with OfferShippingDetails and MerchantReturnPolicy.
- SoftwareApplication for a SaaS or app page: name, offers.price and offers.priceCurrency are required. Use 0 for a free app. Add a rating via aggregateRating or a review. Also add applicationCategory and operatingSystem.
- FAQPage for a visible FAQ section: mainEntity is a list of Question, each with an acceptedAnswer of type Answer that holds the text. Since August 2023, FAQ rich results show only for well-known government and health sites. Your markup remains valid and readable by assistants, but will likely not show a FAQ rich result.
- HowTo for step-by-step guides: HowTo rich results were removed from Google Search in September 2023. The markup does nothing in Search now, but it is harmless to keep.
- Organization for your footer or About page: set name, url, logo at least 112 by 112 pixels and crawlable, and sameAs links. Add contactPoint, address, founder and foundingDate if you have them. Since 2024 you can also place return policy and shipping at Organization for merchants.
- BreadcrumbList for breadcrumb navigation: itemListElement is a list of ListItem with position starting at 1, name and item for the URL. The final item may omit item. Breadcrumbs can replace the URL line in results.
- Review snippet for reviews of supported types such as Product or SoftwareApplication: use itemReviewed of a supported type, reviewRating with ratingValue and bestRating, and author with name. For aggregate ratings, use ratingValue and ratingCount or reviewCount. Self-serving reviews for your own LocalBusiness or Organization are not shown as rich results.
- WebSite with SearchAction for a sitelinks search box: this feature was removed in November 2024, so the markup earns nothing now.
Example: /pricing for a SaaS can use SoftwareApplication. Set offers.price: 0 if you have a free plan, or the actual monthly price and currency. Add aggregateRating if you show ratings on the page. The test should show SoftwareApplication eligible with no errors.
Implementation notes that save time
- JSON-LD is recommended. It is clean to generate and does not tangle with your HTML.
- Google also reads Microdata and RDFa. If your theme already has them, you can keep them.
- You can place JSON-LD in the head or the body. Both work.
- Google renders pages, so markup injected by JavaScript can be read. The Rich Results Test and schema.org validator render too.
- A page can carry several types in one @graph. That is common for Product with BreadcrumbList and Organization.
If you rely on client-side injection, confirm the data appears in the rendered HTML. Use the URL tab in the Rich Results Test to be sure. For critical fields like price and availability, prefer server-side output to avoid timing bugs.
Keep values stable and machine-friendly. Use ISO date formats, absolute URLs with https and numeric prices without currency signs. For availability, use schema.org values such as InStock or OutOfStock, not free text like available now.
When to use the Schema Markup Validator
Use validator.schema.org to check your schema.org syntax and graph when Google has no rich result for that type, or when you want to test across all schema.org terms without Google’s rules.
- It validates against schema.org. It does not tell you eligibility for Google rich results.
- It is ideal for types like Organization, WebSite, or custom types that Google does not enhance in Search.
- Paste code or a URL. It renders the page like Google’s test, so JavaScript-injected JSON-LD is found.
The older Structured Data Testing Tool was retired in 2020. Use the Rich Results Test for Google eligibility and the Schema Markup Validator for general schema checks. That split is by design and keeps you on the right tool for the job.
What happens after you ship: Search Console reports
After you deploy markup, Search Console scans your site and adds an enhancement report per rich result type it finds. You will see counts of valid, valid with warnings and invalid items across your site. It is sitewide, not per URL.
Open Search Console
Go to Search appearance or the enhancement reports area. Look for Product, Article, Breadcrumbs, Software App or FAQ reports, depending on what you shipped.
Fix issues in bulk
Click a report, open an error, read example URLs. Fix the template in your code. Re-test a sample URL in the Rich Results Test.
Validate the fix
In the report, click Validate fix. Google will re-crawl affected URLs and update the counts over the next days.
Watch performance
Use the Performance report to see impressions and clicks by Search appearance. Check if product snippets or breadcrumbs appear for your pages.
Example: you add offers to /product/widget and similar pages. The Product report shows 0 errors, 15 valid. The Performance report shows Search appearance: Product results rising for queries like “widget 2.0 price”. That is a working deployment on a store-sized site.
Debugging by example: from error to eligible
Three quick fixes you are likely to need on a product business site.
- Article on /blog/getting-started shows Error: Missing field author. Add author with a Person or Organization object. Include name and url. Re-test, it becomes Eligible with a warning if your image set is too small. Add 16:9, 4:3 and 1:1 images to clear it.
- SoftwareApplication on /features/data-export shows Error: Missing field offers.priceCurrency. You set price: 0 but no currency. Add offers.priceCurrency: USD and aggregateRating with ratingValue and ratingCount if you display ratings. Re-test, it is Eligible.
- Product on /store/widget shows Error: Invalid value in offers.availability. You used “in stock”. Replace with the schema.org value InStock. Re-test, you are Eligible and warnings drop to zero if brand and sku are present.
If the test says Broken graph, check your @id references. Example: your Review points itemReviewed at a node that has no @type Product. Set @type Product there or point to the right node. Use the Schema Markup Validator to sanity check the whole graph beyond Google’s rules.
Questions
Not by itself. Structured data is not a ranking factor as of 2026. It makes your page eligible for rich results and helps machines understand the page. The lift you see comes from better presentation, not a direct boost.
Eligibility is necessary, not sufficient. Google shows rich results when it decides they match the query and layout. It can also withhold them if it doubts the content or sees a policy issue. Keep markup accurate and consistent with what users see.
Use JSON-LD when you can. It is cleaner to generate and easier to maintain. Google also reads Microdata and RDFa, so you do not have to rewrite a working theme just for the format.
The URL test needs public access to fetch and render the page. Use the Code tab to validate snippets from staging. For live URLs behind a firewall, temporarily allow Googlebot or test from a tunnel if you must, then close it again.
There is no fixed time. After you deploy, Google will find the markup on crawl. When it sees a type across your site, it creates or updates the enhancement report. Allow days, not hours, for counts to settle.
Mark up pages where the type fits and the content is visible. Product pages, key features pages, and guides benefit most. Do not add types that do not match the page just to chase a result.
Sources
Check my site, free
Want a quick read on your schema and rivals on the same searches? Paste your homepage URL into our free check and get three findings in about thirty seconds.
- Free check, no card
- Read-only, your own accounts
- Readable by your agent
Read next
- GuideJSON-LD: how to write it, where to put it, how to test it
- GuideProduct schema: the fields Google reads and the ones it requires
- GuideSoftwareApplication schema for a SaaS: an example that validates
- GuideOrganization schema: the fields that feed your knowledge panel
- GuideBreadcrumbs: the navigation, the markup, and what Google shows
- GlossaryStructured data
- Free toolStructured data checker
- GuideSearch Console shows no data: what to check, and how long to wait