🏷️ Product Schema (JSON-LD) Generator
By ToolNimba SEO Team · Updated 2026-06-19
Paste this block into the head section of the product page it describes (it also works inside the body), then check it in Google’s Rich Results Test.
This product schema generator builds a valid Product JSON-LD block for any item you sell. Fill in the name, image, description, brand, SKU, price, currency, availability and optional rating, and it assembles the structured data (including the offers and aggregateRating sections) for you. Copy the finished script tag and paste it into your product page so search engines can show price, availability and star ratings in the results.
What is the Product Schema Generator?
Product structured data is a small block of JSON written in the schema.org vocabulary and wrapped in a script tag of type application/ld+json. It tells search engines, in a machine-readable way, exactly what a page sells: the product name, an image, the price, the currency, whether it is in stock, and how customers have rated it. Google reads this markup to build product rich results, the listings that can show a price, an availability label and a row of review stars right under the page title.
The Product type usually nests two important objects. The offers object (schema.org Offer) carries the commercial details: price, priceCurrency as a 3-letter ISO 4217 code such as USD or EUR, and availability as a schema.org URL like https://schema.org/InStock. The aggregateRating object summarises customer reviews with a ratingValue (typically on a 1 to 5 scale) and a reviewCount or ratingCount. This tool builds both sections for you and quietly drops any field you leave blank, so the output stays clean and valid.
Markup must describe what a real visitor can actually see on the page. Google requires that the price, availability and ratings in your JSON-LD match the visible content, and it forbids review markup that the business writes about itself or that is not shown anywhere on the page. Used honestly, Product schema can earn eye-catching rich results that lift click-through rates; used to fake reviews or hide prices, it risks a manual structured-data penalty.
When to use it
- Adding Product rich-result markup to an ecommerce product page so Google can show price, stock status and review stars.
- Marking up a single landing page for a physical good, a gadget, a book or a piece of software you sell.
- Generating clean JSON-LD to hand to a developer or paste into a CMS field, without learning the full schema.org syntax.
- Replacing messy or invalid product markup that is failing in Google’s Rich Results Test.
How to use the Product Schema Generator
- Enter the product name and the URL of a product image.
- Add a short description, the brand and the SKU if you have them.
- Enter the price, the 3-letter currency code (such as USD) and pick the availability.
- Optionally add a rating value (1 to 5) and the number of reviews to include star ratings.
- Copy the generated script tag and paste it into the head section of your product page.
Formula & method
Worked examples
You sell Acme Wireless Headphones for 79.99 USD, in stock, rated 4.6 from 128 reviews.
- Set @type to Product and add the name "Acme Wireless Headphones".
- Add image, description, brand (Acme) and sku (ACM-HP-100).
- Build offers: price 79.99, priceCurrency USD, availability https://schema.org/InStock.
- Build aggregateRating: ratingValue 4.6, reviewCount 128.
- Wrap the JSON in a script tag of type application/ld+json.
Result: A valid Product block with nested Offer and AggregateRating, ready to paste into the page head.
You sell a paperback book for 12.50 EUR with no reviews yet.
- Add the product name and image URL.
- Build offers: price 12.50, priceCurrency EUR, availability https://schema.org/InStock.
- Leave the rating value and review count blank.
- The generator drops the aggregateRating object because there are no reviews.
Result: A Product block with offers only, no rating section, which is still valid markup.
Common schema.org availability values for the offers section
| Status | schema.org value |
|---|---|
| In stock | https://schema.org/InStock |
| Out of stock | https://schema.org/OutOfStock |
| Pre-order | https://schema.org/PreOrder |
| Back-order | https://schema.org/BackOrder |
| Discontinued | https://schema.org/Discontinued |
Key Product and Offer fields and what they mean
| Field | Belongs to | Meaning |
|---|---|---|
| name | Product | The product title shown to shoppers. |
| image | Product | A URL to a representative product image. |
| price | Offer | The numeric price, with no currency symbol. |
| priceCurrency | Offer | 3-letter ISO 4217 code, e.g. USD, EUR, GBP. |
| availability | Offer | Stock status as a schema.org URL. |
| ratingValue | AggregateRating | Average score, usually 1 to 5. |
| reviewCount | AggregateRating | How many reviews the average is based on. |
Common mistakes to avoid
- Marking up reviews that are not on the page. Google requires that aggregateRating reflects genuine reviews visible to visitors. Inventing a rating, or showing stars in search that do not appear on the page, can trigger a structured-data manual action.
- Using a currency symbol instead of an ISO code. priceCurrency must be a 3-letter ISO 4217 code such as USD, EUR or GBP, not a symbol like $ or the word "dollars". The price itself should be a plain number with no symbol.
- Writing availability as plain text. Availability should be a schema.org URL such as https://schema.org/InStock, not free text like "in stock" or "available". This generator writes the correct URL for you.
- Forgetting to keep the markup in sync with the page. If you change the price or run out of stock, update the JSON-LD too. Markup that contradicts the visible price or availability can be ignored or penalised by search engines.
- Adding the block but never testing it. Always paste the output into Google’s Rich Results Test or the Schema Markup Validator. A single missing required field can stop the rich result from showing.
Glossary
- JSON-LD
- JavaScript Object Notation for Linked Data, the format Google recommends for structured data, placed in a script tag in the page.
- Schema.org
- A shared vocabulary of types and properties (like Product and Offer) that search engines understand.
- Product rich result
- An enhanced search listing that can show price, availability and review stars beneath the page title.
- Offer
- The schema.org object inside a Product that holds commercial details such as price, currency and availability.
- AggregateRating
- A schema.org object summarising customer reviews with an average rating value and a review count.
- ISO 4217
- The international standard for 3-letter currency codes, such as USD, EUR and GBP.
- SKU
- Stock Keeping Unit, a code a retailer uses to identify and track a specific product.
Frequently asked questions
What is Product schema and why do I need it?
Product schema is structured data, written in JSON-LD, that describes an item you sell: its name, image, price, availability and ratings. Search engines read it to build product rich results, which can show price and review stars in the listing and lift click-through rates.
Where do I put the generated JSON-LD?
Paste the full script tag into the head section of the product page it describes. It also works inside the body. Each product page should carry its own block describing only that product.
Do I need both offers and aggregateRating?
No. The offers section needs a price and currency and is what powers price and availability in results. The aggregateRating section is optional and only included when you supply both a rating value and a review count. This tool drops any section you leave blank.
Can I make up review ratings to get stars?
No. Google requires that ratings reflect real reviews that visitors can actually see on the page. Faking ratings, or showing stars that appear nowhere on the page, risks a structured-data manual action that removes your rich results.
How should I write the price and currency?
Enter the price as a plain number with no symbol, for example 79.99. Enter the currency as a 3-letter ISO 4217 code such as USD, EUR or GBP. The availability is written automatically as a schema.org URL like https://schema.org/InStock.
How do I test that the markup is valid?
Copy the output into Google’s Rich Results Test or the Schema Markup Validator at validator.schema.org. They confirm the block is valid, flag any missing required fields, and preview how the rich result may look.