Fixing Pages That Are Eligible for Rich Results but Never Show Them
Your page passes the Rich Results Test, Search Console lists it as valid, and yet the listing in Google is a plain blue link with no stars, price or image.
That gap is common and it has a short list of causes: the markup sits on a URL Google does not treat as the main one, Googlebot sees a different page from the one you tested, a policy rule quietly rules it out, or Google simply does not think the enhancement helps that search. This guide shows how to tell which applies to you and what you can change.
Why eligible is not the same as shown
The Rich Results Test answers a narrow question: if Google wanted to show an enhanced listing for this URL, does the markup contain what the feature needs? It does not answer whether Google will want to. That second decision happens later, separately, and for each search.
When someone searches, Google builds a results page from many candidate listings. For each one it decides whether to add an enhancement it has on file for that URL. The decision takes in the wording of the query, the device, the country and language, what other features are already on the page (a map pack, shopping units, a video block), and Google's view of how trustworthy and useful the page and site are. Google's own documentation says that using structured data makes a feature possible but does not guarantee it will appear.
So a page can be eligible and still plain for three quite different reasons:
- A technical gap you cannot see in the test. The markup is on a URL Google does not index, or Googlebot gets a page without it. These are fixable and often the explanation for a whole template.
- A policy gap. The markup is well formed but describes something the feature does not allow, such as reviews of your own business or content visitors cannot see. Also fixable, but by changing what you mark up.
- A selection gap. Everything is correct and Google still chooses not to show the enhancement for that query. You can influence this over time, but not switch it on.
Working through them in that order matters. People often jump straight to rewriting content when the real problem is a canonical tag pointing at a different URL, which no amount of content work would fix.
Getting reliable evidence first
Before changing anything, find out whether the listing is really plain for the people who matter. Searching for your own page is a poor test, for several reasons:
- Results differ by location, device and signed-in state. A recipe carousel that appears on a phone may not appear on a desktop at all.
- A
site:search is a special kind of query. Google often shows listings there without the enhancements it uses for normal searches, so a plain result undersite:example.co.ukproves nothing. - Searching the exact page title is not how customers search. Rich results are chosen per query, and a title search may not be the kind of query that triggers the feature.
Search Console gives you Google's own record instead. In the Performance report, open Search appearance and look for an entry such as Product snippets, Merchant listings, Review snippet, Recipe rich results or Event listing. Filter by that appearance and then by page. If the page has any impressions under that appearance, it is being shown with the enhancement for some searches, just not the ones you tried yourself.
| What Search Console shows | What it usually means | Where to look next |
|---|---|---|
| Page listed as valid in the enhancement report, impressions under the search appearance | It is shown, but only for some queries or devices | Which queries carry the appearance; improve the page for the ones that do not |
| Valid in the enhancement report, no impressions under the appearance, normal impressions overall | Indexed and ranking, enhancement not chosen | Policy checks, completeness, selection factors |
| Not listed in the enhancement report at all | Google has not recorded the markup for the indexed URL | Canonical and rendering checks |
| Very few impressions of any kind | The page barely ranks, so there is little chance to show anything | Ranking and indexing, not structured data |
The last row is worth stressing. An enhancement can only be added to a listing that appears. If the page sits on page four for its main searches, the question is not why the stars are missing but why the page ranks where it does.
The canonical trap
Google indexes one URL from each group of duplicates and treats the rest as alternates. Rich results are attached to the indexed URL. If your markup is on an alternate, it does not matter how good it is.
This goes wrong in a handful of recurring ways:
- Product variants. A shop outputs full Product markup on
/shoes/runner?colour=bluebut the canonical tag points to/shoes/runner, where the markup is thinner or missing. - Pagination and sorting. Review pages such as
?page=2carry the ratings, but the canonical is page one. - Trailing slashes, uppercase and http. You tested
https://example.co.uk/Recipe/but Google chosehttps://example.co.uk/recipe, served by a different template. - AMP or mobile subdomains left over from older builds, where one version has markup and the other does not.
- Syndicated content. An article republished on a partner site may be chosen as the canonical version, taking the rich result with it.
In URL Inspection, the Page indexing section shows both the user-declared canonical and the Google-selected canonical. If they differ, inspect the Google-selected one and test it in the Rich Results Test too. The fix is to put the same complete markup on the URL Google keeps, or to make your canonical signals consistent (the canonical tag, internal links, the sitemap and redirects all pointing at one version) so Google keeps the URL you intend.
When Googlebot sees a different page
The Rich Results Test fetches a page once, with generous time to run scripts. Normal crawling may see something else. The common causes:
- Markup injected by JavaScript after an API call or a consent banner. If the script waits for a click, a scroll or cookie consent, Googlebot never triggers it. Tag managers that fire only after consent are a frequent culprit.
- Bot protection. A firewall or CDN rule that serves a challenge page to unfamiliar crawlers will also serve it to Googlebot if the rule is too broad. The page may still be indexed from an earlier crawl while current fetches fail.
- Geolocation and currency switching. Googlebot mostly crawls from the United States. A UK shop that redirects US visitors or swaps prices and availability for them may show Googlebot a page without offers, or with a different currency from the one in its markup.
- Caching of an old version. A page cache or CDN still serves HTML from before the markup was added to crawlers, while you see a fresh copy because you are logged in.
Use URL Inspection > View crawled page to see the HTML Google stored from its
last crawl, and Test live URL > View tested page for a fresh fetch. Search the HTML
tab for application/ld+json and for the property you care about, such as aggregateRating
or offers. If the crawled copy lacks it, you have a rendering or delivery problem, not a
selection problem.
What influences selection once the basics are right
If the canonical URL carries correct markup, Googlebot sees it, and no policy rule applies, you are down to Google's choice. Google does not publish the formula, but its guidance and the way features behave point to a few factors you can work on honestly.
Relevance to the query
A recipe listing gets recipe enhancements mostly for searches that look like recipe searches. A product page gets price and stock details most readily for searches with buying intent. If the searches that bring visitors to your page are informational, the enhancement may rarely be wanted. The Performance report's query list for that page shows whether you are ranking for the kind of searches the feature serves.
Page and site quality
Google has said its systems may withhold rich results from sites or pages they judge to be low quality, even when the markup is valid. Thin pages, pages that exist mainly to target a search, heavy advertising above the content, and sites with patchy trust signals are more likely to stay plain. This is not something a markup tweak changes.
How specific and complete the markup is
Required properties get you eligible. Recommended properties give Google more to show and more confidence
that the data is accurate: aggregateRating with a real count, offers with priceValidUntil
where it applies, recipe times and nutrition, event performers and ticket offers. Pages with the fuller
set tend to have more to display.
Competition on the results page
When a results page already has shopping units, a video block or a knowledge panel, there is less room for enhanced listings. Your page may be enhanced for one query and plain for a near-identical one because of what else is on the page.
Consistency between markup and page
If the price in the markup differs from the price on the page, or the rating in the markup is not visible anywhere, Google has reason to distrust the data. Consistency is part of eligibility on paper and part of selection in practice.
The fix, step by step
Step 1
Stop judging by your own searches
Open the Performance report in Search Console, choose Search appearance and filter by the feature you expect, such as Review snippet or Product snippets, then filter by the page. Note impressions over the last three months. If there are some, the enhancement is working for certain queries and devices. Only if there are none at all, while the page itself has normal impressions, treat it as a genuine eligible but not shown case and carry on.
Step 2
Confirm the Google-selected canonical carries the markup
Inspect the URL and read the Google-selected canonical in the Page indexing section. If it differs from the URL you tested, run that canonical through the Rich Results Test as well. Where the canonical lacks the markup or has a thinner version, put the complete block on it, or line up your canonical tags, internal links, sitemap entries and redirects so that Google keeps the URL that has the full markup.
Step 3
Check what Googlebot actually rendered
In
URL Inspection open View crawled page and search the HTML for application/ld+json
and the properties you rely on. Then run Test live URL and repeat. If either copy is
missing the markup, look for scripts that wait for consent or interaction, firewall or CDN rules that
challenge crawlers, geolocation redirects, and stale page caches. Serve the markup in the initial HTML
wherever you can, so it never depends on a script running.
Step 4
Rule out policy problems and manual actions
Open Security and manual actions > Manual actions and confirm there is no structured data action. Then read your markup against the feature's rules: no reviews of your own business, no ratings that visitors cannot see, no Recipe or Product markup on list pages, no events that are really offers or vouchers, and no content hidden from readers. Remove anything that breaks a rule rather than hoping it is overlooked, because one breach can taint the whole site.
Step 5
Complete the markup beyond the required minimum
List the recommended properties for the feature from Google's documentation and
add every one the page can honestly support, taking values from the same data that fills the visible
page. Typical gaps are a missing image at a usable size, no aggregateRating
count, missing priceValidUntil or availability, and absent times or nutrition
on recipes. Make sure every value in the markup matches what a visitor reads on the page, including currency
and units.
Step 6
Improve the page for the searches that matter
Look at the queries the page ranks for and ask whether they are the kind the feature serves. If a product page ranks mainly for how-to questions, strengthen its buying information and internal links from category pages instead. Remove thin boilerplate, move the core content above advertising, show clear authorship and contact details, and make the page the most useful answer for its main search. This is slow work, but it is what moves selection.
Step 7
Give it a measured waiting period
After changes, request indexing for the affected URL and a few others from the same template, then leave them alone. Record the date, and check the Search appearance filter weekly for at least four to eight weeks. Repeatedly editing the page resets the evidence and makes it impossible to tell what helped. If nothing appears after two months on a strong page with clean markup, accept that Google is choosing not to show it for now.
Type-specific reasons pages stay plain
| Feature | Frequent hidden reason | What to check |
|---|---|---|
| Review snippet (stars) | The item type is not one Google shows stars for, or the reviews are about the business itself | That itemReviewed is a product, recipe, book, course,
software or similar, not your LocalBusiness |
| Product snippets | Price or stock in the markup disagrees with the page, or offers are missing on the canonical | Visible price, currency and stock match the markup on the Google-selected canonical |
| Merchant listings | The page is not somewhere a shopper can buy directly | A real buy option on the page; consider a Merchant Center feed alongside the markup |
| Recipe | Images too small or blocked, or the searches are not recipe searches | Large, crawlable images and ranking for dish names |
| Event | Event already ended, or it is an online class or promotion rather than a dated event | Future startDate, correct eventAttendanceMode, real location |
| Breadcrumb | Google shows its own URL-based path instead | Breadcrumb trail matches visible navigation; accept that Google may prefer its own |
| FAQ and HowTo | Restricted or withdrawn by Google, not a fault | See the FAQ guide; HowTo results no longer appear in Google |
For a deeper look at stars, see fixing review and rating snippets. For recipe pages, fixing recipe carousel inclusion covers the extra requirements for carousels.
Keeping eligible pages in the running
- Build markup from the page data. When the price, rating and stock in the markup come from the same fields as the visible page, they cannot drift apart after an edit.
- Keep canonical signals consistent. Every internal link, sitemap entry and canonical tag should use the same version of each URL, with redirects for the rest.
- Put markup in the server HTML. Avoid markup that depends on consent tools, lazy scripts or client-side routing.
- Allow crawlers through bot protection. Check firewall and CDN rules whenever they change, and confirm Googlebot still gets the normal page.
- Track appearance, not just validity. Validity shows the markup is fine. The Suite's coverage tracking and Search Console's search appearance data show whether it is doing anything.
- Retire what no longer applies. Remove markup for ended events, discontinued products and features Google has withdrawn, so reports reflect the pages that can still earn something.
1. The Rich Results Test says my page is eligible. Why is there still no rich result?
Because the test only checks that the markup meets the feature's requirements. Whether Google adds the enhancement is decided separately for each search, using the query, the device, what else is on the results page and Google's view of the page and site. Before assuming it is Google's choice, confirm the Google-selected canonical has the same markup, that Googlebot's crawled copy includes it, and that no content policy rules the page out. Those three checks explain a large share of cases.
2. Why do I see stars when I search on my phone but not on my laptop?
Rich results vary by device, location, language and even the exact wording of the search. Some features, such as recipe carousels, are shown mainly on mobile. Google may also show an enhancement for one query and not for a very similar one if the results page is crowded with other features. That is normal behaviour and not a fault. Use Search Console's Search appearance filter to see the real picture across all searchers rather than your own spot checks.
3. Does a site: search show whether my rich results are working?
No, it is not a reliable check. A site: search is a special query type and Google often shows plain listings there even for pages that get enhancements in ordinary searches. Searching your page title is only a little better, since customers rarely search that way. The dependable evidence is the Performance report in Search Console filtered by Search appearance, which records impressions and clicks where the enhanced listing was actually shown to people.
4. Could my canonical tag be stopping the rich result?
Yes, and it is one of the most overlooked causes. Google attaches rich results to the URL it indexes. If your canonical tag, or Google's own choice, points at a different version of the page, such as the base product URL instead of a variant, the markup on the version you tested is ignored. Check the Google-selected canonical in URL Inspection, test that URL, and make sure the richest markup lives on the URL Google keeps.
5. How long should I wait before deciding it is not going to appear?
Allow at least four to eight weeks after your last change, and longer for pages Google crawls rarely. Google has to recrawl the page, process the markup and then start choosing it for relevant searches. Request indexing once, then avoid editing the page repeatedly, because each change makes it harder to know what worked. If a strong page with clean markup has had no impressions under the relevant search appearance after two months, Google is likely choosing not to show it.
6. Will adding more recommended properties make Google show the rich result?
It can help but it is not a switch. Recommended properties give Google more information to display and more confidence in the data, and some visual elements only appear when they are present, such as review counts or cooking times. But Google still decides per search. Add every recommended property the page can support truthfully, taken from the same data as the visible page, and never invent values just to fill a field, because inaccurate data is a policy problem.
7. Can low site quality stop rich results even with perfect markup?
Yes. Google has said it may not show rich results for sites or pages its systems judge to be low quality, regardless of the structured data. Thin or duplicated content, pages built mainly to capture searches, intrusive advertising and weak trust signals all make an enhancement less likely. Markup cannot compensate for that. The route forward is improving the content and the site as a whole, then allowing time for Google to reassess it.
The Rich Snippets Suite identifies the rich result types each page is eligible for, validates the schema, previews how the result could look and tracks the rich result coverage your pages actually get over time.
Open Rich Snippet Fixes โ