Product Schema Generator
Type in your product name, price, stock status and rating. The tool writes the code that lets Google show those details directly under your listing in search results, and previews what that listing would look like.
Your details
Google result preview
Stars need a rating and a review count, both from real reviews
Your product name appears here
Your product description appears here, or Google writes its own from the page.
Paste the block anywhere inside <head> or <body>, then confirm it parses with the schema validator.
Short answer
Product schema is a block of JSON-LD stating the facts of a product in a form built for machines: the name, the price and currency, whether it is in stock, its condition, and its rating. It makes the page eligible for product rich results, which is the price and star line that can appear under a listing. Google requires a name plus at least one of an offer, a review or an aggregate rating. The payoff is click-through rather than ranking. The rule that gets sites penalised is mismatch, and keeping the two in step across a catalogue is its own job, covered in the ecommerce SEO checklist: the price and availability in the markup must match the page exactly, and ratings must come from real reviews visible on that page.
What Product schema changes in a search result
When someone searches for a product, most results look identical: a blue title, a grey URL, two lines of text. Some carry a price, a stock status and a row of stars. That extra detail is not something Google worked out on its own. Those sites told it.
Product schema is how they told it. It states the facts in a form read literally, rather than leaving Google to work out which number on your page is the price.
The payoff is click-through, not ranking
A result showing a price and a rating answers the shopper's two questions before they click, and takes up more space doing it. Against a competitor whose listing shows neither, that is a real advantage at the same position. It is not a ranking signal and it never has been.
The preview beside the output shows what that listing would look like with the values you have entered, which is the fastest way to tell whether a field is worth filling in.
Which properties matter, and why
Google's required set is minimal, and meeting the minimum produces a listing that looks thin next to competitors. The useful set is larger.
| Property | Status | What it does |
|---|---|---|
| name | Required | The product title in the result |
| offers.price | Required in practice | Plain number, no currency symbol |
| offers.priceCurrency | Required with price | Three-letter ISO 4217 code |
| offers.availability | Recommended | Produces the in stock or out of stock line |
| image | Recommended | Google prefers several aspect ratios |
| brand | Recommended | Helps match your listing to the same product elsewhere |
| gtin or mpn | Recommended | The identifier used to match across merchants |
| aggregateRating | Optional | Star rating. Must be from real, visible reviews |
| priceValidUntil | Recommended | Google warns when absent; an expired one costs eligibility |
| shippingDetails | Optional | Can surface delivery cost and timing |
| itemCondition | Optional | New, used, refurbished, damaged |
How to mark up a product page
Six steps. Step six is the one that separates a demonstration from a store that can be left running.
- 01
Name the product exactly as the page does
The name in the markup and the name on the page have to be the same product. Adding category words or search terms that do not appear on the page is the beginning of a mismatch problem.
- 02
Add an offer with price, currency and availability
Price as a plain number with no symbol, currency as a three-letter ISO code, availability from the schema.org list. This is the block that produces the price line in a search result.
- 03
Supply a GTIN or an MPN if you have one
A barcode identifier is how Google matches your listing to the same product sold elsewhere. If you resell products other merchants carry, the GTIN materially improves that matching. If you make it yourself, an MPN is the equivalent.
- 04
Only add a rating if the reviews are real and shown
aggregateRating must come from reviews genuinely collected and visible on that page. Fabricated ratings, ratings borrowed from elsewhere and ratings for a different product are all violations, and this is enforced.
- 05
Set priceValidUntil
Google warns when it is missing, because without it the price has no stated shelf life. Set it to a date you are prepared to honour, and update it when your pricing cycle rolls over.
- 06
Generate it from your product data rather than pasting it
Prices and stock levels change. A static block that no longer matches the page is worse than no markup at all, so on a real store the JSON-LD should render from the same data the page renders from.
The three ways product markup gets you penalised
Product markup is enforced more actively than most types, because the incentive to overstate is obvious and the claims are checkable.
1. A price that does not match the page
Google compares the two. A markup price of 39.95 against a page price of 49.95 is not a rounding difference, it is a misrepresentation, and it earns a manual action against your product rich results. Stale markup after a price change is the most common way this happens by accident.
2. Ratings that are not real or not shown
aggregateRating has to come from reviews collected on your site and visible on that page. Borrowing a manufacturer's rating, aggregating reviews of a different product, or inventing the count are all violations of Google's guidelines.
3. Product markup on a category page
A collection page listing twenty items is not a Product. Marking it up as one claims a rich result the page does not deserve. Use ItemList for collection pages, and only when each entry links to its own product page.
- The markup must describe what a visitor can see on that page
- Availability must be current, not aspirational
- Every rating needs a review count above zero from genuine reviews
- One Product block per product page, not per variant on the same page
Check what actually shipped
Once the markup is live, confirm what rendered rather than what you wrote, since ecommerce platforms frequently inject their own Product block alongside yours. The schema validator fetches the live URL and reports every block it finds.
What this tool generates
Product JSON-LD
Name, description, image, brand, SKU, GTIN and MPN
Offer node
Price, ISO currency, availability and item condition
Shipping details
OfferShippingDetails with a destination country
Price validity
priceValidUntil, which Google warns about when missing
Aggregate rating
Only emitted when both a value and a non-zero count exist
Live result preview
The stars, price and stock line your listing would show
Generate this from your product data, not by hand
Frequently asked questions
What does Product schema get me?
Eligibility for product rich results: the price, availability and star rating that can appear under your listing in search. Those extra lines make the result physically larger and answer the two questions a shopper has before clicking, which is why product pages with valid markup tend to earn better click-through than ones without.
Which properties are actually required?
Google requires a name, and then either an offer, a review or an aggregate rating. Everything else is recommended. In practice you want name, image, description, an offer with price, currency and availability, and a brand, because a listing missing those looks thin next to competitors that have them.
Does the price in the markup have to match the page?
Exactly, every time. A price in your structured data that disagrees with the price on the page is the fastest way to earn a manual action against your product markup, and Google actively checks for it. The same goes for availability. If stock changes hourly, generate the markup server-side from the same data the page renders.
Can I make up the review count?
No. Aggregate ratings must come from reviews genuinely collected on your site and visible to visitors on that page. Fabricated ratings, ratings collected elsewhere and ratings for a different product are all violations. This tool only emits the aggregateRating node when you supply both a value and a count above zero, but it cannot verify the numbers are real.
What is a GTIN and do I need one?
A Global Trade Item Number is the barcode identifier: UPC, EAN, ISBN or JAN depending on region. It is not required, but it is how Google matches your listing to the same product sold elsewhere. If you resell products other merchants also carry, supplying it materially improves that matching. If you make the product yourself, an MPN is the equivalent.
Can I put a price range instead of a single price?
Yes, but not with this tool. A product with variants uses an AggregateOffer with lowPrice and highPrice rather than a single Offer. This generator emits a single Offer, which is correct for a single-price product. For variants, mark up each variant page separately or hand-edit the output to an AggregateOffer.
What availability value should I use?
InStock, OutOfStock, PreOrder, BackOrder, LimitedAvailability or Discontinued, written as full schema.org URLs, which this tool does for you. Use OutOfStock rather than removing the markup when something sells out: an accurate out-of-stock signal is better than silence, and it keeps the page eligible when stock returns.
What is priceValidUntil for?
It states how long the price holds. Google warns when it is missing, because a price with no expiry could be years stale. Set it to a date you are willing to honour and refresh it with your pricing cycle. An expired priceValidUntil can make the offer ineligible.
Where does the markup go?
On the individual product page, describing that product only. Do not put Product markup on a category page listing twenty items. Category and collection pages use ItemList instead, and only when each item genuinely links to its own product page.
Do I need shipping details?
They are optional, but Google can show shipping cost and delivery time in a result when they are present, and those are things shoppers filter on. A minimal OfferShippingDetails with a destination country is better than nothing, which is what this tool emits.
Why is my price not showing in search results?
The usual causes are a currency code missing or wrong, a price written with a symbol rather than as a plain number, an expired priceValidUntil, or a mismatch between the markup and the page. Beyond that, eligibility is discretionary: correct markup makes you a candidate rather than a guarantee.
Does Product schema improve rankings?
No. Structured data is not a ranking factor. The payoff is click-through: a result showing a price and a rating answers the shopper's questions before they click and takes up more space doing it. Against a competitor whose listing shows neither, that is a real advantage at the same position.
Other schema tools
Local Business Schema Generator
Tell Google your business name, address, phone, and opening hours in the format it reads literally. Type your details, copy the code, paste it into your site.
Use toolFAQ Schema Generator
Mark up your questions and answers so search engines and AI assistants can lift them as direct answers. Unsupported HTML is stripped for you.
Use toolEvent Schema Generator
Get your event date, venue, and ticket link into Google's event listings and Maps. Handles in-person, online, and hybrid events correctly.
Use toolBreadcrumb Schema Generator
Replace the raw URL under your search result with a readable trail like Home > Guides > Technical SEO. Enter each level, copy the code.
Use toolArticle Schema Generator
Tell Google who wrote your article, when, and for whom. The author link is the part that carries E-E-A-T, and most sites leave it out.
Use toolRead up on structured data
A tool tells you what is wrong. These explain what to do about it.
Google Killed FAQ Rich Results (May 2026): The Hot Take That Replaces Them Is Wrong Too
Read guideEcommerce SEO Checklist 2026 (Free Template, Complete Store Optimization)
Read guideSEO Checklist for Blog Posts 2026 (Free Template, Pre & Post Publish)
Read guideTerms this tool checks
- Schema Markup
Schema markup is a standardized vocabulary (developed by Schema.org and supported by Google, Bing, Yahoo, and Yandex) used to annotate web content with structured data.
- Structured Data
Structured data is code (typically JSON-LD format) added to web pages that helps search engines understand the content in a machine-readable way.
- Rich Results
Rich results (formerly called rich snippets) are enhanced search result formats that display additional visual information beyond the standard title, URL, and description.
One product page is easy. Four thousand is the problem
CrawlRaven crawls every product page you have, flags the ones with missing, invalid or stale structured data, and ranks them by the traffic each one already earns.