Skip to main content

Free Product Schema Checker

Check Product markup against Google's rich result rules.

Paste Product JSON-LD, or the source of a whole product page, and see exactly which fields Google needs and which are missing or malformed. Every finding explains what the field does, so you know whether it blocks the rich result or only weakens it.

Free, no signup Runs in your browser Reads pasted HTML

Schema clean? Keep it that way

Hand written markup drifts. Generated markup does not.

Grigora Commerce writes Product structured data from the real product record, so price, currency and stock in the markup stay identical to what the page shows. Site, newsletter and store run on one platform.

How to check Product schema

Four steps from pasted markup to a clean result.

1

Paste your markup

Drop in a JSON-LD object, or the whole page source and let the tool find the ld+json blocks.

2

Run the check

Every Product node is read and measured against the Google product structured data rules.

3

Fix the errors

Errors block the rich result. Warnings let it render but leave detail on the table.

4

Re-check and ship

Paste the corrected markup back in, confirm it is clean, then request indexing.

How to check Product schema, step by step

Real screenshots of the current tool, using sample inputs. Long results are shown as a preview.

  1. 1

    Paste your Product markup

    A JSON-LD block on its own, or a whole page source. The checker finds the Product object inside it either way.

    Free Product Schema Checker in its default state before the walkthrough
  2. 2

    Load the example to see the shape

    The example carries the fields Google reads for a product rich result, so you can compare your own markup against one that passes.

    Free Product Schema Checker with sample input or settings in place
  3. 3

    Review the result

    Select Check Product schema to run the tool. This screenshot shows the result returned for the sample input.

    Free Product Schema Checker showing its actual result with sample inputs

When to run this check

Six moments a schema check pays for itself.

Before publishing a product page

Catch a missing priceCurrency while the page is still a draft rather than after it is crawled.

When rich results stop showing

A theme update quietly changes the markup. Paste the live source and see what moved.

After a platform migration

New template, new field names. Confirm price, image and availability survived the move.

Auditing a client storefront

Check a sample of product pages and hand back a list of fields with the reason each one matters.

Reviewing a plugin output

Schema plugins emit whatever the settings allow. Verify what actually reaches the page.

Before a seasonal campaign

A broken offer block during a sale week costs the whole shopping surface.

Finding your markup, by platform

Where the Product JSON-LD lives and how to get at it.

Shopify

  1. Open a live product page.
  2. View source and copy the whole page.
  3. Paste it here to read the theme output.

WooCommerce

  1. Open a product permalink.
  2. Copy the page source, including plugin blocks.
  3. Paste it here to see every Product node.

Grigora Commerce

  1. Open a published product page.
  2. Copy the source, product markup is generated for you.
  3. Paste it here to confirm the fields.

Hand written JSON-LD

  1. Copy the object between the script tags.
  2. Paste the JSON on its own.
  3. Fix the errors and paste it back.

Grigora vs. other schema checkers

Side by side.

CapabilityGrigoraRich Results TestSchema lintersSEO suites
Runs without uploadYes, in your browserSends the URL to GoogleUploads your markupRequires account
Accepts pasted HTMLYes, finds ld+jsonYesJSON onlyURL only
Explains why a field mattersYes, on every findingRule name onlyRule name onlyPartial
Checks GTIN check digitYesNoNoNo
Signup requiredNoNoYesYes

Common errors and how to fix them

Eight mistakes that keep a product out of rich results.

Price written with a symbol

Cause: price set to "$89.00" or "89,00".

Fix: Use a bare decimal, 89.00, and put the currency in priceCurrency as USD.

Missing priceCurrency

Cause: Only price is set.

Fix: Add the three letter ISO 4217 code. A number with no currency is dropped.

Free text availability

Cause: availability set to "in stock" or "Available".

Fix: Use https://schema.org/InStock, or the bare member name InStock.

Relative image path

Cause: image set to /img/kettle.jpg.

Fix: JSON-LD does not resolve relative paths. Use the full absolute URL.

Empty brand object

Cause: brand set to {"@type": "Brand"} with no name.

Fix: Give the Brand node a name, or remove the field entirely.

GTIN check digit fails

Cause: One digit mistyped when the barcode was copied.

Fix: Re-read the barcode. The last digit is computed from the others.

Rating with no count

Cause: aggregateRating has ratingValue but no reviewCount.

Fix: Add reviewCount or ratingCount. An average with no sample size is ignored.

Review with no author

Cause: review objects carry only a rating.

Fix: Add an author with a name. Anonymous reviews are not used.

Product schema rules worth memorising

The constraints behind most invalid markup.

3
Required top level fields: name, image and offers
10
Accepted ItemAvailability values, and no others
4
Valid GTIN lengths: 8, 12, 13 and 14 digits
0
Bytes of your markup sent to a server by this tool

Frequently asked questions

Ten answers about Product structured data.

It reads the Product JSON-LD on a page and compares it to the fields Google requires for a product rich result.
name, image and offers, where the offer carries price, priceCurrency and availability. Everything else is recommended.
No. Extraction and validation happen entirely in your browser with JSON.parse and a regular expression over ld+json script tags.
Yes. The tool scans the pasted source for script tags with type application/ld+json, parses each one, and checks every Product node it finds, including products nested inside an @graph or an ItemList.
price must be a bare decimal such as 19.99.
The schema.org ItemAvailability members: InStock, OutOfStock, PreOrder, PreSale, BackOrder, SoldOut, Discontinued, InStoreOnly, OnlineOnly and LimitedAvailability.
It is recommended rather than required. A GTIN or an MPN is what links your listing to the global record for that product, which is how Google groups your page with the same item sold elsewhere.
A GTIN ends in a check digit computed from the digits before it. If any digit is mistyped the checksum no longer matches, so the number can be proven wrong without looking it up in any database.
Only when the ratings are real and visible on the same page. Marking up ratings you do not display, or ratings you have invented, is the most common cause of a structured data manual action against a store.
No. Valid markup makes the page eligible. Google still decides case by case based on page quality, whether the marked up content is visible to a visitor, and how the query is interpreted.
Guide

How to Sell Digital Products: Where to Sell, Fees and Tax

Checking a product page for a download? The guide compares what Etsy, Gumroad, Payhip and your own site keep from each sale.

Read the guide

Related free tools

Other utilities that pair with the Product Schema Checker.

Sell from the site you already run

Product pages, correct structured data, checkout and orders in one place. Try it free for 14 days, no card needed.

Start building free