Schema

Why Are My Review Stars Not Showing in Google Search

Few things sting like watching the gold stars under your search result quietly disappear. Your reviews are real, your markup is still in the page, and yet the snippet that used to set you apart from the plain blue links is gone. In almost every case I have audited, the cause is not a bug on your end. It is a rule Google enforces about whose reviews are allowed to show, and most sites are quietly on the wrong side of it.

Star ratings in search results are a rich snippet, which is Google's name for the extra detail it sometimes layers onto a normal result. Google reads structured data, also called schema markup, on your page and decides whether to render the stars. It is always a decision, never a guarantee. The markup makes you eligible. Google still chooses, page by page and day by day, whether to show the snippet, and it routinely withholds it even when everything is technically correct.

That distinction is the whole reason this question is so frustrating. People assume that if the markup validates, the stars must show, and that if the stars vanish, the markup must have broken. Neither is reliably true. So instead of guessing, the productive move is to work through the five things that actually cause review snippets to disappear, in roughly the order of how often I find each one.

Why did my star ratings disappear when my markup never changed?

The most common cause is Google's policy against self-serving reviews, not a change you made. In September 2019 Google stopped rendering review snippets that a business places about itself, and it has held that line since. Stars that showed for years can vanish overnight because Google changed what it honors, not because your code broke.

Before 2019, you could put an aggregateRating on your own LocalBusiness or Organization markup, claim a 4.9 with 250 reviews, and Google would happily paint the stars. That was widely abused, so Google drew a hard line: review markup is self-serving when the review is about the entity that owns the page or controls the markup, and self-serving review markup is ignored. The rule applies to LocalBusiness, Organization, and every type that descends from them.

This is why a plumber, a dentist, or a marketing agency that has had stars under its homepage for years can wake up to find them gone. Nothing in the page changed. Google simply finished rolling the policy out to that result. If your markup describes your own business reviewing itself, there is no edit to the JSON-LD that brings the stars back, because the problem is the category of markup, not its syntax. Understanding that early saves weeks of pointless fiddling.

Which content types are still eligible for star snippets?

Google only shows review snippets for a defined set of types, and LocalBusiness reviewing itself is not one of them. Eligible types include Product, Recipe, Book, Movie, Course, Event, SoftwareApplication, and a handful of others where a third party reviews a distinct item. If your page is a service business reviewing its own services, you are outside the eligible set entirely.

The cleanest way to think about it: the review has to be about a thing that is separate from the reviewer. A customer reviewing a specific product you sell is eligible. A customer reviewing a recipe, a course, or a piece of software is eligible. Your business reviewing your business is not, because there is no independent item being rated. This is the distinction that trips up local service sites, since their whole offering is the company itself.

There is a narrow exception worth knowing. If you genuinely sell discrete products, each product page can carry Product schema with aggregateRating drawn from reviews of that specific product, and those stars are eligible. A bakery selling a named cake online, a shop selling a specific tool, a studio selling a named training course, all of these have a legitimate path to stars. A general homepage for a service business does not. If you are unsure which bucket you fall in, the overview of what schema markup is and why it matters lays out the type system in plain terms.

Does my review schema have to match the reviews on the page?

Yes, and a mismatch is the second most common reason stars vanish. Google requires that the rating and count in your markup reflect reviews a visitor can actually see on that same page. If your JSON-LD reports a 4.8 average from 90 reviews but the page shows no reviews, the snippet is ineligible and may earn a manual action.

This rule is specific and unforgiving. The numbers in your structured data are supposed to be the numbers a human reads on the page. A common failure is pulling an aggregate from a third-party platform, dropping it into schema, and never rendering the underlying reviews in the HTML. To Google's checkers, the page claims a rating that nobody visiting can verify, which reads as fabricated even when the average is honest.

The fix is to make the page and the markup tell the same story. If you assert ratingValue 4.8 and reviewCount 90, then 90 real reviews, or a clear summary of them, need to live in the visible content. The aggregateRating object also has required fields that silently kill the snippet when missing: ratingValue, plus either reviewCount or ratingCount. Leave out the count and Google treats the markup as incomplete. A code-correct way to assemble these without missing a field is to build it from a tested pattern, which is part of why I keep a schema generator that wires the required properties in for you.

How do I check whether the problem is invalid markup?

Run the page through Google's Rich Results Test first. It tells you whether Google detects valid review markup and whether the page is eligible for the snippet. Then open the Merchant listings or Review snippet report in Search Console to see live errors and any manual action. The Rich Results Test confirms eligibility; it does not promise the stars will always render.

Start with the Rich Results Test at search.google.com/test/rich-results. Paste the live URL. One of three things happens. It detects a valid review snippet, which means your markup is fine and the disappearance is a policy or quality issue rather than a syntax one. It detects the markup but flags errors, such as a missing ratingValue or an invalid type, which is a concrete bug to fix. Or it detects nothing, which means Google is not parsing your JSON-LD at all, often because the script block is malformed, blocked by robots.txt, or injected by JavaScript that the crawler did not execute.

Search Console is the second instrument, and it covers what the test cannot. Under the rich result reports you will see aggregated errors across your whole site, plus the Manual Actions report, which is where a structured data penalty shows up in plain language. A manual action for spammy or mismatched markup will say so directly, and the stars will not return until you fix the cause and request a review. Reading both tools together tells you which of the five causes you are dealing with instead of guessing.

  • Valid, no error, no manual action: markup is fine. The issue is the self-serving rule, an ineligible type, or Google simply choosing not to display the snippet today.
  • Valid markup, error flagged: a missing or malformed required field. Fix the exact property the test names.
  • Nothing detected: the crawler never saw your markup. Check for JavaScript-injected schema, a robots block, or a broken script tag.
  • Manual action present: a guideline violation, usually self-serving or mismatched reviews. Remove the cause, then request a review.

What is actually allowed, and what gets you penalized?

Allowed: third-party reviews of a distinct item, ratings that match what the page visibly shows, and complete aggregateRating fields. Penalized: rating your own business, marking up reviews the page does not display, averaging reviews collected from across an entire site onto one page, and inflating counts. The line is whether a visitor could independently verify the rating on that page.

The guidelines reward honesty and punish shortcuts in a fairly predictable way. You are on solid ground when the review is about something other than the page owner, the rating reflects reviews a person can read right there, and every required property is present. You drift into penalty territory the moment the markup makes a claim the page cannot back up, or the moment you rate yourself.

A few specific moves are reliably flagged. Aggregating reviews from your entire site and stamping the total on the homepage is against the rules, because the rating no longer maps to the page it sits on. Marking up testimonials you wrote yourself, or reviews lifted from a third-party site without showing them, both fail the visibility requirement. And padding a count to look more established is exactly the abuse the self-serving policy was built to stop. None of these are worth the short-lived bump; a manual action takes far longer to clear than the snippet ever earned you. Getting the structure right from the start is the core of what I do in schema markup services, precisely so a page never ships a claim it cannot defend.

When are the stars simply not coming back?

Be honest with yourself here. If you are a local service business marking up your own reviews, no valid code change will restore website star snippets, because the type is permanently ineligible. Your path is Google Business Profile reviews in the map, not site markup. Chasing site stars in that situation is wasted effort.

This is the part most articles skip because it is not what owners want to hear. A plumber, a law firm, a salon, a consultancy, any business whose product is itself, cannot get organic search star snippets from review markup on its own site. The 2019 policy closed that door and Google has not reopened it. You can validate your markup perfectly and still never see a star, because eligibility, not correctness, is the wall.

What you can do instead is real and often more valuable. Reviews on your Google Business Profile show as stars in the local pack and on Maps, which is where most local searchers look anyway. If you sell actual products or courses, move the review markup onto those individual item pages where it is eligible, and show the reviews there. And recognize that even on eligible pages, Google withholds snippets it judges low quality or thin, so a clean, fast, trustworthy page improves the odds. When that whole picture needs untangling, sorting out which reviews can earn stars and which cannot is exactly the kind of audit I run before touching a single line of markup.

Related Internal Links

Use these to fix the markup, understand the type system, and build review schema that is actually eligible.

FAQ

Why did my review stars disappear from Google after they were showing?

The most common reason is that Google tightened its rules on self-serving reviews. As of 2019 and reaffirmed since, Google ignores review markup that a business places about itself for a long list of types including LocalBusiness and Organization, so stars that once showed can vanish even though your markup never changed.

Can a local business show star ratings in Google search results?

Not from your own website's review schema. Google no longer renders self-serving review snippets for LocalBusiness and its subtypes. Local businesses still get stars, but those come from your Google Business Profile reviews shown in the map and local pack, not from markup on your site.

Does my review schema have to match the reviews shown on the page?

Yes. Google requires that review and rating markup reflect ratings genuinely visible to users on that same page. If the schema reports an average and count that a visitor cannot see in the page content, the snippet is ineligible and Google will drop it or issue a manual action.

How do I check why my star rating snippet is not showing?

Run the page through Google's Rich Results Test to confirm the markup is valid and detected, then check the Merchant listings or Review snippet report in Search Console for errors or manual actions. The test confirms eligibility, not that stars will always appear.

Want your review schema fixed by someone who knows the rules?

Joseph W. Anady audits why your star snippets vanished, separates the reviews that can earn stars from the ones that cannot, and builds eligible, guideline-clean schema that holds up in the Rich Results Test.

Impression Growth Library

Crafted by ThatDeveloperGuy.com