Rich Snippets Tester — Example Report Run Your Own Audit →
📋 Example Report — Demo Data

Rich Snippets Tester Example: Product Schema Audit

This example shows the aiwebpageseo Rich Snippets Tester validating Product schema pasted from a product page. The report shows the schema is valid JSON but missing aggregateRating, which means Google cannot show star ratings. All other requirements are met.

Rich Snippet Validation — Product Schema
✅ Valid JSON-LD ⚠ Partially eligible — stars blocked Score: 71/100
Rich Result TypeEligible?Reason
Product — Price & Availability✅ Eligiblename, offers.price, offers.availability, offers.priceCurrency all present
Product — Star Ratings❌ Not eligibleMissing aggregateRating — required for star display
Product — Review Snippets❌ Not eligibleNo review array present
Product — Merchant Listing✅ EligibleRequired fields complete for merchant listings
To unlock star ratings, add aggregateRating:
"aggregateRating": {"@type": "AggregateRating", "ratingValue": "4.7", "reviewCount": "284", "bestRating": "5"}
SERP Preview — With vs Without Stars
❌ Current (no stars)
Sony WH-1000XM5 Wireless...
https://shop.example.com/products
Industry-leading noise cancelling with 30-hour battery. Buy now for £279.
✅ With aggregateRating
Sony WH-1000XM5 Wireless...
https://shop.example.com/products
★★★★★
4.7 (284 reviews) · £279.00 · In stock
Passing Checks
✓ Valid JSON syntax
✓ @context: schema.org
✓ @type: Product
✓ name property present
✓ image property present
✓ offers.price present
✓ offers.availability: InStock
✓ offers.priceCurrency: GBP
Before you paste that aggregateRating

The report shows you the exact JSON to add, populated with a 4.7 from 284 reviews. Those are illustrative numbers. Pasting them, or any number you have not actually earned, is the single most expensive mistake available in structured data.

RULE

The rating must come from real reviews that are visible on the page

Marked-up review data with no corresponding reviews a visitor can see violates Google's structured data policies. The penalty is not a missing star rating — it is a manual action for structured data spam, which suppresses rich results across your entire site until it is fixed and appealed. You would be trading the price snippet you already have for nothing.

The order is: collect the reviews, display them on the page, then mark up the aggregate you are already showing. Schema describes a page. It does not create facts about it. A Product block scoring 71/100 with no stars is in a far better position than one scoring 100 with a manual action attached.

Why your stars may never appear even with perfect markup

This is the rule that catches out more businesses than any other, and no validator will tell you about it, because your markup is not the problem.

Google does not show review rich results for self-serving reviews — that is, reviews about a business, collected and published on that business's own website, marked up on LocalBusiness or Organization. The markup validates. The eligibility check passes. The stars never appear, and no report explains why.

The distinction that matters:

ScenarioStars?
Reviews of a product you sell, on the product page✅ Eligible
Reviews of your own business, on your own site❌ Not eligible
Reviews of a third party you have written about✅ Eligible

So a plumber marking up their own testimonials page will never see stars in organic results, however clean the JSON-LD. The route to stars for a service business is Google Business Profile — the reviews Google itself holds — not schema on your own site.

also

Third-party review widgets frequently defeat themselves

Most review platforms inject their content with JavaScript, after the page loads. If the reviews and the ratings only exist in the rendered DOM, and the schema is served in the HTML, you have a page whose markup claims something the served document does not show. Server-render both, or the two will never agree.

FAQ and HowTo rich results: check before you build

Rich result types are not permanent. Google adds them, restricts them and removes them, and markup built for a feature that no longer exists is a page's worth of work for nothing.

Two changes worth knowing about, because they caught a great many people out:

Does that mean the markup is pointless? No — but be honest about what it now buys you. FAQPage markup no longer earns a SERP enhancement for most sites, and it still does something worth having: it states, unambiguously and machine-readably, that this text is a question and that text is its answer. Retrieval systems that parse rather than render use exactly that kind of structure. The SEO justification has largely gone; the AEO one has not.

habit

Check Google's documentation before building for a rich result

The list of supported types, and the requirements for each, changes. Before you spend a day on markup for a specific SERP feature, confirm the feature still exists and that your site type is still eligible for it. Building schema because a tool suggested it, without checking what it currently produces, is how sites end up with elaborate markup that has done nothing for two years.

Valid, eligible, displayed — three different things

The report says "valid JSON-LD" and "partially eligible". Neither is a promise, and the gap between them and displayed is where most disappointment in structured data lives.

  1. Valid — the JSON parses, the types are real, the properties exist. A syntax check.
  2. Eligible — every property Google requires for a given feature is present. A permission, not a promise.
  3. Displayed — Google actually shows it. Never guaranteed. It decides per query, per device, per user whether an enhancement adds anything, and it withholds enhancements from pages it does not trust — regardless of how immaculate the markup is.

Perfect schema on a low-quality page earns nothing, and that is working as intended. Structured data is an amplifier, not an engine. It makes a good page more legible; it cannot make a weak page rank.

The only report that answers question three is Search Console → Enhancements. A tester tells you the markup was correct when you pasted it. Search Console tells you what Google is doing with it on your live pages — and it is the only place you will discover that a templating change silently broke the schema on four hundred URLs.

The merchant listing is the opportunity here

The report marks Merchant Listing as eligible, and it is the row people skim past. It is worth more attention than the stars, for a simple reason: you can act on it today, and the stars you cannot.

Two properties, both under-used, both surfacing information in the search result itself:

These answer the two objections that stop a click before it happens, and unlike an aggregateRating you already know both answers. There is nothing to collect and nothing to wait for.

Two further details on the offers block that the check does not cover: priceValidUntil, whose absence lets the price be treated as stale — set it forward and keep it moving — and the absolute requirement that the marked-up price matches the displayed price. A stale £279 in the JSON-LD against a £249 on the page is a mismatch Google notices, and it is the fastest way to lose a merchant listing you already had.

Frequently asked questions

What are rich snippets?

Rich snippets are enhanced search result appearances enabled by structured data — star ratings, prices, event dates, recipe details, breadcrumb trails. They typically achieve higher CTR than standard results because they provide more information at a glance and stand out visually in the SERP. The supported types change over time: FAQ rich results were restricted in 2023 to a small set of authoritative government and health sites, and HowTo rich results were removed entirely, so check Google's current documentation before building markup for a specific feature.

Why are my star ratings not showing in Google?

If aggregateRating is absent, add it — but only from real reviews that are visible on the page, since inventing one risks a manual action for structured data spam. The reason that catches most businesses out, however, is different and no validator reports it: Google does not show review rich results for self-serving reviews, meaning reviews about a business, collected and published on that business's own website and marked up on LocalBusiness or Organization. The markup validates, the eligibility check passes, and the stars never appear. Reviews of a product you sell, on that product's page, are eligible; testimonials about yourself are not. For a service business the route to stars is Google Business Profile. Other causes: schema validation errors, reviews injected by JavaScript that the served HTML does not contain, or Google not yet having recrawled the page.

How long does it take for rich snippets to appear?

After adding valid structured data, Google typically processes it within a few days to a few weeks. Use Google Search Console's URL Inspection tool to request indexing of the updated page. Rich results also require the page to have been crawled and the schema to pass Google's eligibility checks.

Can I just add an aggregateRating to unlock the stars?

No. The rating must come from real reviews visible on the page. Marked-up review data with no corresponding reviews a visitor can see violates Google's structured data policies, and the penalty is a manual action for structured data spam — which suppresses rich results across your entire site until it is fixed and appealed. You would trade the price snippet you already have for nothing. Collect the reviews, display them, then mark up the aggregate you are already showing.

My review markup is perfect but the stars never appear. Why?

Most likely because they are self-serving reviews. Google does not show review rich results for reviews about a business, collected and published on that business's own website and marked up on LocalBusiness or Organization. The markup validates, the eligibility check passes, and the stars never come. Reviews of a product you sell, on that product's page, are eligible; testimonials about yourself, on your own site, are not. For a service business, the route to stars is Google Business Profile — the reviews Google itself holds.

Is FAQ schema still worth adding?

For the SERP dropdown, mostly no — Google restricted FAQ rich results in 2023 to a small set of authoritative government and health sites, and removed HowTo rich results entirely. For most businesses an FAQPage block no longer produces the expandable questions. It still does something worth having, though: it states unambiguously that this text is a question and that text is its answer, which is exactly the structure retrieval systems parse. The SEO justification has largely gone; the AEO one has not. Always check Google's current documentation before building markup for a specific SERP feature.

What should I add instead of chasing the stars?

shippingDetails and hasMerchantReturnPolicy. They surface delivery cost and the returns window in the search result itself, answering the two objections that stop a click before it happens — and unlike an aggregateRating, you already know both answers, so there is nothing to collect and nothing to wait for. Also set priceValidUntil, whose absence lets the price be treated as stale, and make certain the marked-up price matches the displayed price exactly.

Which validator answers which question

Three tools, and they are routinely used interchangeably by people who then get confusing answers. They are not interchangeable — each answers a different question, and knowing which one you are asking saves a great deal of confusion.

ToolThe question it answersUse it when
Rich Results Test"Is this eligible for a Google rich result?"You want a specific SERP enhancement
Schema Markup Validator"Is this valid schema.org?"You are marking up for correctness, and for machines other than Google
Search Console → Enhancements"Is this working on my live pages, at scale?"After deployment, across the whole site

The distinction that trips people up: Google's Rich Results Test will ignore, or warn about, perfectly valid schema.org markup that Google simply does not use for any of its own features. That is not an error in your markup. It is Google telling you about Google.

So if you are marking up so that answer engines and other parsers can read your content unambiguously — rather than to win a star rating — the schema.org validator is the one that answers your question, and a warning from Google's tool may be entirely irrelevant to what you are trying to do.

always

Test the live URL, not the pasted code

A tester that accepts pasted JSON-LD proves the code was correct when it left your editor. It cannot tell you that your CMS HTML-escaped every quote on the way to the page, that a rich-text editor mangled the block, or that the markup is being injected by JavaScript and therefore does not exist in the served HTML at all. Always run the final check against the live URL, and read the served page source yourself. The journey from editor to page is where most structured data dies.

Related Demo Reports

Run Rich Snippets Tester on Your Own Site

Get your real audit with specific issues, fixes and improvements — free to start.

⚡ Run Free Audit View Plans