Review Schema: How to Earn Star Ratings in Search Results
A plain-English guide to using review schema correctly so your small business earns star ratings in Google search results without violating Google policy.
# Review Schema: How to Earn Star Ratings in Search Results
You've seen them. You search for a plumber, a yoga studio, or a brand of coffee, and a few results stand out with gold stars and a rating like "4.7 (243)". Those listings get clicked more often. They look more trustworthy. And they're not magic.
Those stars come from a small block of structured data called review schema. Add it correctly and Google can show your ratings directly in the search results. Add it incorrectly and you either get nothing, or worse, a manual action.
This guide walks through what review schema is, when you're allowed to use it, how to add it without a developer on common platforms, and how to confirm it actually works.

What review schema actually is
Schema markup is structured data you add to your page's HTML. It tells search engines, in a standardized format, what your content represents. Review schema describes a rating or review someone has left for a thing: a product, a service, a recipe, a book, a course, or your business.
Two flavors matter:
- Review — a single review from one person about one thing
- AggregateRating — the average score from many reviewers, plus the count
For star ratings in search, AggregateRating is usually what you want. It's the "4.7 out of 5 based on 243 reviews" version.
Schema is most commonly written in JSON-LD, a small block of JSON inside a tag. You don't have to write it from scratch. Most modern CMS platforms generate it for you if you turn the right setting on.
When you're allowed to use review schema
This is where most small businesses get burned. Google has tightened the rules, and using review schema in the wrong place will get your snippets ignored or removed.
The short version: review schema must be about a specific item that has reviews from real customers, and those reviews must be visible on the same page.
What you can mark up:
- A product page with customer reviews shown on it
- A local business page (homepage of a single-location business, or contact/about page)
- A service page where customers have reviewed that specific service
- A book, movie, course, recipe, software, or event page
What you cannot mark up:
- A blog post about how great your company is
- A page where you self-rate your own product or service
- A category or listing page that doesn't focus on one item
- Reviews you've made up, copied, or paid for
There's also a rule that catches many sites off guard: you can't slap a global "4.9 stars from happy customers" badge on your homepage and add AggregateRating schema unless the reviews are genuinely about your business as an entity (LocalBusiness) and visible on the page. Self-serving widgets won't fly.
If you're unsure, ask one question: would a real visitor see the rating and reviews on this exact URL? If yes, you're probably fine. If the reviews live somewhere else, or there's no real review content, don't add the markup.
What it looks like in code
Here's a minimal example of AggregateRating on a product page.
{
"@context": "https://schema.org",
"@type": "Product",
"name": "Cold Brew Coffee Concentrate",
"image": "https://example.com/coldbrew.jpg",
"description": "32oz bottle of small-batch cold brew concentrate.",
"brand": { "@type": "Brand", "name": "Maple Street Coffee" },
"aggregateRating": {
"@type": "AggregateRating",
"ratingValue": "4.7",
"reviewCount": "128"
}
}
The required pieces for star ratings are:
- The thing being reviewed (Product, LocalBusiness, Recipe, etc.) —
itemReviewedfor standalone reviews - A rating value (typically 1 to 5)
- A review count (how many reviews the average is based on)
That's the core. Other fields can help, but those three carry the snippet.
How common platforms handle it
You probably aren't editing raw HTML. Here's what to do.
Shopify. Most modern themes include product schema out of the box. If you use Judge.me, Yotpo, Loox, or Shopify's own product reviews, the app injects AggregateRating into the product schema automatically once you have reviews. Confirm with Google's Rich Results Test.
WooCommerce. Adds product schema by default. AggregateRating appears once a product has at least one review. Rank Math or Yoast can add more complete schema. Avoid running two plugins that both inject product schema — they'll fight and produce duplicates.
WordPress (non-commerce). Use Rank Math, Yoast SEO, or Schema Pro. For a local business homepage, set up LocalBusiness schema and connect it to a review source. For posts that review specific products, use the plugin's Review block to mark up a single Review entry.
Wix and Squarespace. Both support structured data for products with reviews when you use their native review features. Custom schema injection is more limited.
Custom site. Generate JSON-LD with Google's Structured Data Markup Helper, paste it into a tag, and place it inside your page's or .

A walkthrough: getting stars on a local plumbing service page
Let's go through a realistic example. You run a plumbing company. Customers leave reviews on Google Maps, but you'd like stars to show up on your website's search results too.
Step one: pick the right page. Don't mark up your blog. Mark up the page that represents your business: usually your homepage, or a dedicated About or Contact page. It should describe your business and include actual reviews.
Step two: actually show the reviews on the page. Non-negotiable. Pull in a feed of your Google reviews with an embed widget, or display testimonials with the reviewer's name, the date, and the rating. If reviews aren't visible to a human visitor, the schema doesn't qualify.
Step three: add LocalBusiness schema with AggregateRating. A simplified example:
{
"@context": "https://schema.org",
"@type": "Plumber",
"name": "Westside Plumbing Co.",
"address": {
"@type": "PostalAddress",
"streetAddress": "412 Oak Avenue",
"addressLocality": "Portland",
"addressRegion": "OR",
"postalCode": "97201"
},
"telephone": "+1-503-555-0192",
"url": "https://westsideplumbing.example.com",
"aggregateRating": {
"@type": "AggregateRating",
"ratingValue": "4.8",
"reviewCount": "89"
}
}
Step four: test it. Run the page through Google's Rich Results Test. Paste in the URL. You want to see "Local Business" or "Review snippets" under "Detected items" with no errors.
Step five: wait. Even with valid schema, stars don't appear instantly. Google has to re-crawl and decide the snippet is worth showing. That can take days or weeks, and there's no guarantee — Google chooses when to display rich results.
The mini-checklist
Before you push schema live:
- The page focuses on a single item (a product, a business, a service)
- Real reviews are visible on the page, written by real customers
- The rating value matches what's shown to visitors
- The review count matches what's shown to visitors
- You're not marking up reviews you wrote yourself, paid for, or copied
- Only one schema script per item per page
- The page is indexable (no
noindex, not blocked in robots.txt)
Tick all of those and you're in good shape.

Common mistakes that quietly kill your stars
Marking up reviews that aren't on the page. AggregateRating with no visible reviews. Google detects this and ignores the markup, sometimes worse.
Inflated or hardcoded numbers. "5.0 stars (1,200 reviews)" with no source and the same numbers hardcoded into schema looks like manipulation. Use real, updating data.
Mixing up Review and AggregateRating. A single Review with no AggregateRating won't usually give you the "4.7 (128)" snippet. AggregateRating drives the count-based star display.
Forgetting itemReviewed. For standalone Review schema, you have to say what was reviewed. "Great service!" with no item reference is invalid.
Mismatched ratings scale. If bestRating is 5, ratingValue can't be 9.2. Sounds obvious — happens often when copy-pasting templates.
Self-serving reviews on service pages. Marking up a generic "Why choose us" page with handpicked quotes from years ago. Violates Google's guidelines.
Two plugins both injecting schema. Yoast plus Rank Math plus a theme that already adds schema equals three competing scripts. Pick one source of truth.
How to confirm stars are actually showing
Valid schema doesn't mean stars are being displayed. Check four places:
- Google's Rich Results Test. Confirms your markup is parseable and eligible.
- Google Search Console > Enhancements > Review snippets. Shows which pages Google sees as having valid review snippets, with any errors.
- Site search. Search
site:yourdomain.comand look at the listings. Stars will appear in the snippet if they're live. - Branded search. Search your business name. If you're showing stars and competitors aren't, that's the visible win.
If everything is valid in Search Console but stars aren't showing, common reasons are: not enough reviews (Google sometimes wants a meaningful sample), the page is too new, or Google has chosen not to show the rich result for this query.
Where review schema fits in a bigger picture
Stars in search results are a visibility boost, not a foundation. They lift the click-through of impressions you've already earned. Make sure your page also covers the basics:
- Clear, helpful content about what you do or sell
- Reasonable page speed and good Core Web Vitals
- A mobile-friendly layout
- Trustworthy signals (consistent name/address/phone for local, real about page, contact info)
Schema amplifies a good page. It doesn't rescue a thin one.

What to do this week
- Pick the one page on your site where review schema makes the most sense. Usually a top product, your homepage (if you're a local business), or your main service page.
- Make sure real reviews are visible on that page.
- Check whether your CMS, theme, or plugin already adds schema. Run the Rich Results Test on the page.
- If schema is missing or broken, fix it through your platform's review plugin or by adding a single JSON-LD block.
- Submit the page in Google Search Console to be re-crawled.
- Check the Search Console "Review snippets" report a couple of weeks later.
You don't need to mark up every page. One done correctly is worth ten done sloppily.
A free way to see where you stand
Not sure whether your site already has review schema, whether it's set up correctly, or whether other technical issues are holding back your search visibility? Run a free audit. FreeSiteAudit's free website audit tool checks for structured data including review snippets, flags errors, and gives you a plain-English breakdown of what to fix first. It also covers Core Web Vitals, mobile usability, and the other on-page basics that need to be in place before rich results can do their job. For a deeper look at structured data, see our schema markup fixes guide, or if you run a brick-and-mortar shop, our local business audit page goes into more detail.
Stars in search results aren't a trick. They're a small, well-defined reward for clearly telling Google what's on your page and backing it up with real customer reviews. Get those two things right and the stars usually follow.
Sources
- Google Search Central — Review snippet structured data: https://developers.google.com/search/docs/appearance/structured-data/review-snippet
- Google Search Central — Product structured data: https://developers.google.com/search/docs/appearance/structured-data/product
- Google Search Central — Local business structured data: https://developers.google.com/search/docs/appearance/structured-data/local-business
- Google Search Central — Creating helpful, reliable, people-first content: https://developers.google.com/search/docs/fundamentals/creating-helpful-content
Related Tools
Related Fixes
Check your website for free
Get an instant score and your top 3 critical issues in under 60 seconds.
Get Your Free Audit →