# What are rich results (rich snippets)?

> What Google rich results are, which ones matter in a store, why valid markup doesn't guarantee you'll see them, and how to check.

URL: https://clione.ai/glossary/rich-results/
Lang: en

What a lot of people still call _rich snippets_, Google calls rich results: **the result that shows up with something more than the link and two lines of text**. In a product search it is the line with the price, "In stock" and some stars with the number of reviews. It is not an ad: it is your organic result, presented with more data. It matters to you because it is the part of your [product page's](/glossary/product-page/) [structured data](/glossary/structured-data/) that the shopper sees before entering the store, and because it is very easy to confuse your page being able to have them with its actually having them.

## How it works

Google uses structured data to understand the content of a page and to show it with a richer appearance in results, which is what it calls a rich result.[^google-gallery] Each type has its own requirements: which [Schema.org](/glossary/schema-org/) type gets marked up and which properties are required. Its gallery lists the ones Search supports today, including article, [breadcrumb](/glossary/breadcrumbs/), event, recipe, video, organization, review snippet and product.[^google-gallery]

The path has three steps, and only the first depends on you:

1. **You mark up the page** with structured data, written in [JSON-LD](/glossary/json-ld/), [microdata](/glossary/microdata/) or [RDFa](/glossary/rdfa/). Google supports all three and recommends JSON-LD.[^google-sd-intro]
2. **The page becomes eligible** if the markup includes all the required properties for the result type and meets Google's quality guidelines.[^google-sd-policies]
3. **Google decides whether to show it**, search by search. It doesn't guarantee that your structured data will appear in results even when the page is marked up correctly, and it adapts what it shows to each person's search history, location or device type.[^google-sd-policies]

For a store, the ones that count are the product ones. With product structured data, Google can show **the price, availability, ratings and shipping details right in the results**, in Search, Google Images and Lens.[^google-product] There are two variants. Product snippets are for pages where you can't buy, such as an editorial review; [merchant listings](/glossary/merchant-listings/) are for pages where the customer buys, and they allow more detail, such as sizes, shipping or returns.[^google-product] Google adds that providing the data on the page and also a _feed_ in [Google Merchant Center](/glossary/google-merchant-center/) maximizes your chances of appearing.[^google-product]

The list isn't fixed. Google stopped showing the FAQ rich result in Search, the one generated with [FAQPage](/glossary/faqpage/), as of May 7, 2026, and on June 15 it withdrew its documentation.[^google-updates] **Markup can be left without the result that justified adding it**, which is why it pays to check once in a while which types Google still supports instead of taking it for granted.

To see what Google sees on your site, [Search Console](/glossary/google-search-console/) has rich result status reports: they count how many valid and invalid items it has found on the site. A valid item is one with no critical issues that **can** appear as a rich result; an invalid one has at least one critical issue that prevents it. The product ones are in the Shopping section, one for product snippets and another for merchant listings, and they show a sample of the items detected, not the full list.[^gsc-rich-reports]

## In a store

What Google can add to a product page's result and where each piece of data comes from. **Fictional example**: the store, the shirt, the price and the reviews are made up to show the mechanism.

| What can show in the result | Where Google gets it                            | Schema.org type |
| --------------------------- | ----------------------------------------------- | ------------------------------------------------------------------------------------------------------------------- |
| "$29.90"                    | `price` and `priceCurrency` of the offer        | [Offer](/glossary/offer-schema/)                                                                                    |
| "In stock"                  | `availability` of the offer                     | Offer                                                                                                               |
| 4.6 stars and 38 reviews    | `ratingValue` and `reviewCount`                 | [AggregateRating](/glossary/aggregaterating/)                                                                       |
| Shipping and returns        | `shippingDetails` and `hasMerchantReturnPolicy` | [OfferShippingDetails](/glossary/offershippingdetails/) and [MerchantReturnPolicy](/glossary/merchantreturnpolicy/) |

Everything hangs off the page's [Product](/glossary/product-schema/) node, and each row is a condition, not a promise. When the [Rich Results Test](/glossary/rich-results-test/) passes the markup as valid, it means the page is eligible; the tool itself warns that Google doesn't guarantee the page will appear as the tool shows it, or that any of the views it displays will be applied.[^rich-results-test] And the stars row has one more condition: the reviews have to be visible on the page, because Google asks you not to mark up content the page's reader can't see.[^google-sd-policies]

The practical consequence is that there are **two different questions, with two different tests**. "Is my page eligible?" is answered with Google's tool and the Search Console reports. "Does my page show up with price and stars?" is answered only by searching, with a date, and knowing that what you see needn't be what someone else sees in another place or on another device.[^google-sd-policies]


Mixing up a rich result with a featured snippet, because both have "snippet" in the name. The featured snippet is the box that puts a page's text first as the answer, and it isn't requested with any markup: to the question of how to mark a page up as a featured snippet, Google answers that you can't, and that its systems decide whether a page is a good featured snippet for that search.[^google-featured-snippets] The rich result, by contrast, comes from the page's structured data.[^google-gallery]


## How to check it

1. **Run a product page's URL through the Rich Results Test.** It tells you which rich results it detects, whether the markup is valid, has warnings or is invalid, and by default it tests the page as a mobile device would see it.[^rich-results-test]
2. **Open the Search Console product reports**, in the Shopping section, and see how many valid and invalid items the site has and which critical issue keeps recurring.[^gsc-rich-reports]
3. **Search for your own product page on Google** with the query a customer would use and note what you see and when. A search is a sample, not a position: Google adapts the result to each person.[^google-sd-policies]
4. **Compare each piece of data that appears** (price, availability, stars) with what the page shows that day. If they don't match, the problem is in the markup, not in Google.[^google-sd-policies]

## Related concept: structured data

Structured data is what you write on the page; the rich result is **what Google decides to show with it**. The first depends on you and the second doesn't.[^google-sd-policies] That is why a report that says "we have rich snippets" because the tool comes back green is mixing up the two. And outside classic results the relationship is looser still: for its generative AI features, Google says structured data isn't a requirement and there is no special markup, yet it still advises continuing to use it because it helps you qualify for rich results.[^google-ai-guide]

To keep going, the [structured data reading path](/learn/structured-data/) puts the other terms in order, and the comparison of [validating markup versus verifying publication](/comparisons/validate-vs-verify/) separates what a validator says from what is really on the page.
