Review Schema Generator — Clear, Policy‑Aligned Reviews
Generate valid Review JSON‑LD for supported item types. Clarify author, rating, body, and date while respecting review snippet policies.
Why many review pages underperform
Pain points we solve
- Ineligible item types or self‑serving reviews prevent snippets from appearing.
- Missing author/date or unclear itemReviewed leads to validator warnings.
- Mixing single reviews and AggregateRating causes schema confusion.
- Hand‑written JSON‑LD is inconsistent across SKUs or apps.
How SwiftSchema helps
Solution
The Review generator focuses on essentials that matter for snippets: a clear itemReviewed (with a specific @type), reviewRating.ratingValue, author, reviewBody, and datePublished.
It produces copy‑ready JSON‑LD for single reviews and guides you to use AggregateRating on the item itself when summarizing many reviews.
We keep language and structure aligned with review policies to reduce issues.
How it works
How it works
- Choose Review in the generator below.
- Select or specify the itemReviewed type (e.g., Product, SoftwareApplication, Book) and name.
- Enter author, review body, rating value (and bestRating if needed), and datePublished.
- Copy JSON or Script, paste into the review page, and validate in the Rich Results Test.
- Use AggregateRating on the item page if summarizing multiple reviews.
One review per page. Validate. Ship.
What is Review structured data?
Review structured data describes an individual review (author, rating, body, date) for a specific item. It can support review snippets on eligible item types when policies are followed.
Use Review when:
- You are marking up a single, genuine review about one item (e.g., a product detail page highlighting a customer or editorial review).
- The review is visible on the page to both users and crawlers.
- The item type is supported for review snippets (Product, Book, SoftwareApplication, Movie, Recipe, CreativeWork variants).
Avoid Review when:
- You are summarizing multiple reviews (use AggregateRating on the item instead or in addition).
- You’re marking up self‑serving reviews on restricted types (e.g., LocalBusiness/Organization testimonials). Google often ignores these for snippets.
- The content is hidden behind paywalls, gated tabs, or heavily obfuscated to crawlers.
- The page is not the canonical place for the review (duplicate URLs with the same content).
Eligibility and policy notes
- Mark up only reviews you can legally publish and that users see on the page.
- Do not mark up third‑party syndicated reviews without permission.
- For YMYL topics (health, finance, safety), ensure human editorial oversight; avoid AI‑generated filler.
- Keep one primary review per Review block; use AggregateRating on the item for overall averages.
- Use supported item types; Review on generic WebPage is unlikely to help.
Item types and when to use them
- Product: Default for ecommerce; include SKU/brand if available. Pair with AggregateRating on the Product entity.
- SoftwareApplication / SoftwareApp: Add softwareVersion,operatingSystem,applicationCategory.
- Book: Include isbnand author; ideal for book reviews and publisher sites.
- Recipe: Use when the page is a recipe and you show a user or editorial review.
- Movie / CreativeWork: Use for editorial reviews with publisher context.
- LocalBusiness/Organization: Allowed in schema, but Google may treat self‑serving reviews as ineligible for snippets. Use sparingly and transparently.
Property guidance
- reviewRating.ratingValue (required): Numeric value. Add bestRating/worstRatingif scale ≠ 1–5.
- itemReviewed.name (required): Exact item name as shown on-page.
- itemReviewed.@type (recommended): Concrete type (Product, SoftwareApplication, Book, Recipe, etc.).
- author.name (recommended): Person or Organization. For labs/editorials, set publisher too.
- datePublished (recommended): ISO date the review was published on this page.
- reviewBody/headline (recommended): Keep concise and match visible text. headlineis great for editorial reviews.
- inLanguage (optional): Add when localized.
- publisher (optional): Use for editorial reviews to show source.
On-page parity checklist
- The same rating number and scale shown to users appears in ratingValue/bestRating/worstRating.
- The reviewed item on the page matches itemReviewed(name, type, identifiers).
- The review text and author match exactly; no rewritten or AI-swapped text in JSON-LD.
- Page is indexable (no noindex, no robots.txt block) and uses a self-referential canonical.
- If multiple reviews are shown, choose one to mark as Review and use AggregateRating on the item for the aggregate score.
Implementation steps (detailed)
- Confirm eligibility: Item type supports snippets; review is visible; page is canonical and indexable.
- Gather fields: Author, rating value/scale, datePublished, reviewBody/headline, item type, item name, and identifiers (SKU/ISBN/version).
- Generate JSON-LD: Use this guide’s generator with the correct item type and rating scale.
- Add AggregateRating (if applicable): On the item entity, include ratingValue,ratingCount,bestRating,worstRatingfor overall averages.
- Place schema: One Review script per page; put it in <head>or before</body>.
- Validate: Run Rich Results Test; check Search Console for Review snippet issues.
- Publish and monitor: Track warnings about unsupported types or self-serving content; keep data fresh.
JSON-LD examples
Single highlighted review on a product page
Editorial review of a SoftwareApplication
Book review with ISBN
User review on a recipe (UGC)
Policy and quality reminders
- Mark up only reviews that are visible and representative. Avoid cherry-picking only 5-star reviews if mixed sentiment is present.
- Disclose when a review is sponsored or incentivized; keep wording truthful to what users see.
- Self-serving reviews for your own business are unlikely to yield snippets; use them mainly for user clarity.
- Do not fabricate authors; use real display names/organizations.
- Keep datePublishedaccurate; do not backdate to appear fresher.
Common mistakes to avoid
- Unsupported item types: Using Review on WebPage or generic CreativeWork without a supported subtype.
- Mismatched rating scales: UI shows 1–10 but JSON-LD uses 1–5; align using bestRating/worstRating.
- Hidden content: Reviews behind scripts/tabs not rendered to crawlers; ensure server-rendered or hydration-friendly content.
- Duplicate review blocks: Multiple identical Review scripts on many pages; keep one per page or per highlighted review.
- Confusing Review vs AggregateRating: Use Review for one review; use AggregateRating on the item for averages.
Troubleshooting and validation
- Rich Results Test warnings: Ensure reviewRating.ratingValueanditemReviewed.nameexist; add@typefor the item.
- Search Console issues: Check if the page is indexable and the item type is supported for snippets. Remove self-serving reviews on restricted types.
- No snippets showing: Improve on-page quality, clarity of itemReviewed, and confirm eligibility; snippets are not guaranteed.
- Language mismatches: Add inLanguagewhen localized; keep content and schema in the same language.
Maintenance routine
- Revalidate when you change rating UI, scales, or review layout.
- Update or remove reviews if they are taken down; adjust AggregateRating counts if you use them.
- Refresh lastReviewedafter substantive content/schema edits.
- Periodically spot-check top review pages for parity between UI and JSON-LD and for policy compliance.
Required properties
reviewRating.ratingValueitemReviewed.name
Recommended properties
author.namereviewBodydatePublisheditemReviewed.@typereviewRating.bestRatingreviewRating.worstRatingpublisher.nameinLanguage
{
"@context": "https://schema.org",
"@type": "Review",
"author": {
"@type": "Person",
"name": "Taylor"
},
"datePublished": "2025-07-10",
"reviewBody": "Solid value and easy setup.",
"reviewRating": {
"@type": "Rating",
"ratingValue": "5",
"bestRating": "5"
},
"itemReviewed": {
"@type": "Product",
"name": "ACME Anvil"
}
}