JSON-LD Review Schema Builder

Create Review structured data for testimonials and product reviews

Generate a Review or AggregateRating JSON-LD block with author, review body, rating value, best and worst rating, and the item being reviewed. Outputs a ready-to-paste script tag for review rich results. It runs free in your browser on Gera Tools, with nothing uploaded.

Last updated Source: Gera Tools

What is the difference between Review and AggregateRating?

A Review marks up one person's opinion with an author and body, while an AggregateRating summarises many reviews into one score and count. Use Review for a single testimonial and AggregateRating for an overall star average.

Review and rating markup, done right

The JSON-LD Review Schema Builder produces either a single Review or an AggregateRating block, correctly nested inside the item being reviewed. Review snippets add eye-catching stars to your search listing, which lifts click-through on commercial and local pages.

Review versus AggregateRating — when to use each

Use Review when you are marking up a single, specific review from one person. This requires an author name, a review body (the actual text), and optionally a publication date. It is appropriate for a testimonial on a product page, a guest review on an accommodation listing, or a critic’s review of a book.

Use AggregateRating when the page displays an aggregated score from multiple reviews — the “4.7 out of 5 based on 312 reviews” summary you see on product and business pages. This requires a ratingValue, a reviewCount (or ratingCount), and the scale bounds. It does not need an individual author because it represents a collective score.

A page can carry both at the same time: an AggregateRating in the product header and individual Review blocks below, all nested under the same Product parent.

How it works

When you choose Review, the tool builds a Review object with an author of type Person, a reviewBody, an optional datePublished, and a reviewRating Rating carrying ratingValue, bestRating and worstRating. When you choose AggregateRating, it builds an AggregateRating with ratingValue, reviewCount, bestRating and worstRating. In both cases the rating is wrapped inside an itemReviewed object whose @type and name you set, so the output is a complete, standalone block. The rating value is clamped to the scale you define.

Choosing the right itemReviewed type

The @type of the reviewed item governs whether Google will show rich results. Common eligible types include:

What you are reviewingSchema type
A physical or digital productProduct
A local shop, restaurant, or serviceLocalBusiness
A recipeRecipe
A bookBook
A filmMovie
A software applicationSoftwareApplication
A courseCourse

Google does not show review stars for all types — Person, Organization, and Event are generally ineligible for review-snippet display, though the markup is still valid structured data.

Complete example: product AggregateRating

{
  "@context": "https://schema.org",
  "@type": "Product",
  "name": "Wireless Headphones",
  "aggregateRating": {
    "@type": "AggregateRating",
    "ratingValue": "4.6",
    "reviewCount": "847",
    "bestRating": "5",
    "worstRating": "1"
  }
}

Common reasons review stars do not appear

  • The reviewed item type is not eligible for review snippets.
  • The ratingValue falls outside the declared worstRatingbestRating range.
  • The rating is not visibly displayed on the page — Google requires the markup to match visible content.
  • The review was written by the site owner about their own business or product — Google’s guidelines explicitly prohibit self-serving review markup.
  • The markup is valid but the page lacks enough authority for rich results to trigger.

After pasting the output into your page, validate with Google’s Rich Results Test to confirm the block is parsed correctly and eligible.