Structured Data · Type Guide Part 5

Review Snippet: Star Ratings, AggregateRating & Compliance

~15 min read Updated 2026-06-24 MagicSEO Editorial · Human Reviewed Type Guide

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.

Remember the bottom line firstStar ratings aren't something you can just write as you please. The page must genuinely display review content or aggregate ratings—structured data is merely the machine-readable expression of these visible reviews.

Review vs AggregateRating#

TypeWhat it describesCommon scenario
ReviewA specific reviewA user's review of a book, product, or restaurant
AggregateRatingAggregation of many ratingsProduct 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, Course and other content or activity types;
  • LocalBusiness and Organization have 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.

product-aggregate-rating.json
{
  "@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.

single-review.json
{
  "@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#

FieldMeaningNotes
ratingValueSingle review score or averageUse decimal point, e.g., 4.4, not 4,4
bestRatingMaximum ratingWhen omitted, typically interpreted as 5-point scale
worstRatingMinimum ratingWhen omitted, typically interpreted as 1-point scale
ratingCountNumber of people who ratedAggregateRating requires at least this or reviewCount
reviewCountNumber of people who reviewedCan 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:

RiskNon-compliant practiceCorrect approach
Self-serving reviewsLocal business giving stars to its own LocalBusiness on its websiteDon't add stars to organization/local business pages you control
Aggregating third-party reviewsScraping ratings from Google Business Profile, Facebook, or third-party platformsOnly mark up reviews directly collected, displayed, and verifiable on your page
Category or list ratingsGiving "Best SEO Tools List" an overall 4.9 starsReviews should point to specific products, books, recipes, software, etc.
Local businesses should be especially cautiousIf the entity being reviewed controls the review page about itself—for example, a restaurant marking up its own five-star LocalBusiness ratings on its official website—Google explicitly excludes such pages from star rating features.

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.

Site demonstrationThis page continues using Article, BreadcrumbList, and FAQPage because its true identity is a tutorial article. The correct way to demonstrate Review snippet is to explain when not to use it, rather than disguising a tutorial page as a review page.

Validation and Monitoring#

  1. Test the page with Rich Results Test.
  2. Confirm Review or AggregateRating is nested within a supported type, or use itemReviewed to point to a supported type.
  3. Verify that visible ratings, review counts, authors, and review dates on the page match the JSON-LD.
  4. After launch, monitor invalid items in Search Console's Review snippet report.
  5. If stars disappear, check not just syntax but also quality issues like self-reviews, third-party aggregation, or invisible content.

Common Mistakes#

ErrorWhy it's dangerousFix
Writing 5 stars with no real reviewsFake structured dataDon't output rating markup when there are no reviews
Aggregating third-party ratingsGoogle explicitly advises againstOnly mark up reviews directly displayed on your site
Local business self-reviewsIneligible for star rating featuresAvoid adding stars to your own LocalBusiness/Organization pages
Ratings not visibleViolates visible content consistency principleDisplay average score and review count on page
Item not specificReview target unclearReviews should target specific products, books, recipes, software, etc.
Decimal commaParsing may failWrite 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.