
What AggregateRating is
AggregateRating is a schema.org type that summarizes many individual reviews into one score: an average rating and a count. It is a property you nest inside a parent item, most commonly a Product, but also Recipe, Book, Course, LocalBusiness, SoftwareApplication, and a handful of others. Google reads it and, when everything checks out, renders the familiar star line under your title in the SERP.
The core fields are simple. ratingValue is the average score. bestRating and worstRating define the scale (default 5 and 1 if you omit them). And you need a count: either ratingCount, reviewCount, or both. Miss the count and Google has no evidence the rating represents real volume, so it will not draw stars.
Why the stars are worth the effort
A star line is one of the few things that makes an organic result visibly different from the nine others on the page. It occupies vertical space, it signals social proof before the click, and in competitive categories it is often the difference between a result people skim past and one they trust. Google does not publish a fixed uplift number and results vary by query and vertical, so treat any single "stars add X percent CTR" claim you read online with skepticism. The mechanism is real; the exact number is situational.
The flip side matters more than the upside. Review snippets are governed by Google's structured data policies, and the penalty for gaming them is severe. Mark up ratings that are not visible on the page, self serve ratings for your own business, or numbers that do not match what users see, and you risk a manual action that strips rich results across the whole site. This is one of the areas where cutting corners genuinely bites.
Valid markup vs the common ways it breaks
A minimal valid example
Here is AggregateRating nested in a Product, using JSON-LD, which is the format Google recommends:
{
"@context": "https://schema.org",
"@type": "Product",
"name": "Acme Trail Runner",
"aggregateRating": {
"@type": "AggregateRating",
"ratingValue": "4.4",
"reviewCount": "218",
"bestRating": "5",
"worstRating": "1"
}
}Note the count is present, the scale is explicit, and every one of those 218 reviews should be visible somewhere on that product page. The markup describes the page, it does not invent content that is not there.
Field reference
| Property | Required? | What it holds |
|---|---|---|
ratingValue | Yes | Average score, for example 4.4 |
ratingCount or reviewCount | One is required | Number of ratings or written reviews |
bestRating | Optional | Top of the scale, defaults to 5 |
worstRating | Optional | Bottom of the scale, defaults to 1 |
| Parent item type | Yes | Must be a type Google supports for review snippets |
How to detect and validate
- Rich Results Test. Google's own tool at the URL or code level tells you whether the AggregateRating is valid, what item type it attached to, and which fields are missing. This is your first stop.
- Schema Markup Validator. The schema.org validator catches structural mistakes the Rich Results Test may not flag, like a misspelled property or a broken nesting.
- Search Console, Enhancements. The Review snippets report shows valid, warning, and error items across your indexed pages at scale, plus any manual actions under the Security and Manual Actions section.
- Screaming Frog. Enable structured data extraction and crawl the site to find every page missing AggregateRating or emitting errors, which beats checking pages one at a time.
- View source. Confirm the JSON-LD actually renders in the HTML and is not injected only after a JavaScript event Google might not wait for.
- Include ratingValue and at least one count field
- Nest it in a supported item type like Product
- Only mark up ratings visible on that same page
- Keep bestRating and worstRating explicit
- Validate with the Rich Results Test before shipping
- Invent ratings that no user ever left
- Self serve a rating for your own business or site
- Mark up ratings hidden from the visible page
- Attach AggregateRating to an unsupported type
- Leave out the count and expect stars anyway
What good looks like
The parent item is a type Google supports for review snippets. AggregateRating carries a real average and a real count that match the reviews shown on the page. The Rich Results Test returns valid with no warnings, the Search Console Review snippets report is clean, and the stars appear in the live SERP. Nothing is fabricated, nothing is hidden, and the markup would survive a spot check by a human reviewer.
FAQ
Do valid AggregateRating stars guarantee they show in Google?
Can I put a rating on my own homepage for my brand?
What is the difference between ratingCount and reviewCount?
Why did my stars disappear after they were showing?
Want stars that stick without the manual action risk?
Review schema is easy to get subtly wrong and expensive when it triggers a penalty. A structured data audit checks your markup against Google's policies before it costs you rich results.
Claude Vincent is a technical SEO consultant focused on crawlability, rendering, and AI-search visibility. He writes the field guides and case studies at SEO ProCheck, with a bias toward the durable, unglamorous work that decides whether search engines and AI answer engines can actually read and cite a site.
About SEO ProCheck
Technical SEO consulting and GEO strategy with 20 years of enterprise experience. Case studies, resources, and tools for search and AI visibility.
Work With Me
Technical SEO audits, GEO strategy, site migrations, and international SEO. Hourly consulting for teams who need hands-on support, not just reports.
Subscribe to our newsletter!
Recent Posts
- Can AI Crawlers Actually Read Your Site? I Measured 400 of the Biggest September 5, 2026
- The Pre-Publish Quality Gate for AI-Assisted Content August 6, 2026
- AGENTS.md vs llms.txt vs llms-full.txt: Which Agent File Does What July 18, 2026







