What Is Review Schema? The Complete Guide (2026)

Saar Twito9 min read
Saar Twito
Saar TwitoFounder & SEO Engineer

Hi, I'm Saar - a software engineer, SEO specialist, and lecturer who loves building tools and teaching tech.

View author profile →

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.

TL;DR

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:

TypeRepresentsTypical use
ReviewA single, individual review written by one personProduct review page, editorial review
AggregateRatingA computed average from many ratings or reviewsProduct 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

PropertyTypeGreadme rule
authorPerson or OrganizationError if missing. author.name required, max 99 characters, no promotional text
itemReviewedThing (any schema type)Error if missing. Must include @type and name
reviewRating.ratingValueNumber or TextError if missing. Must use dot (.) not comma (,) for decimals

Review Schema: Recommended Properties

PropertyNotes
reviewRating.bestRatingDefaults to 5 if omitted. Set explicitly when using a different scale
reviewRating.worstRatingDefaults to 1 if omitted. Set explicitly when using a different scale
datePublishedISO 8601 date (YYYY-MM-DD). Greadme warns if missing
reviewBodyThe full text of the review. Strongly recommended for user experience and AI extraction
publisherOrganization that published the review. Useful for editorial or media reviews

AggregateRating Schema: Required Properties

PropertyTypeGreadme rule
itemReviewedThing (any schema type)Error if missing. Must include @type and name
ratingValueNumber or TextError if missing. Dot (.) required for decimals — comma causes error
ratingCount or reviewCountIntegerError 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.

Important: If you run a restaurant and publish reviews about your own restaurant on your own website, those reviews will not earn Google star ratings regardless of how the schema is written. Reviews must come from genuine third-party sources.

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 author object must include a name property. An empty author object or one with only @type causes 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 @type is absent from itemReviewed.
  • 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: reviewrating or itemreviewed will 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:

IssueSeverityPoints lost
Missing authorError−20
Missing author.nameError−15
Author name ≥ 100 charactersError−15
Promotional author nameError−15
Missing itemReviewedError−20 (Review) / −25 (AggregateRating)
Missing itemReviewed.@typeError−10
Missing itemReviewed.nameError−10
Missing reviewRatingError−20
Missing ratingValueError−15 (Review) / −25 (AggregateRating)
Comma decimal in ratingValueError−10
Missing ratingCount and reviewCountError (AggregateRating only)−20
Self-serving review (LocalBusiness/Organization on own site)Warning−30
Missing datePublished (Review)Warning−5
Missing reviewBodyWarning0 (advisory only)
Case-sensitive property name errorWarning−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.