Generate a standalone AggregateRating in JSON-LD: the item being rated, the average score, the scale, and the count. The output is checked live against the fields Google requires, so a missing reviewCount shows up here instead of in Search Console.
The ratings you mark up must match reviews a visitor can actually read on the page. Google checks this and ignores markup it can't verify against visible content.
{
"@context": "https://schema.org",
"@type": "AggregateRating",
"ratingValue": 4.6,
"reviewCount": 123,
"bestRating": 5,
"worstRating": 1
}itemReviewed AggregateRating is missing required property "itemReviewed".Copy the snippet first, then paste it into either tool's code tab.
Paste this inside your page's <head> (or anywhere in the HTML). Then check it with the JSON-LD validator.
AggregateRating is the schema.org type behind the star row in search results. It carries four things Google cares about: a ratingValue (the average), a reviewCount or ratingCount, the scale via bestRating and worstRating, and a pointer to the thing being rated. Most of the time it lives nested inside a Product or SoftwareApplication entity. The standalone form this page generates is for cases where the page is primarily about the rating itself, and in that form Google insists on an itemReviewed reference.
If you are marking up a full product or app page, you probably want the rating nested inside the parent entity instead. Our review schema generator builds those combined shapes, and the Product generator handles the e-commerce case.
After validating a lot of rating markup, the same handful of problems keep appearing. Out-of-range values top the list: a ratingValue of 4.6 with bestRating accidentally set to 4, or a percentage score on an undeclared 5-point scale. Google silently ignores these rather than erroring, so people assume the markup works. Second is the missing count. A lone ratingValue with no reviewCount or ratingCount fails the requirement outright. Third is markup that disagrees with the page: the script says 4.8 from 214 reviews while the visible widget shows 4.6 from 230, usually because one of the two is cached.
The honest fix for that last one is generating the markup from the same data source as the visible reviews, at build time or render time, rather than pasting static numbers that rot. A hand-written snippet from this tool is fine to start; just put updating it on a checklist whenever your review count moves.
reviewCount counts written reviews; ratingCount counts every rating, including score-only ones with no text. Google requires at least one of the two on an AggregateRating. If you have both numbers, include both, and make sure ratingCount is the larger or equal figure.
A rating floating on its own tells search engines nothing about what was rated. When AggregateRating is the top-level entity, Google requires an itemReviewed reference (the product, app, or business). When the rating is nested inside a Product or SoftwareApplication, the parent entity plays that role and itemReviewed can be dropped, which is why this tool only adds it in the standalone shape.
Yes, as long as you declare the scale. Set bestRating and worstRating to match your system, for example bestRating 10 for a 10-point scale, or bestRating 100 for percentages. Without them, Google assumes a 5-point scale and drops values that fall outside it.
Validity is only the entry ticket. The most frequent causes we see: the reviews are not visible on the page carrying the markup, the rating is about your own organization (self-serving), or the page simply has not been recrawled yet. Check the live URL in Google's Rich Results Test and give a recrawl a couple of weeks.
No. Generation and validation run in your browser. The form is saved to localStorage on your machine so a refresh does not wipe your work, and the reset button clears it.
TWR adds AggregateRating schema to your public review page automatically — free. Collect verified reviews inside your app and let us handle the structured data.