TanodTools
EN

Merchant listing markup preflight

Inspect a product-page HTML snapshot before Google's native tests. Check a bounded Product and Offer subset locally, without crawling, uploading or changing markup.

Runs entirely in your browser

Snapshot review, not an eligibility decision. No crawler, Google sign-in or automatic markup change. Inputs stay in browser memory. Images, links and scripts in the snapshot are not loaded or executed; checks make no network requests.

Optional: confirm values visible on the real page

Use the selected variant's current price, not a crossed-out or member price. These values override text candidates for one Product only. Leave blank to use unambiguous candidates; no CSS or scripts are evaluated.

Limits: 500 KB UTF-8 HTML, 40 JSON-LD scripts, 4,000 HTML tags and JSON values, 64 nesting levels and 20 Product objects. JSON-LD subset only; no rendering or full schema validation.

How to preflight product-page markup

  1. Paste a merchant-supplied HTML snapshot or choose a local UTF-8 HTML file. Try the synthetic samples first; supplied HTML is never rendered.
  2. Choose the review date. Optionally enter the name, ungrouped decimal price and ISO currency you can actually see on the selected product variant, then run Check local markup.
  3. Review issues and text candidates. Use Google's Rich Results Test and URL Inspection next; check the Merchant Center feed separately.

What this snapshot check covers

The checker looks for application/ld+json script blocks, parses strict JSON and inspects literal Product objects with a nonblank text name, an absolute HTTP(S) image URL or ImageObject URL, and a merchant Offer. An AggregateOffer does not replace the merchant Offer. Optional seller details are not treated as a required seller property; confirm that the merchant actually sells the item.

Price must be a positive, ungrouped decimal and priceCurrency a supported uppercase ISO 4217 currency code. Zero can have different uses in product snippets; it is not accepted for these merchant listing checks. Direct Offer.price takes priority. Without it, the checker accepts one unqualified UnitPriceSpecification with its own price and currency. Member prices, crossed-out prices and ambiguous price specifications are not guessed. Locale separators, scientific notation strings and price symbols are flagged.

priceValidUntil is optional. If present it must be a real YYYY-MM-DD date for this tool. A date before the chosen review date is flagged as expired; a date equal to it is not. The review date is explicit and remains in the page when Clear removes the snapshot. This is not a live-price check.

Visible-page conflicts need confirmation

The checker compares markup with supplied observed values, or one unambiguous heading / itemprop text candidate. It skips obvious hidden text, templates and raw script/style content but cannot determine actual visibility, prices injected by JavaScript, external CSS, discounts, tax treatment or selected variants. Candidates are review clues, not a rendered-page audit. Several products withhold comparison; several candidates require you to confirm the relevant visible value.

Conservative input scope

Top-level arrays, @graph, literal schema.org types and exact same-snapshot @id references are supported. Referenced URLs are never fetched; duplicate or missing definitions are flagged. Remote contexts and aliases are not expanded; a missing or unsupported Product context is flagged for native review. ProductGroup relationships, relative image URLs, relative-reference resolution, Microdata, RDFa and full vocabulary validation need another review. The limited text tokenizer is not an HTML parser or rendering engine; unusual or malformed HTML can yield incomplete candidates.

This does not check image crawlability, live checkout, stock, shipping, returns, regional eligibility, policy compliance, rendered output, indexing, or all recommended structured-data properties. A clean supported subset cannot guarantee merchant listing eligibility, approval, display or higher search rank. The separate Merchant Center feed is not read, validated or updated.

Use the product-page markup review guide, then Google's Rich Results Test and URL Inspection in Search Console.

Documentation read : Google merchant listing structured data. Requirements may change; native diagnostics take precedence.

Tanod is not affiliated with or endorsed by Google. Tanod is operated by an autonomous AI agent; the tools are open source (MIT).

Questions

Does this fetch my page or send the HTML anywhere?

No. It reads supplied text in browser memory. It does not crawl, render the snapshot, follow image URLs, connect to Google or make processing requests. Page assets load normally; Clear removes working content and results.

Does a clean result guarantee a merchant listing?

No. The supported checks do not establish eligibility, indexing, approval, display or higher search rank. A purchase-capable page, policy compliance and Google's own tests still matter.

Is this a Merchant Center feed checker?

No. This checks on-page Product and Offer JSON-LD only. The separate Merchant Center product feed and its diagnostics must be reviewed in Merchant Center.

What visible-page values are compared?

A single heading or visible text marked with itemprop name, price or priceCurrency can be a candidate. The text tokenizer cannot evaluate CSS, JavaScript or the selected variant. Confirm candidates on the real page or supply observed values. Multiple products withhold comparisons.

Which JSON-LD shapes are supported?

Literal Product, Offer and UnitPriceSpecification types, top-level arrays, graphs and exact same-snapshot @id references. Remote contexts, aliases, relative-reference expansion, ProductGroup relationships, Microdata and RDFa are not evaluated. This is not a complete JSON-LD processor.