SchemaValid
ENDE

Product Schema Generator

Create valid Product JSON-LD structured data for your online shop — with price, availability, GTIN and ratings, ready for Google Merchant listings. Instant, in your browser, free.

Try an example

Basic info


Identifiers

The GTIN (barcode number, EAN/UPC) is optional but strongly recommended — Google uses it to match your product for Merchant listings.


Price & availability


Ratings (optional)

Optional. Add both a rating and a review count to include an aggregateRating — the markup that can show star ratings in search results.

JSON-LD code

Fill in the required fields (name, price, currency) to generate the JSON-LD code.

Why Product schema matters for Merchant listings

Product structured data tells Google exactly what you are selling: the name, image, brand, price, availability and condition of an item. When this data is present and valid, your pages become eligible for rich product results and free Merchant listings in Google Search, Google Images and the Shopping tab — often shown with price, availability and star ratings directly in the results. That extra detail makes your listing stand out and typically improves click-through. Without valid Product markup, Google has to guess this information from the page, and your products are far less likely to appear in these enhanced placements.

Required fields for Google Shopping

At a minimum, Google needs a product name and an offer with a price and currency — those are the fields this tool requires before it outputs code. To actually qualify for Merchant listings and rich results, you should also provide an image, a brand, and a unique product identifier: a GTIN (the barcode/EAN/UPC number) and/or an SKU. The GTIN is the single most valuable identifier because Google uses it to match your exact product across the web. Availability and item condition round out the offer, and an aggregateRating (rating value plus review count) unlocks star ratings — but only mark up ratings that are genuinely visible on the page.

How to add the schema to your shop

Copy the generated code and paste it into a script tag of type application/ld+json in the head section of the product page it describes. Most shop systems let you add this in a theme template or via an SEO app; the name, price and availability in the markup must match what customers actually see on the page. A minimal example looks like this:

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "Product",
  "name": "Executive Anvil",
  "brand": {
    "@type": "Brand",
    "name": "ACME"
  },
  "offers": {
    "@type": "Offer",
    "price": "119.99",
    "priceCurrency": "EUR",
    "availability": "https://schema.org/InStock"
  }
}
</script>

Frequently asked questions

Which fields are required for Product schema?
Schema.org and Google need at least a product name and an offer with a price and price currency. This tool enforces exactly those three. For Merchant listings and rich results, also add an image, brand and a GTIN or SKU.
What is a GTIN and do I need one?
A GTIN is the global trade item number encoded in a product's barcode — usually an EAN (13 digits) or UPC (12 digits). It is optional in schema.org terms but strongly recommended, because Google uses it to identify your exact product and is far more likely to show it in Merchant listings.
Can I show star ratings in Google results?
Yes, if you add an aggregateRating with a rating value and a review count. Google can then display star ratings in the search snippet. Only mark up ratings that are actually shown to users on the page, otherwise it violates Google's guidelines.
Does this tool store my product data?
No. The generator runs entirely in your browser. Nothing you type is sent to a server, stored, or tied to an account — you just copy the generated JSON-LD and paste it into your shop.
How do I check that the markup is valid?
Paste your product URL or the generated code into Google's Rich Results Test or the schema.org validator. They parse the JSON-LD and report whether the Product and Offer structure is valid and eligible for rich results.
What is Product schema markup?
Product schema markup is a JSON-LD snippet based on the schema.org Product type that describes an item for sale — its identity via name, brand and identifiers, and its commercial terms via a nested Offer. It's a machine-readable layer added purely for search engines, not something shoppers see directly.
What's the difference between Product and Offer?
Product describes the item itself — its name, brand, image and identifiers like GTIN or SKU. Offer describes the commercial terms around it — price, currency, availability and condition — and lives nested inside the Product as the offers property. A single Product typically has one Offer, though schema.org also supports multiple offers for the same product from different sellers.
Can I list multiple products on one page?
It's best to avoid it — Google expects one Product per dedicated page so the offer details clearly belong to a single item. For variants like sizes or colors, consider a dedicated page per variant rather than repeating full Product markup for several items on one page.
Does valid Product markup guarantee rich results in Google Shopping?
No. Valid structured data makes your listing eligible for rich results and free Merchant listings, but Google decides whether and how to display it based on the page's overall quality, trustworthiness and relevance — there's no guarantee tied to the markup alone.
Can I add both an aggregate rating and individual reviews?
Yes, and it's common to use both together: aggregateRating summarizes the overall score and count, while individual review entries can show specific testimonials. This tool generates the aggregateRating; for individual reviews, add them separately using the Review Schema Generator's output alongside this Product markup.
What if my product goes out of stock?
Update the availability field to Out of stock as soon as the product actually sells out, and change it back once it's replenished. Leaving stale 'In stock' markup on a sold-out product creates a mismatch with what customers experience at checkout, which is exactly the kind of inconsistency Google's guidelines warn against.
How do I handle a variable price or price range?
This tool's price field expects a single number matching what's shown on the page. If your product genuinely has a variable price — for example depending on size — schema.org supports an AggregateOffer with lowPrice and highPrice instead of a single Offer; you'd adjust the generated JSON-LD manually for that case.

Related tools