bestRating
bestRating · Recommended
Appears in
What is it?
The highest value allowed in a rating system. bestRating tells search engines what the top of the scale is. On a 1 to 5 star system, bestRating is 5. On a 100 point scale like Rotten Tomatoes, bestRating is 100. If omitted, Google assumes a maximum of 5.
Why this matters for AEO
AI answer engines normalize ratings across sources. A "88 out of 100" from Rotten Tomatoes and a "4 out of 5" from Yelp mean different things unless the AI knows the scale. bestRating gives AI engines the denominator, so they can compare ratings accurately when answering "which movie is rated highest?" or "what's the best pizza place in Chicago?"
What the specs say
Schema.org: Number or Text. The highest value allowed in this rating system. schema.org/bestRating
Google: Recommended. "The highest value allowed in this rating system. If bestRating is omitted, 5 is assumed." Google Review Snippet docs
How to find your value
- 5 star (default) — 5
- 10 point scale — 10
- 100 point scale (Rotten Tomatoes, Metacritic) — 100
- Letter grade (A+ to F) — "A+"
- Percentage — 100
Format and code
bestRating is a property of the Rating object, not of Review directly. It sits inside reviewRating or within an AggregateRating.
{
"@context": "https://schema.org",
"@type": "Review",
"itemReviewed": {
"@type": "Restaurant",
"name": "Legal Seafood"
},
"reviewRating": {
"@type": "Rating",
"ratingValue": 4,
"bestRating": 5,
"worstRating": 1
}
}
100 point scale:
{
"@type": "AggregateRating",
"itemReviewed": {
"@type": "Restaurant",
"name": "Legal Seafood"
},
"ratingValue": 88,
"bestRating": 100,
"ratingCount": 20
}
Common invalid pattern: Placing bestRating directly on the Review instead of inside the Rating object.
Webflow implementation
Static pages
Include bestRating inside the reviewRating object in your JSON-LD block:
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Review",
"itemReviewed": {"@type": "Product", "name": "Widget Pro"},
"reviewRating": {
"@type": "Rating",
"ratingValue": 4,
"bestRating": 5,
"worstRating": 1
},
"author": {"@type": "Person", "name": "Jane Doe"}
}
</script>
CMS template pages
If your CMS collection uses a non standard rating scale (e.g., 10 points), hardcode bestRating in the JSON-LD template to match. The ratingValue can be dynamic from a CMS number field.
In Schema HQ
The bestRating field configures bestRating is populated and worstRating automatically based on the rating scale configured for the site. For standard 5 star reviews, it defaults to 5.
Real examples
Google Search Central (developers.google.com/search/docs/appearance/structured-data/review-snippet, 100-point scale):
{
"@type": "AggregateRating",
"itemReviewed": {
"@type": "Restaurant",
"name": "Legal Seafood"
},
"ratingValue": 88,
"bestRating": 100,
"ratingCount": 20
}
Schema.org (schema.org/Rating, 5-star scale):
{
"@type": "Review",
"reviewBody": "The lamp burned out and now I have to replace it.",
"name": "Not a happy camper",
"reviewRating": {
"@type": "Rating",
"bestRating": "5",
"ratingValue": "1",
"worstRating": "1"
}
}
Related fields
- reviewRating
- ratingValue
- worstRating
- itemReviewed
FAQ
What happens if bestRating is omitted?
Google assumes 5. This works fine for standard 5 star systems. For any other scale, you must specify bestRating or Google will misinterpret the rating. An 88 out of 100 would look like 88 out of 5, which is nonsensical.
Can bestRating be a text value?
Yes. Schema.org accepts Text, so "A+" is valid for letter grade systems. However, Google's review snippet processing works best with numeric values.
Where does bestRating go in the JSON-LD?
Inside the Rating or AggregateRating object, not directly on the Review. It is a property of Rating, not Review.