Google Shopping Feed Validator

Find the disapprovals before Google does. Drop your product feed here and get every fixable problem — checked against 28 documented rules, with the official reference for each one.

🔒 Your feed never leaves your browser.

CSV, TSV or TXT — read locally, never uploaded.

What this tool checks — and what it cannot

Everything here runs in your browser against the feed file itself, so it covers the problems that live in the data: missing attributes, malformed prices, invalid GTINs, contradictory identifier settings, wrong enum values, duplicate ids.

It cannot check anything that requires visiting your website — whether the price in the feed matches your landing page, whether the image URL actually loads, whether the product page is up. Those are real disapproval causes, so a clean report here is not a guarantee of approval; it means the file-level problems are gone.

Every check this tool runs (28 rules)

File & structure

GMC-F01 No data rows

The file has a header but no product rows, or is empty entirely.

Fix: Export the feed again — an empty upload removes all products from your account.

Google specification ↗

GMC-F02 Header row missing

The first row must name the attributes (id, title, link, …). Without it Google cannot map the columns and rejects the whole feed.

Fix: Add a header row using the exact attribute names from the specification.

Google specification ↗

GMC-F03 Duplicate column

The same attribute appears in more than one column. Which value wins is undefined, so the feed must be fixed rather than guessed at.

Fix: Remove or rename the duplicate column.

Google specification ↗

GMC-F04 Unrecognized column

This column name is not a Google Shopping attribute. Custom columns are ignored by Google — harmless, but often a sign of a typo in an attribute name.

Fix: Check the spelling against the specification if this was meant to be a standard attribute.

Google specification ↗

GMC-F05 Row has a different number of columns than the header

A row with more or fewer fields than the header usually means an unescaped delimiter or line break inside a value — values silently shift into the wrong attributes.

Fix: Quote values that contain the delimiter, and remove line breaks inside fields.

Google specification ↗

Required attributes

GMC-R01 Missing id

Every product needs a unique id. Rows without one cannot be processed at all.

Fix: Use your SKU. Keep it stable — changing an id makes Google treat it as a new product and lose its history.

Google specification ↗

GMC-R02 Missing title

title is required and is the single strongest matching signal for shopping queries.

Fix: Add a descriptive title: brand, product type, and key attributes.

Google specification ↗

GMC-R03 Missing description

description is required for Shopping ads and free listings.

Fix: Add the product description used on the landing page.

Google specification ↗

GMC-R04 Missing link

link (the product landing page URL) is required.

Fix: Add the full URL of the product page, including https://.

Google specification ↗

GMC-R05 Missing image_link

image_link (the main product image URL) is required.

Fix: Add a direct URL to the main image file.

Google specification ↗

GMC-R06 Missing availability

availability is required and must be one of the accepted values.

Fix: Use in_stock, out_of_stock, preorder or backorder.

Google specification ↗

GMC-R07 Missing price

price is required for every product that is not exclusively a service.

Fix: Add the price as a number followed by the ISO currency code, e.g. 9.99 USD.

Google specification ↗

GMC-R08 Missing condition

condition is required for used and refurbished products, and recommended for everything else. Google assumes "new" when it is absent — which is a policy violation if the item is not new.

Fix: Set condition to new, refurbished or used.

Google specification ↗

Product identifiers

GMC-I01 Invalid GTIN

The gtin value fails GS1 validation (wrong check digit, wrong length, non-numeric characters, or spreadsheet damage such as scientific notation). Google rejects products whose GTIN it cannot verify.

Fix: Check the number printed under the barcode. Format the column as Text in your spreadsheet to stop it being mangled.

Google specification ↗

GMC-I02 identifier_exists is "no" but a GTIN was supplied

Setting identifier_exists to no declares that the product has no manufacturer identifier, so supplying gtin (or mpn) at the same time is a contradiction Google rejects.

Fix: Either remove the identifier_exists column for this row, or clear the gtin/mpn value.

Google specification ↗

GMC-I03 identifier_exists is "no" without brand or mpn

Products declared as having no identifier still need enough information to be recognized — Google expects a brand (and usually an mpn) on those rows.

Fix: Add your brand name. For genuinely unbranded custom items, use your store name as the brand.

Google specification ↗

GMC-I04 No product identifier at all

The row has no gtin and no brand+mpn pair, and does not declare identifier_exists=no. Most categories require an identifier; a few (custom-made goods, art, vintage) are exempt — which is why this is a warning, not an error.

Fix: Add the gtin, or a brand+mpn pair, or set identifier_exists to no if the product genuinely has no manufacturer identifier.

Google specification ↗

GMC-I05 Duplicate id

Two rows share the same id. Google keeps only one of them, so the other product silently disappears from your feed.

Fix: Give every product (and every variant) its own id.

Google specification ↗

Formats & enum values

GMC-M01 Invalid price format

price must be a number followed by a space and a 3-letter ISO 4217 currency code, e.g. "9.99 USD". A comma decimal separator ("9,99 EUR") or a currency symbol ("$9.99") is rejected.

Fix: Write prices as 9.99 EUR — full stop as the decimal separator, no thousands separators, no symbols.

Google specification ↗

GMC-M02 Invalid availability value

availability accepts only: in_stock, out_of_stock, preorder, backorder. Values like "In Stock", "available" or "yes" are rejected.

Fix: Use the exact lowercase value with underscores.

Google specification ↗

GMC-M03 Invalid condition value

condition accepts only: new, refurbished, used.

Fix: Use the exact lowercase value.

Google specification ↗

GMC-M04 Invalid URL

link and image_link must be absolute URLs starting with http:// or https://. Relative paths ("/products/x") and bare domains are rejected.

Fix: Use the full URL including the protocol and domain.

Google specification ↗

GMC-M05 Title too long

title is limited to 150 characters. Longer titles are truncated, and the cut usually lands mid-word in search results.

Fix: Put the most important words first and keep the title within 150 characters.

Google specification ↗

GMC-M06 Description too long

description is limited to 5000 characters; anything beyond that is dropped.

Fix: Trim the description, keeping the details buyers search for.

Google specification ↗

GMC-M07 Invalid identifier_exists value

identifier_exists accepts only yes or no (the older TRUE/FALSE forms are not accepted).

Fix: Use yes or no in lowercase.

Google specification ↗

Content quality

GMC-Q01 Title is in all capitals

Google's editorial rules prohibit gratuitous capitalisation. Fully capitalised titles are a common cause of "product data quality" disapprovals.

Fix: Use normal sentence or title case. Keep capitals only for acronyms and brand names.

Google specification ↗

GMC-Q02 Promotional text in the title

Promotional phrases ("free shipping", "sale", "best price", "!!!") are not allowed in the title attribute — they belong in a promotion, not the product name.

Fix: Remove the promotional wording from the title.

Google specification ↗

GMC-Q03 Placeholder or template text

The value looks like leftover template content (lorem ipsum, "N/A", "TBD", "{{product_name}}", "test"). These reach live feeds surprisingly often and read as broken data to buyers.

Fix: Replace with the real product data.

Google specification ↗

The three mistakes that cause most disapprovals

1. A GTIN that Google cannot verify

One transposed digit breaks the check digit and the product is rejected. Worse, spreadsheets quietly destroy barcodes: a 13-digit number becomes 8.71E+12, and a UPC starting with zero comes out 11 digits long. This validator runs the full GS1 check on your gtin column, so those show up here rather than in a disapproval email.

2. identifier_exists contradicting the data

Setting identifier_exists to no declares that the product has no manufacturer identifier. Submitting a gtin on the same row contradicts that declaration and Google rejects it. Conversely, leaving the attribute out while providing neither a GTIN nor a brand+MPN pair means the product has no identity at all.

3. Prices written the European way

Google requires 9.99 EUR: a full stop as the decimal separator, a space, then the ISO currency code. 9,99 EUR and €9.99 are both rejected — which catches out most sellers exporting from a locale that uses comma decimals.