Catch Merchant Center disapprovals
before Google does.

Paste your product feed. Get an instant, line-by-line audit of the things that actually get items disapproved — invalid GTIN checksums, currency symbols in prices, duplicate IDs, missing required attributes. CSV, TSV, XML and Shopify exports. No signup, no upload — the audit runs entirely inside your browser.

What's wrong, grouped

Line by line

Now fix it — in one click

feedcheck repairs most of these automatically — normalise prices to 19.99 USD, upgrade http:// image links, de-duplicate IDs, trim over-length titles, strip GTIN separators — and hands you back an upload-ready CSV plus a changelog of every single edit.

Free, unlimited rows. Everything happens locally — nothing is uploaded, nothing is stored.
Too many rows to babysit? Have us fix the whole feed for $29 →

Pricing

CLI

Free
MIT licensed, zero dependencies
  • Full audit, unlimited rows
  • CSV / TSV / XML / Shopify
  • JSON output + CI exit codes
  • Runs locally, feed never leaves your machine

Fixed feed

Free
in beta — tips welcome
  • Everything in the audit
  • Auto-repaired, upload-ready CSV
  • Changelog of every edit made
  • Unlimited rows

Feed Rescue

$29 one-off
done for you, by a human
  • Send any feed — CSV, TSV, XML, Shopify export
  • We fix what the auto-fixer can't: category mapping, GTIN lookups, title rewrites
  • Upload-ready CSV back within 24 hours
  • Plain-English report of every change

Feed changes daily and you want it watched? Join the $19/mo monitoring beta → — it's not built yet; tell me what you'd need and you get it at half price for a year.

Prefer the terminal?

Same engine, runs entirely offline. Exits non-zero when it finds errors, so it drops straight into CI before a feed upload step.

$ feedcheck products.csv

  error  row 14  gtin      GTIN "012345678906" fails GS1 checksum — likely a typo.
  error  row 22  price     Price "$19.99" uses a currency symbol. Use "19.99 USD".
  warn   row 31  title     Title is 92 chars; Google truncates display after ~70.

  3 issues in 40 items (2 errors, 1 warning)

$ feedcheck products.csv --json | jq '.issues[] | select(.severity=="error")'

Publishing to npm is pending an account; ask for the tarball at the address below and I'll send it, or use the web audit above — it runs the identical ruleset.

What it checks

gtinGS1 mod-10 checksum, digit count (8/12/13/14), stray separators, and the brand+MPN fallback when no GTIN exists
priceCurrency symbols, missing ISO codes, unknown currencies, zero prices, sale_price not below price
title150-char hard limit, ~70-char truncation, ALL CAPS promotional flags, whitespace
link image_linkMalformed URLs and http:// where Google wants HTTPS
availabilityInvalid values, plus preorder/backorder missing availability_date
idDuplicates that silently drop rows, and IDs over 50 characters
structureRequired attributes missing from the feed entirely, or empty on individual rows

Fix guides

Plain-English walkthroughs for the disapproval reasons that cost the most revenue.