Review Snippet: Star Ratings, AggregateRating & Compliance
Review snippet is one of the most easily abused and problematic structured data types. Star ratings are highly attractive for click-through rates, but Google's requirements for Review and AggregateRating are very specific: reviews must be authentic, visible, refer to a specific item, cannot aggregate third-party ratings, and local businesses or organizations cannot use their own websites to rate themselves. Done correctly, it's a clear signal; done wrong, it's a structured data violation.
What is Review Snippet#
Review snippet is a review summary that Google may display in search results or knowledge panels, commonly appearing as star ratings, average scores, review counts, or a brief excerpt of a specific review. Google's official documentation states that Review snippet comes from Review or AggregateRating structured data, and the actual appearance may vary depending on the search context.
Official documentation entry: Google Search Central: Review snippet structured data.
Review vs AggregateRating#
| Type | What it describes | Common scenario |
|---|---|---|
Review | A specific review | A user's review of a book, product, or restaurant |
AggregateRating | Aggregation of many ratings | Product page showing "4.4 stars, 89 reviews" |
The most common approach for e-commerce product pages is to nest AggregateRating within Product. If the page also displays a list of specific reviews, you can nest multiple Review entries into Product as well. You can also write standalone top-level Review or AggregateRating, but you must use itemReviewed to clearly specify what is being reviewed.
Supported Reviewable Item Types#
Google only supports specific types for review snippets. Common types include:
Product: Products, purchasable items;Book,Movie,Recipe,SoftwareApplication;Event,Courseand other content or activity types;LocalBusinessandOrganizationhave additional restrictions, especially to avoid self-serving reviews.
Don't force Review markup onto arbitrary pages. For example, a tutorial article may be liked by readers, but it itself may not be suitable for Review snippet markup just to show stars.
AggregateRating Nested in Product#
This is the most common product page approach: the product is the main entity, and ratings are nested as a product attribute.
{
"@context": "https://schema.org/",
"@type": "Product",
"name": "Executive Anvil",
"image": [
"https://example.com/photos/anvil-1x1.webp",
"https://example.com/photos/anvil-4x3.webp",
"https://example.com/photos/anvil-16x9.webp"
],
"aggregateRating": {
"@type": "AggregateRating",
"ratingValue": 4.4,
"ratingCount": 89
},
"offers": {
"@type": "Offer",
"price": 119.99,
"priceCurrency": "USD",
"availability": "https://schema.org/InStock"
}
}
The page must visibly display the same product name, same average score, and same review count. Don't write star ratings only in JSON-LD while having no review section on the page.
Single Review Example#
If the page is a genuine review article, you can use Review to describe this review and use itemReviewed to specify what is being reviewed.
{
"@context": "https://schema.org/",
"@type": "Review",
"itemReviewed": {
"@type": "Product",
"name": "Executive Anvil",
"image": "https://example.com/photos/anvil.webp"
},
"reviewRating": {
"@type": "Rating",
"ratingValue": 4,
"bestRating": 5,
"worstRating": 1
},
"author": {
"@type": "Person",
"name": "Jane Doe"
},
"datePublished": "2026-06-24",
"reviewBody": "The product is sturdy and useful for workshop demonstrations."
}
If Review is nested within a parent type like Product or Recipe, you typically don't need to repeat itemReviewed since the parent object is what's being reviewed.
ratingValue and Count Rules#
| Field | Meaning | Notes |
|---|---|---|
ratingValue | Single review score or average | Use decimal point, e.g., 4.4, not 4,4 |
bestRating | Maximum rating | When omitted, typically interpreted as 5-point scale |
worstRating | Minimum rating | When omitted, typically interpreted as 1-point scale |
ratingCount | Number of people who rated | AggregateRating requires at least this or reviewCount |
reviewCount | Number of people who reviewed | Can include count of reviews with or without text |
If you use a 10-point scale, 100-point scale, or other non-default scale, be sure to clearly specify bestRating and worstRating; otherwise, Google may interpret it as the default 5-point scale.
Reviews Must Be Visible#
Google explicitly requires: the review content you mark up must be visible to users on that page. If you mark up Review, users should be able to see the review text, rating, and author; if you mark up AggregateRating, users should be able to see the average score and review count.
- Don't put backend rating data only into JSON-LD;
- Don't make ratings visible only after login while marking them on the public page;
- Don't mark up review counts that aren't displayed on the page;
- Don't mark up a composite rating for an entire group of products on a listing page.
Self-Review and Third-Party Review Boundaries#
The most important compliance boundaries for Review snippet focus on two points:
| Risk | Non-compliant practice | Correct approach |
|---|---|---|
| Self-serving reviews | Local business giving stars to its own LocalBusiness on its website | Don't add stars to organization/local business pages you control |
| Aggregating third-party reviews | Scraping ratings from Google Business Profile, Facebook, or third-party platforms | Only mark up reviews directly collected, displayed, and verifiable on your page |
| Category or list ratings | Giving "Best SEO Tools List" an overall 4.9 stars | Reviews should point to specific products, books, recipes, software, etc. |
Why This Site Doesn't Implement Review Markup#
This article discusses Review snippet, but this page is not a review page, nor does it have genuine user ratings, review counts, or an item being reviewed. Therefore, this page will not add Review or AggregateRating markup for demonstration purposes.
Validation and Monitoring#
- Test the page with Rich Results Test.
- Confirm Review or AggregateRating is nested within a supported type, or use
itemReviewedto point to a supported type. - Verify that visible ratings, review counts, authors, and review dates on the page match the JSON-LD.
- After launch, monitor invalid items in Search Console's Review snippet report.
- If stars disappear, check not just syntax but also quality issues like self-reviews, third-party aggregation, or invisible content.
Common Mistakes#
| Error | Why it's dangerous | Fix |
|---|---|---|
| Writing 5 stars with no real reviews | Fake structured data | Don't output rating markup when there are no reviews |
| Aggregating third-party ratings | Google explicitly advises against | Only mark up reviews directly displayed on your site |
| Local business self-reviews | Ineligible for star rating features | Avoid adding stars to your own LocalBusiness/Organization pages |
| Ratings not visible | Violates visible content consistency principle | Display average score and review count on page |
| Item not specific | Review target unclear | Reviews should target specific products, books, recipes, software, etc. |
| Decimal comma | Parsing may fail | Write 4.4 in JSON-LD, not 4,4 |
Review Snippet Launch Checklist#
- Page genuinely displays reviews or aggregate ratings
- Item being reviewed is a Google-supported type
- Review has author, reviewRating, and item being reviewed
- AggregateRating has ratingValue
- AggregateRating has at least ratingCount or reviewCount
- Ratings, authors, dates, and review counts match visible page content
- No aggregation of Google/Facebook/third-party platform ratings
- No self-review stars on your own LocalBusiness/Organization pages
- Use decimal point for numbers, e.g., 4.4
- Rich Results Test shows no critical errors
- Monitor Review snippet report in Search Console
Frequently Asked Questions#
Should I use Review or AggregateRating?
If your page displays a specific review, use Review. If your page shows an average score aggregated from many user ratings, use AggregateRating. The most common approach for e-commerce product pages is to nest AggregateRating within Product and display the average score and review count on the page.
Can I aggregate reviews from Google, Facebook, or third-party platforms onto my page?
No, you should not. Google's Review snippet guidelines explicitly state not to aggregate reviews or ratings from other websites. The review data you mark up should come from review content that is visible and verifiable on your own page, not by scraping star ratings from external platforms and stuffing them into structured data.
Can local businesses add star ratings to their own websites?
Self-serving reviews for local businesses and organizations are not eligible for star rating display. If the entity being reviewed controls the review page about itself—for example, a business marking up its own LocalBusiness star ratings on its website—Google explicitly excludes such pages from star rating features.
Can I write 5 stars when there are no real reviews yet?
No. ratingValue, ratingCount, and reviewCount must all come from real review data, and users must be able to see the corresponding content on the page. When there are no real reviews, do not output Review or AggregateRating; you can add it after your review system launches and you have accumulated real data.