No Review or Rating schema
What is this issue?
This issue reports a Review schema block your page already declares that is
missing itemReviewed or reviewRating — not a page that carries no review markup at
all.
What this issue is not: it does not guess that a page showing star ratings or
customer testimonials in its visible content ought to carry Review schema. A page
with no declared Review block is never reported. It also does not check the numeric
range of a rating value here — that range check only runs when a rating is nested
inside a Product (reported under #108). A standalone AggregateRating block (#107)
is checked for the presence of ratingValue/reviewCount only, never for range.
Why it matters
AggregateRating schema significantly impacts click-through rates and trust:
- Star ratings in search: Pages with star ratings get 35% more clicks on average
- Social proof: Users trust businesses and products with visible ratings
- Rich snippets: Enables review count and rating display in search results
- Local SEO: LocalBusiness with ratings appear more prominently in maps
- AI search signals: AI engines use rating data to recommend top-rated options
- Conversion rates: Products with ratings have higher conversion rates
Resolving this issue improves your SEO health score by adding powerful social proof signals that increase click-through rates and user trust.
How to fix it
If this issue was raised, your page already declares a Review block missing
itemReviewed or reviewRating — open the finding for which one. The steps below are
for adding review markup to a page that has none: worthwhile, and never reported as a
defect while absent.
Add a
Reviewblock for any genuine, published customer or editorial review:{ "@context": "https://schema.org", "@type": "Review", "itemReviewed": { "@type": "Product", "name": "Product Name" }, "author": { "@type": "Person", "name": "Reviewer Name" }, "reviewRating": { "@type": "Rating", "ratingValue": "4", "bestRating": "5" }, "reviewBody": "The review text as shown on the page." }Include both required properties:
itemReviewed: the thing being reviewed (aProduct,LocalBusiness, etc.)reviewRating: aRating(orAggregateRating) with at least aratingValue
Match the schema to what is on the page: the rating and review text must reflect real, visible content — do not publish a
Reviewfor a testimonial that was never posted.For a summary rating across many reviews, use
AggregateRating(see #107) instead of, or alongside, individualReviewblocks.Validate with Google's Rich Results Test
Examples
Example 1: No Schema Declared — Not This Issue
<!-- Product page with visible customer reviews, but no Review schema -->
<html>
<body>
<h1>Wireless Headphones</h1>
<div class="review">"Great sound quality!" — verified buyer</div>
</body>
</html>Nothing is reported. A page's visible testimonials do not, on their own, trigger this check.
Example 2: A Well-Formed Review (passes)
{
"@context": "https://schema.org",
"@type": "Review",
"itemReviewed": {
"@type": "Product",
"name": "Wireless Headphones"
},
"author": { "@type": "Person", "name": "Alex Rivera" },
"reviewRating": {
"@type": "Rating",
"ratingValue": "4",
"bestRating": "5"
},
"reviewBody": "Great sound quality and battery life."
}Example 3: Review Missing itemReviewed (fails)
Problematic state:
{
"@context": "https://schema.org",
"@type": "Review",
"reviewRating": { "@type": "Rating", "ratingValue": "4" }
}Reported: itemReviewed missing.
Corrected state:
{
"@context": "https://schema.org",
"@type": "Review",
"itemReviewed": { "@type": "Product", "name": "Wireless Headphones" },
"reviewRating": { "@type": "Rating", "ratingValue": "4" }
}Example 4: Review Missing reviewRating (fails)
Problematic state:
{
"@context": "https://schema.org",
"@type": "Review",
"itemReviewed": { "@type": "Product", "name": "Wireless Headphones" },
"reviewBody": "Solid headphones."
}Reported: reviewRating missing.
Corrected state: add a reviewRating object with at least a ratingValue.
A Review nested inside a Product's review array is validated the same way, and a
reviewRating whose ratingValue falls outside its declared scale is reported under
the Product's own issue (#108) rather than here. A standalone AggregateRating block
missing ratingValue or reviewCount is issue #107.
How PixyScan detects this
Read the declared structured data: every JSON-LD block is parsed, and
@graphwrappers are flattened.Select declared
Reviewentities: any schema block whose@typeisReview— whether declared at the top level or nested inside another schema (e.g. aProduct'sreviewarray). A page that declares noReviewschema is not examined.Check the required properties: a declared
Reviewmust haveitemReviewedandreviewRating.This is reported when: a declared
Reviewblock is missingitemReviewedorreviewRating. A page with noReviewschema at all is never reported.
Two related but separate checks:
- A
reviewRating(or a Product'saggregateRating) whoseratingValueis out of its declared scale is validated separately — under the parent Product's own issue (#108) when nested inside a Product, since that is where the value-range rule runs. - A standalone
AggregateRatingblock missingratingValueorreviewCountis issue #107, not this one.
What we store
Storage Level
Page Level — This issue is evaluated for each individual URL that contains structured data.
Database Table / Prisma Model
PageStructuredData
Stored Fields
| Field | Type | Description |
|---|---|---|
| schemaType | SchemaType | The type of schema (e.g., Organization, Person) |
| schemaFormat | SchemaFormat | The format of the schema (JSON-LD, Microdata, RDFa) |
| schemaIdentifier | String? | Unique identifier for the schema |
| rawJson | Json? | The raw JSON-LD or structured data content |
| schemaErrors | Json? | Array of validation errors found in the schema |
| isValidSchema | Boolean? | Whether the schema is valid according to validation |
| missingFields | Json? | Reserved for future use — the crawler always writes null here today; no check currently populates it |
Detection Dependencies
- The following data sources are required to evaluate this issue:
- HTML Document — The crawler parses the HTML to find structured data (JSON-LD, Microdata, RDFa)
- Structured Data Validation — The extracted schema is validated against Schema.org definitions
- Schema Parser — JSON-LD scripts, Microdata attributes, and RDFa markup are parsed