Review schema markup generator
Review markup describes an assessment of something specific. It is documented for a limited set of subject types, and the rating has to be visible on the page.
Reference copy unfinished. The generator below works and produces valid markup. The explanatory sections are still being written, so this page is not listed for search engines yet.
Google Search features this type can produce
From the registry| Feature | Status | Surface | Last verified |
|---|---|---|---|
| Review snippet (opens in a new tab) | ACTIVE | search | 2026-08-29 |
Meeting a feature’s documented requirements does not guarantee that the feature appears. No tool can promise that, and any that does is describing something it cannot know.
Generate the markup
Runs in your browser<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Review",
"author": {
"@type": "Person",
"name": "Sam Whitfield"
},
"datePublished": "2026-07-14",
"itemReviewed": {
"@type": "Product",
"name": "Aeropress Go travel coffee press"
},
"reviewBody": "Packs down small enough for a carry-on and makes a better cup than anything else this size.",
"reviewRating": {
"@type": "Rating",
"bestRating": 5,
"ratingValue": 4
}
}
</script>Paste this into the <head> of the page it describes. Markup that describes a page must live on that page.
Review markup only applies to certain things
Review and AggregateRating are documented for a defined set of subject types — products, recipes, books, courses, events, films, software and local businesses among them. Attaching a rating to an arbitrary type is not covered by the documentation, and it is the reason a lot of review markup quietly does nothing.
The subject also has to be the thing the page is about. A rating for a product, sitting on an article that mentions that product, describes something the page is not.
The rating has to be on the page
The rating value and the review count must be visible to a visitor. A rating that exists only inside the JSON-LD does not meet the requirement, and it is one of the easiest mismatches to detect — which means it is one of the easiest to be caught doing.
Where the scale is not one to five, state bestRating and worstRating. A four on a ten-point scale read as a four out of five misrepresents the review in the direction that flatters you, which is exactly the case the requirement exists to prevent.
Aggregate and individual reviews
AggregateRating summarises many reviews into an average and a count. Review describes one review with its own author and rating. A page can carry both: the aggregate for the summary, and individual Review nodes for the reviews shown.
Counting matters here. If the page shows twelve reviews and the markup declares three, something is wrong — though not necessarily the markup, since pagination and lazy loading both change what "shows" means. Our audit reports a count difference as something to review, with the count it found and why it might be unreliable, rather than as a violation.
Mistakes worth avoiding
An aggregate rating with no reviews anywhere
A reviewCount with nothing behind it on the page is the clearest form of this failure, and the easiest to find.
author as the business being reviewed
The author of a review is whoever wrote it. Where a business writes about its own product, that sits outside what review markup is documented for.
Ratings outside the stated scale
A ratingValue of 9.4 with a bestRating of 5 is internally contradictory and will be read as an error rather than as a ten-point score.
Check what you already have
If the page you are marking up already carries structured data, audit it before adding more. Duplicate entities from a theme and a plugin are the most common finding on established sites, and adding a third block makes it worse rather than better.