Build Product JSON-LD with an offer, brand, SKU, aggregate rating, and individual reviews. The panel under the output runs the same rules Google's product rich results use, so you can see exactly which field is missing while you type.
{
"@context": "https://schema.org",
"@type": "Product",
"aggregateRating": {
"@type": "AggregateRating",
"ratingValue": 4.6,
"reviewCount": 123,
"bestRating": 5,
"worstRating": 1
}
}name Product is missing required property "name".image Product is missing recommended property "image". Adding it improves rich result eligibility.description Product is missing recommended property "description". Adding it improves rich result eligibility.brand Product is missing recommended property "brand". Adding it improves rich result eligibility.sku Product is missing recommended property "sku". Adding it improves rich result eligibility.url Product is missing recommended property "url". Adding it improves rich result eligibility.Copy the snippet first, then paste it into either tool's code tab.
Paste this inside your page's <head> (or anywhere in the HTML). Then check it with the JSON-LD validator.
Product markup has a quirk: name is the only universally required property, but eligibility for rich results demands at least one of offers, review, or aggregateRating on top of it. We have seen plenty of technically valid Product snippets that never produce anything in search because they stop at name, description, and image. The inline validator here treats that as an error, matching what the Rich Results Test would tell you, because a Product without any of those three is dead weight.
The offer itself has its own small traps. Price goes in as a bare number (19.99, not $19.99), currency lives in priceCurrency, and availability should be a schema.org URL like https://schema.org/InStock rather than the word “available”. The form handles all three so the output comes out in the shape Google parses.
Stars in product results come from the aggregateRating block: an average value plus a review count, on the same page as the visible reviews. Individual Review entities nest alongside it, each with an author, a Rating, and ideally a date and body text. Google cross-checks markup against page content during quality reviews, so the numbers you enter here should be the numbers a visitor can verify by scrolling down. If your review data lives in a third-party system, prefer wiring the markup to that source over hand-editing it each month.
Once the snippet is on the page, confirm the deployed result: paste your live URL into the Rich Results Test, or run the raw JSON through our JSON-LD validator and inspect the entity tree in the visualizer if the nesting looks off.
Only name is strictly required, plus at least one of offers, review, or aggregateRating. That last rule surprises people: a Product with just a name and description is valid schema.org but ineligible for any product rich result. Image, description, brand, SKU, and URL are recommended and worth adding when you honestly have them.
Google accepts both, but the price must be the numeric amount only, no currency symbols. Put the currency in priceCurrency as an ISO 4217 code like USD or EUR. This generator formats it that way automatically.
Yes to both. Either one satisfies the eligibility requirement on its own. In practice pages with an AggregateRating are the ones that show stars; individual Review entities add supporting evidence and can surface reviewer quotes in some result types.
It can, and some SaaS pricing pages use Product with an Offer per plan. For the app itself, SoftwareApplication is usually the better match because Google documents a dedicated software rich result for it. We cover that choice in more depth on the review schema generator page.
Into the HTML of the product page itself, conventionally in the head, wrapped in a script tag with type application/ld+json. The toggle above the output adds the wrapper for you. One block per product page; do not put every product's markup on the homepage.
TWR adds AggregateRating schema to your public review page automatically — free. Collect verified reviews inside your app and let us handle the structured data.