Rich Results Test: how to check if a page qualifies
·4 min read
Google's Rich Results Test, at search.google.com/test/rich-results, fetches a URL or reads a pasted code snippet and reports which Google rich result types its structured data qualifies for. Run it with the default smartphone crawler, then open each detected item. Valid items are eligible, items with warnings are eligible but may show fewer details, and invalid items cannot appear as rich results. A pass makes the page eligible, and Google still decides on every search whether to show anything.
The test only reports search features Google still supports. For generic schema.org validation, read our guide to the Structured Data Testing Tool and the Schema Markup Validator.
How to run a Google rich results test
- Open search.google.com/test/rich-results. No Search Console access is needed.
- Choose URL and paste the address, or choose Code and paste the page's HTML or a JSON-LD block.
- Keep the smartphone crawler unless your desktop template serves different markup.
- Open each type under Detected items. Clicking an error jumps to the line in the code viewer.
The test reads JSON-LD, Microdata and RDFa. It ignores comments inside JSON-LD, but comments are not valid JSON-LD and Google warns they can cause errors elsewhere, so strip them.
When markup you can see in your CMS is missing, open View tested page. The HTML tab shows the code after JavaScript ran, so search it for application/ld+json. The screenshot exposes a cookie wall or bot challenge. Google says loaded resources can vary between runs, so a page that passes once and fails next time usually has a loading problem, not a markup one. Most AI crawlers skip JavaScript, as our guide to rendered source vs raw HTML explains.
What valid, warning and invalid items mean
Errors disqualify an item. Warnings may limit how it looks, but it stays eligible. A missing image, for example, still allows the rich result.
| Status | What to do |
|---|---|
| Valid items detected | Add recommended properties that show something useful |
| Valid items with warnings | Fix warnings tied to visible details, such as image, price or rating |
| Some are invalid | Add the missing required property or fix the value type first |
| Syntax errors detected | Fix the JSON. Google ignores the whole block until you do |
| URL cannot be crawled | Check robots.txt, noindex, DNS, SSL and server errors |
Syntax errors waste the most time. A trailing comma after the last property, or an unescaped double quote in a product name, breaks the parse before the type is read, so the test files it under "Syntax errors in items of unknown type".
What "No items detected" means
"No items detected" means the test found nothing of a type it reports on. It rarely means your markup is broken. Check these in order.
- The page has no markup. Plugins often skip pages and archives.
- The type earns no rich result. WebPage or a bare Person node is valid schema.org and earns nothing here.
- The type is retired. Google stopped showing HowTo results in September 2023 and FAQ results for every site on May 7, 2026. Our FAQ schema guide covers what to do with leftover markup.
- JavaScript didn't deliver it. Tag manager JSON-LD misses the render when a script is blocked or slow.
- Google got a different page. Bot protection or a geo redirect can serve Google-InspectionTool something else.
"URL cannot be crawled" is different. Google says a page blocked by robots.txt or noindex cannot be tested at all.
Why rich result eligibility doesn't mean Google shows it
Passing makes a page eligible, nothing more. Google's guidelines say valid markup "does not guarantee that your structured data will show up in search results". Google tailors results by signals such as search history, location and device, ignores markup that doesn't represent the main content, and can remove a site's eligibility with a structured data manual action without touching its rankings.
After the test passes, inspect the live URL in Search Console. URL Inspection runs on the same engine and its indexed view shows what Google stored. Request indexing to bring Google back sooner, then watch the rich result report for that type, which appears only once Google finds valid markup and shows a sample of items. A recrawl takes a few days to a few weeks.
How to test a staging page or a page behind a login
URL mode only works for pages an anonymous visitor can load. Google says resources behind a firewall or password are unavailable to the test.
Use code mode instead. In Chrome DevTools, right-click the <html> element in Elements and choose Copy, then Copy outerHTML. Paste that rendered DOM, injected JSON-LD included, into Code.
Or open a tunnel, as Google suggests. Cloudflare's quick tunnel needs no account and prints a public trycloudflare.com address:
cloudflared tunnel --url http://localhost:3000A staging robots.txt with Disallow: / still blocks the test, and anyone with the address can reach your machine, so stop the tunnel when you're done.
Check your schema markup before you run the test
Our Schema Markup Checker covers the step before the Rich Results Test. Paste a JSON-LD draft to check it before it ships, or give it a public URL and it reads every JSON-LD block in the HTML your server sends, lists the types present and recommends documented schema.org types the page is missing.
It flags invalid JSON, nodes with no @type, missing required and recommended properties under Google's documented rules, an Offer with no price, and retired types such as FAQPage and HowTo. It does not run JavaScript, validates JSON-LD only, and cannot tell you whether Google will show a rich result. A run costs 8 credits.