# Review schema: what is allowed, what is shown, what is self-serving

You get review stars in Google only when you mark up the right thing the right way. This page shows supported types, required fields, aggregate ratings versus single reviews, and the self-serving rule that blocks business-level stars.

Updated 2026-09-14 · Source: https://porteur.ai/guides/review-schema

## What review schema earns in Google Search

Review structured data makes a page eligible for the review snippet rich result. That is the star rating, the count of ratings and sometimes a short quote.

Structured data is not a ranking factor by itself. It helps machines read your page and can add features in results. You still need a useful page.

- Google recommends JSON-LD. Microdata and RDFa are also read.
- JSON-LD can sit in the head or the body. Google renders, so script-injected markup is seen.
- The Rich Results Test shows eligibility and missing fields. The Schema Markup Validator checks schema.org syntax only.

## Types that may carry a review

Google supports review snippets for specific types. Mark up one of these as the thing being reviewed, not a generic web page.

- Product
- SoftwareApplication
- Book
- Course
- Event
- LocalBusiness
- Movie
- Recipe

Pick the closest real type. If you sell a SaaS, use SoftwareApplication. If you sell a physical item, use Product. For a restaurant, LocalBusiness. For a guide, no review rich result applies.

> Do not use Organization or WebSite as the reviewed item for stars. They are not supported for review snippets, and business-level stars are blocked.

## The self-serving reviews rule

Google does not show rich results for self-serving reviews of a business on its own site. That covers LocalBusiness or Organization marked up as the itemReviewed on your domain.

Reviews of a product or a software app on your site are allowed. Your own product page can show stars if you have genuine customer reviews or an aggregate rating and you mark up Product or SoftwareApplication.

If you want business-level stars, link to third-party profiles. For example, a /reviews page can embed G2 or Google Business Profile widgets, but do not mark them up as LocalBusiness reviews on your own domain.

## Aggregate rating versus a single review

You can mark up either an aggregate rating or individual reviews. You can also include both on the same page.

| What you mark up | Schema types and fields | When to use it | How it shows |
| --- | --- | --- | --- |
| Aggregate rating | aggregateRating with ratingValue and ratingCount or reviewCount | You have many ratings for the same item, such as 4.6 from many ratings on /product/widget-pro | Stars and count, no review text |
| Single review | Review with reviewRating.ratingValue, bestRating, author.name, datePublished and reviewBody | You want to show a recent review on /product/widget-pro and it appears on the page | Stars and sometimes a short quote |

For clarity, include bestRating and worstRating to define the scale. Keep rating values in range. 4.6 on a 1 to 5 scale is fine. 8 on a 1 to 5 scale is not.

## Required fields for a valid review snippet

Two graphs are common. One where the itemReviewed holds aggregateRating. One where the Review references the itemReviewed. Keep the thing being reviewed as a supported type and make fields complete and consistent with the page content.

- itemReviewed: a supported type such as Product or SoftwareApplication, with a name that matches the page
- aggregateRating: ratingValue and ratingCount or reviewCount
- Review: reviewRating.ratingValue and bestRating, author.name, datePublished in ISO 8601, reviewBody if you show a quote
- URL fields: use absolute URLs, not relative
- Only mark up content that users can see on the page

If your page is also a buy page, Product markup may include offers. For product rich results you need name and at least one of review, aggregateRating or offers. This is separate from the review snippet, but can be on the same page.

For a SaaS, use SoftwareApplication. Name and offers.price with offers.priceCurrency are required for the app rich result, plus a rating. You can provide aggregateRating or a Review there too. Free apps use price 0.

## A JSON-LD example that validates

This example shows a product page with visible ratings and one quoted review. Values are typical examples, not measured. It validates for review snippets in the Rich Results Test if the same content is on the page.

```json
{
  "@context": "https://schema.org",
  "@graph": [
    {
      "@type": "Product",
      "@id": "https://yourproduct.com/product/widget-pro#product",
      "name": "Widget Pro",
      "image": [
        "https://yourproduct.com/images/widget-pro-front.jpg"
      ],
      "sku": "W-PRO",
      "brand": {
        "@type": "Brand",
        "name": "YourBrand"
      },
      "aggregateRating": {
        "@type": "AggregateRating",
        "ratingValue": 4.6,
        "bestRating": 5,
        "worstRating": 1,
        "ratingCount": 57
      }
    },
    {
      "@type": "Review",
      "@id": "https://yourproduct.com/reviews/9876",
      "itemReviewed": {
        "@id": "https://yourproduct.com/product/widget-pro#product"
      },
      "author": {
        "@type": "Person",
        "name": "Alex Taylor"
      },
      "datePublished": "2026-09-14",
      "reviewBody": "Setup took five minutes. Shipping was quick. The battery lasts longer than expected.",
      "reviewRating": {
        "@type": "Rating",
        "ratingValue": 5,
        "bestRating": 5,
        "worstRating": 1
      }
    }
  ]
}
```

Use absolute URLs for @id and images. Keep the product name and the quoted text exactly as shown to users. Dates use the YYYY-MM-DD format.

## Where honest ratings come from and how to show them

Google needs signals that the ratings are real and match the page. It also checks that the reviewed item is clear and supported.

- Third-party review sites: link to and embed your profiles on /reviews or the product page. Do not mark up LocalBusiness reviews on your own domain.
- In-app reviews: surface your own product’s ratings and quotes on /product/some-feature or /customers. Mark up Product or SoftwareApplication, not your company.
- Release notes and changelogs: do not mark these up as reviews. They are not reviews.
- Support tickets and NPS: do not mark these up either. They are not public product reviews.

A good product page shows the star average near the title, the count of ratings, and a set of quotes with dates and names. Your markup should match that layout one for one.

## How to implement and test review markup

1. **Choose the right type** If this is a SaaS app page, use SoftwareApplication. If it is a physical item, use Product. Do not use Organization or LocalBusiness to rate yourself.
2. **Map visible elements to fields** Decide where ratingValue, ratingCount, author.name, datePublished and reviewBody come from. If it is not visible on the page, do not mark it up.
3. **Add JSON-LD** Place one script type="application/ld+json" in the head or body. You can inject it with JavaScript. Keep URLs absolute and dates in ISO 8601.
4. **Validate syntax** Open validator.schema.org and paste the rendered HTML or URL. Fix schema.org errors until it parses cleanly.
5. **Check rich result eligibility** Run search.google.com/test/rich-results. Pick Review snippet. Fix missing required fields, ranges and URL issues until it shows eligible.
6. **Ship and monitor** Deploy. In Search Console, watch the review snippet enhancement report. Fix errors and warnings as they appear.

The validator and the Rich Results Test both read the rendered page. If you inject JSON-LD after load, the tests still find it. AI crawlers that answer questions do not run scripts, so server-rendered markup helps them read it.

## Common Rich Results Test errors and fixes

- Missing required field: add ratingValue and ratingCount to aggregateRating, or author and reviewRating to Review.
- Relative URL used where absolute is needed: change /images/x.jpg to https://yourproduct.com/images/x.jpg.
- Date not in ISO 8601: change Sep 14, 2026 to 2026-09-14.
- Price as text with a currency sign: in offers, use price: 30 and priceCurrency: USD, not "$30".
- Rating out of range: keep 1 to 5 if bestRating is 5. Do not send 6.
- Content not visible: only mark up reviews and ratings that users can read on the page.
- Broken graph: ensure itemReviewed points to the Product or SoftwareApplication node with a stable @id.

## How review schema fits with other markup on a page

A page can carry several types in one @graph. Keep each node clean and link them with @id when needed. Do not duplicate the same facts across nodes in conflicting ways.

- Product with aggregateRating and offers on /product/widget-pro.
- SoftwareApplication with aggregateRating on /pricing if that page is about your app and shows ratings.
- BreadcrumbList for navigation. It replaces the URL line in results.
- Organization for your logo and sameAs. This is separate from reviews and helps the knowledge panel.

Avoid marking up FAQs for stars. FAQ rich results only show on government and health sites as of 2026. You can keep FAQPage markup for assistants, but it will not add features in Search for a product site now.

## Questions

### Can I add review stars to my homepage?

No. Do not mark up your business as the reviewed item on your own site. Self-serving LocalBusiness or Organization reviews are blocked from rich results. Put review markup on product or app pages where the thing being reviewed is clear and supported.

### Can I show stars on category or listing pages?

Only if the page shows a specific item clearly and the markup refers to that one item. Generic category pages that list many products usually do not qualify for review snippets, and marking up multiple items on one page can confuse the graph.

### Is FAQ schema still relevant?

As of 2026, Google shows FAQ rich results only for well-known government and health sites. Your FAQPage markup can still help assistants read your content, but it will not add features to results for most product sites now.

### Do I need both aggregateRating and individual Review?

No. One is enough. Use aggregateRating if you have many ratings and want a single score and count. Add one or more Review nodes if you show quotes with authors and dates. Keep values consistent between them.

### How can I check the schema of my website?

Use the Rich Results Test to see eligibility for Google features and required fields. Use the Schema Markup Validator to check schema.org syntax. Both read the rendered page. Search Console will add an enhancement report when Google finds a supported type.

### What are 5 star reviews examples?

A visible quote with a clear author and date. For example: “Setup took five minutes” by Alex Taylor on 2026-09-14 with a 5 out of 5 rating. Mark this up as a Review with reviewRating.ratingValue 5, bestRating 5, and author.name "Alex Taylor".

## Read next

- [JSON-LD: how to write it, where to put it, how to test it](https://porteur.ai/guides/json-ld): See why Google recommends JSON-LD, where to place it, how to use one @graph, how to test with Google and schema.org, and what to fix.
- [The Rich Results Test: what it checks and what it does not](https://porteur.ai/guides/rich-results-test): Run Google’s Rich Results Test, read eligibility, warnings and errors, know its limits, and when to use schema.org’s validator and Search Console.
- [Product schema: the fields Google reads and the ones it requires](https://porteur.ai/guides/product-schema): Set up Product schema that earns snippets and merchant listings. See the required fields, the recommended ones and a full JSON-LD example.
- [SoftwareApplication schema for a SaaS: an example that validates](https://porteur.ai/guides/softwareapplication-schema): Add SoftwareApplication schema that passes Google’s Rich Results Test. See the required fields, a clean SaaS example, and how to test and ship it.
- [Structured data](https://porteur.ai/glossary/structured-data): Structured data is schema markup that names your page type. See why it changes results, how to add JSON-LD, and how to validate it.
- [Rich snippet](https://porteur.ai/glossary/rich-snippet): A rich snippet shows extras like price, rating or FAQ. See which schema can earn which result, how to add it, test it, and measure impact.

Paste your product or app URL and get a free check in about thirty seconds that reads your site and the searches and rivals around it, and shows three findings. Free check: https://porteur.ai/
