What Is Review Schema? The Complete Guide (2026)
What Is Review Schema?
Review schema is a type of structured data — defined in the Schema.org Review vocabulary — that marks up individual reviews on a web page. Its companion, AggregateRating, represents a combined rating calculated from multiple reviews. Together, they power the yellow star ratings visible in Google Search results — one of the most click-through-rate-boosting rich results available.
Review schema requires three fields: author (with name under 100 characters), itemReviewed (with @type and name), and reviewRating.ratingValue. AggregateRating requires itemReviewed, ratingValue, and either ratingCount or reviewCount. Self-reviews by a LocalBusiness or Organization about themselves are not eligible for rich results and lose 30 points in Greadme. Always use a dot (not a comma) for decimal ratings.
Why Review Schema Matters for SEO and AI Visibility
According to a 2024 analysis by Moz, pages displaying star ratings in search results achieve a 15–30% higher click-through rate than equivalent pages without ratings. Star ratings signal credibility at a glance — both to human searchers and to AI search systems like Google AI Overviews, which actively surface numerical ratings when answering product and service queries.
AI assistants increasingly pull structured rating data directly from schemas when generating comparison answers. A properly marked-up AggregateRating with a clear ratingValue and ratingCount is far more likely to be cited verbatim than a rating buried in unstructured prose.
Review Schema vs. AggregateRating Schema: What Is the Difference?
These two schema types serve different purposes and are often used together on the same page:
| Type | Represents | Typical use |
|---|---|---|
Review | A single, individual review written by one person | Product review page, editorial review |
AggregateRating | A computed average from many ratings or reviews | Product summary, business listing, recipe card |
Both can appear as standalone schemas or nested inside a parent type — for example, a Product schema can embed both a review array and an aggregateRating object. Google displays star ratings from either type in rich results.
What Content Types Are Eligible for Review Rich Results?
Google supports Review and AggregateRating rich results for a specific set of content types. As of 2026, the eligible types are:
- Book
- Course
- CreativeWorkSeason
- CreativeWorkSeries
- Episode
- Event
- Game
- HowTo
- LocalBusiness (third-party review sites only — not the business's own site)
- MediaObject
- Movie
- MusicPlaylist
- MusicRecording
- Organization (third-party review sites only)
- Product
- Recipe
- Software App
Reviews for other content types may still be marked up and will be understood by AI systems, but Google will not display them as star-rating rich results in the main Search results page.
Review Schema: Required Properties
| Property | Type | Greadme rule |
|---|---|---|
author | Person or Organization | Error if missing. author.name required, max 99 characters, no promotional text |
itemReviewed | Thing (any schema type) | Error if missing. Must include @type and name |
reviewRating.ratingValue | Number or Text | Error if missing. Must use dot (.) not comma (,) for decimals |
Review Schema: Recommended Properties
| Property | Notes |
|---|---|
reviewRating.bestRating | Defaults to 5 if omitted. Set explicitly when using a different scale |
reviewRating.worstRating | Defaults to 1 if omitted. Set explicitly when using a different scale |
datePublished | ISO 8601 date (YYYY-MM-DD). Greadme warns if missing |
reviewBody | The full text of the review. Strongly recommended for user experience and AI extraction |
publisher | Organization that published the review. Useful for editorial or media reviews |
AggregateRating Schema: Required Properties
| Property | Type | Greadme rule |
|---|---|---|
itemReviewed | Thing (any schema type) | Error if missing. Must include @type and name |
ratingValue | Number or Text | Error if missing. Dot (.) required for decimals — comma causes error |
ratingCount or reviewCount | Integer | Error if both are missing. At least one must be present |
The Self-Review Prohibition: A Critical Rule
Google's guidelines state that pages where "the entity being reviewed controls the reviews about itself" are ineligible for the star review rich result. In practice, this means a business publishing reviews about itself on its own website will not earn star ratings — reviews must originate from independent third-party sources.
Greadme specifically checks whether itemReviewed.@type is LocalBusiness, Organization, Corporation, or Restaurant, and when that pattern appears on what looks like the entity's own site, it deducts 30 points and issues a warning. The only legitimate use of Review schema for business types is on independent third-party review platforms.
Decimal Format: Always Use a Dot, Not a Comma
A common internationalization mistake: in some locales, the decimal separator is a comma (e.g., German 4,4). Google requires a period (dot) as the decimal separator for ratingValue in both Review and AggregateRating schemas. Writing "ratingValue": "4,4" instead of "ratingValue": "4.4" causes an error in Greadme and prevents the rating from being eligible for rich results.
Review Schema Code Example
A standalone product review with all required and recommended fields:
{
"@context": "https://schema.org",
"@type": "Review",
"itemReviewed": {
"@type": "Product",
"name": "Wireless Headphones X200"
},
"author": {
"@type": "Person",
"name": "Jane Smith"
},
"reviewRating": {
"@type": "Rating",
"ratingValue": "4.5",
"bestRating": "5",
"worstRating": "1"
},
"datePublished": "2026-04-10",
"reviewBody": "Excellent sound quality with 30-hour battery life."
}AggregateRating Schema Code Example
AggregateRating nested inside a Product schema — the most common pattern:
{
"@context": "https://schema.org",
"@type": "Product",
"name": "Wireless Headphones X200",
"image": "https://example.com/x200.jpg",
"aggregateRating": {
"@type": "AggregateRating",
"itemReviewed": {
"@type": "Product",
"name": "Wireless Headphones X200"
},
"ratingValue": "4.5",
"bestRating": "5",
"worstRating": "1",
"ratingCount": 248
}
}Standalone AggregateRating for a Business (Third-Party Site)
This pattern is valid only on a third-party review platform, not the business's own site:
{
"@context": "https://schema.org",
"@type": "AggregateRating",
"itemReviewed": {
"@type": "LocalBusiness",
"name": "Sunrise Coffee Roasters"
},
"ratingValue": "4.7",
"bestRating": "5",
"worstRating": "1",
"ratingCount": 512,
"reviewCount": 512
}Common Mistakes to Avoid
- Missing author.name: The
authorobject must include anameproperty. An empty author object or one with only@typecauses an error. - Author name exceeds 99 characters: Greadme errors on author names of 100 characters or more — use a real, concise name.
- Promotional author name: Using text like "50% discount until Saturday" as an author name is flagged as an error. Author names must be real person or organization names.
- Missing itemReviewed.@type: Always specify what type of item is being reviewed — Greadme errors if
@typeis absent fromitemReviewed. - Comma decimal separator:
"4,5"causes an error. Always use"4.5". - Self-reviews on own site: Deducted 30 points and ineligible for rich results.
- Wrong case for property names:
reviewratingoritemreviewedwill not be recognized. All property names are case-sensitive in JSON-LD.
How Greadme Validates Review and AggregateRating Schema
Greadme runs dedicated validators for both Review and AggregateRating schemas. The validation starts at 100 points and applies the following deductions:
| Issue | Severity | Points lost |
|---|---|---|
Missing author | Error | −20 |
Missing author.name | Error | −15 |
| Author name ≥ 100 characters | Error | −15 |
| Promotional author name | Error | −15 |
Missing itemReviewed | Error | −20 (Review) / −25 (AggregateRating) |
Missing itemReviewed.@type | Error | −10 |
Missing itemReviewed.name | Error | −10 |
Missing reviewRating | Error | −20 |
Missing ratingValue | Error | −15 (Review) / −25 (AggregateRating) |
Comma decimal in ratingValue | Error | −10 |
Missing ratingCount and reviewCount | Error (AggregateRating only) | −20 |
| Self-serving review (LocalBusiness/Organization on own site) | Warning | −30 |
Missing datePublished (Review) | Warning | −5 |
Missing reviewBody | Warning | 0 (advisory only) |
| Case-sensitive property name error | Warning | −10 per field |
Use Greadme to audit your Review and AggregateRating schemas and see exactly where points are being lost before Google re-crawls your pages.
Review Schema for AI Visibility
AI search engines — including Google AI Overviews, ChatGPT Search, and Perplexity — increasingly use structured rating data to answer questions like "what is the best rated X?" or "how do users rate Y?" A well-formed AggregateRating with a numeric ratingValue and a concrete ratingCount gives AI systems the exact data points they need to generate accurate comparative answers.
In particular, product comparison queries are one of the top citation categories for AI search engines (Princeton/Georgia Tech GEO research, ACM KDD 2024). Pages that combine a Product or LocalBusiness schema with a properly formed AggregateRating are significantly more likely to be cited in AI comparison responses.
Frequently Asked Questions
Can I add both Review and AggregateRating to the same page?
Yes. A common pattern is to embed both inside a parent Product or LocalBusiness schema: the review property holds individual Review objects, and the aggregateRating property holds the overall AggregateRating. Google renders the aggregate rating as the star snippet in search results.
Does the ratingValue need to be a number or can it be a string?
Google accepts both numeric values (4.5) and string values ("4.5"). Greadme validates both. The key requirement is using a dot as the decimal separator — never a comma.
Can I use Review schema for testimonials on my own site?
Yes, but with an important caveat: if the testimonials are about your own business (i.e., itemReviewed is your own LocalBusiness or Organization), Google will not display them as rich results, and Greadme will flag the self-review pattern. For product reviews on your own e-commerce site (where customers review your products), this is perfectly valid and eligible for rich results.
What if bestRating is not 5?
Always specify bestRating and worstRating explicitly when your scale differs from the default 1–5. For example, if you use a 1–10 scale, set "bestRating": "10". Greadme warns (but does not error) when these fields are absent, since the defaults are 5 and 1.
