Staaarter

Product Schema Generator

Fill in a product's name, image, brand, price, and availability, and this tool builds a complete Product JSON-LD object with a nested Offer (and an optional AggregateRating), wrapped in a ready-to-paste <script type="application/ld+json"> tag for your product page. A free online tool from Staaarter, right in your browser.

Runs locallyUpdated 2026-08-04
By Staaarter Team
generatorjson-ldproduct

Overview

Introduction

Product rich results, the search listings that show a price, availability, and star rating right under the title, are driven entirely by Product JSON-LD, and the nesting is easy to get wrong by hand: price and availability live inside a separate Offer object, not as top-level Product properties.

This generator builds that nested structure from plain form fields, including the availability toggle mapped to the exact schema.org URI format (https://schema.org/InStock, not just the word "InStock") that's easy to forget when writing JSON-LD manually.

What Is Product Schema Generator?

A form-driven generator for Product JSON-LD: name, image, description, brand, SKU, and a nested Offer built from price, currency, and availability, plus an optional AggregateRating.

The output is what a product page's <head> needs to become eligible for Google's Product rich result (price, availability, and rating shown directly in search results).

How Product Schema Generator Works

Core fields (name, image, description, SKU) map directly to their Product properties; brand is nested as a Brand object per the spec rather than a bare string.

Price and currency, plus the availability toggle, are combined into a nested Offer object only when a price is entered; the availability toggle's value (InStock/OutOfStock/PreOrder) is expanded to its full https://schema.org/... URI form automatically.

When To Use Product Schema Generator

Publishing a new product page and wanting it eligible for a price/availability rich result in search.

Retrofitting structured data onto an existing ecommerce catalog, one product template at a time.

Features

Advantages

  • Handles the Offer nesting and the full schema.org availability URI automatically, both common sources of hand-written JSON-LD mistakes.
  • Nests brand as a proper Brand object rather than a bare string, matching what Google's documentation recommends.
  • Lets you generate valid minimal Product markup from just a name, and add pricing/rating fields incrementally.

Limitations

  • Doesn't verify pricing or availability values against your actual inventory system; this is a one-time snapshot, not a live data feed.
  • AggregateRating is only as valid as the review data backing it - this tool doesn't check whether visible reviews exist on the page to support the rating you enter.
  • Covers a single Offer per product; products with multiple variants or seller offers need a more advanced OfferShippingDetails/AggregateOffer shape not covered here.

Examples

An in-stock product with a rating

Input

Name: Trail Runner 3.0
Image: https://example.com/trail-runner.jpg
Description: Lightweight trail running shoe with grippy outsole.
Brand: Acme Sports
Price: 89.99, USD
Availability: InStock
Rating: 4.6 average, 128 reviews

Output

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "Product",
  "name": "Trail Runner 3.0",
  "image": "https://example.com/trail-runner.jpg",
  "description": "Lightweight trail running shoe with grippy outsole.",
  "brand": {
    "@type": "Brand",
    "name": "Acme Sports"
  },
  "offers": {
    "@type": "Offer",
    "price": "89.99",
    "priceCurrency": "USD",
    "availability": "https://schema.org/InStock"
  },
  "aggregateRating": {
    "@type": "AggregateRating",
    "ratingValue": "4.6",
    "reviewCount": "128"
  }
}
</script>

Price and availability are nested inside offers, and the availability value is expanded to its full schema.org URI form automatically.

Best Practices & Notes

Best Practices

  • Only add aggregateRating when the page itself displays real, visible reviews backing that rating - Google treats fabricated ratings as a policy violation, not just a quality issue.
  • Update availability whenever stock status actually changes; stale InStock markup on an out-of-stock product is a common cause of shopper complaints from search traffic.
  • Use an image at least 1200px wide where possible, matching Google's general recommendation for rich-result eligible images.
  • Keep price and priceCurrency in sync with what's actually shown at checkout, since a mismatch between structured data and the visible price is a policy violation.

Developer Notes

The Offer object is only emitted when a price is entered, so leaving price blank produces valid minimal Product schema (name plus whatever else is filled in) rather than an incomplete/invalid Offer with an empty price string.

Product Schema Generator Use Cases

  • Adding Product schema to a new ecommerce listing before launch
  • Retrofitting price/availability rich-result eligibility onto an existing product catalog
  • Generating a one-off Product snippet for a landing page selling a single item

Common Mistakes

  • Writing availability as a bare word like "InStock" instead of the full https://schema.org/InStock URI, which some parsers accept but Google's own documented format is the full URI.
  • Adding an aggregateRating with no actual reviews visible on the page, which violates Google's structured data policies even if the JSON itself is well-formed.

Tips

  • Run the output through the Structured Data Validator tool in this category, then double-check the Offer and rating values match what's actually displayed on the page.
  • If a product has no price yet (pre-launch), leave price blank rather than entering a placeholder value like 0 or 0.00.

References

Frequently Asked Questions