← Free feed check

What the free feed check looks at

Every check, its weight in the score, what we repair and what we leave to you. Rendered from the same tables the check runs, so this list is the check.

Short answer. The free feed check parses your feed the way a channel would, runs 21 checks on every product it read, opens a sample of your images to measure them and a sample of your product pages to compare prices, and scores the result out of 100. It repairs 7 kinds of defect in a preview and names the 12 kinds no rewrite can settle, so nothing in the report is a guess.

What it reads

A Google-format XML feed (RSS or Atom shape) or a CSV/TSV export, by URL or by upload, up to 40 MB; larger files are cut at the last whole product and the report says so. A Shopify store address is also accepted: the check then reads the store’s public product list, which carries no barcodes, so identifier checks are left out of that report rather than reported as zero.

Rows without an id, title, link or price are counted and dropped, because every channel rejects them before looking at anything else. Rows sharing an id with an earlier row are counted as duplicates and dropped too; both counts appear in the report. Google’s product data specification is the reference for what each field must contain, and our attribute reference explains each field in plain English.

The 17 checks that score

Ordered by how much each defect costs the merchant, which is roughly the order to fix them in. The weight is the deduction when every product is affected; a defect on a tenth of the catalogue costs a tenth of it. “File only” marks checks that mean something about a raw file and cannot occur in the catalogue we serve, because the pipeline drops or normalises those rows on the way in.

CheckWeightSeverityMerchant Center
Products with no image
Channels reject items without an image. Add a product photo in your store and it syncs here automatically.
25CriticalMissing value [image_link]
Products with an id that is already used by another item · file only
Two items sharing an id make Merchant Center reject the whole feed. Give every variant its own id — we keep only the first of each and never serve a duplicate.
20CriticalReused value [id]
Products with no usable price
A price of zero is rejected everywhere. It usually means the export left the field empty for products priced per variant — check those products in your store.
20CriticalMissing value [price]
Products with no valid barcode (GTIN)
Google may show these less often. Add barcodes in your store — invalid or made-up codes are dropped automatically so they can't cause disapprovals.
18CriticalLimited performance due to missing identifiers [gtin]
Products with no description
Google and Meta both list description as required, so these can be disapproved rather than merely rank poorly — and we can't invent one, because Meta also asks that it differ from the title. Write a sentence or two in your store; we clean the formatting for each channel.
12CriticalMissing value [description]
Products with nothing to identify them by
With no barcode, Google needs the brand and the manufacturer's part number (MPN) together to match a product to its catalogue. These have neither, so they can't be matched at all.
10WarningLimited performance due to missing value [brand]
Products with no brand
Set the vendor/brand field in your store — Google pairs it with the barcode to match your product to its catalog.
8WarningLimited performance due to missing value [brand]
Products with a title over 150 characters
Google cuts the title at 150 characters and the part that matters is usually at the end. Put brand, product and the key attribute first — our title templates do this for you.
6WarningTitle truncated
Products with promotional text in the title
Prices, "SALE", "free shipping" and ALL CAPS in a title are a policy violation, not a style choice — Google disapproves the item. Move the offer out of the title.
6WarningExcessive capitalization
Products with an image smaller than 500×500
Google disapproves products whose image is under 500×500 pixels from 31 January 2027, and recommends around 1500×1500. Re-upload the photo at a larger size in your store — the number isn't visible anywhere in your admin, which is why this is worth fixing before the date rather than after.
10WarningImage too small
Products with an image on http://
Channels fetch images over https and some refuse plain http outright. If your store is on https, the export is writing the old URL — check the image host.
6WarningInvalid image [image_link]
Products with a variant with no group id · file only
These share a product page with other items, so they're sizes or colours of one product — without item_group_id each competes as a separate product and Google may pick the wrong one.
5WarningMissing value [item_group_id]
Products with a different currency from the rest of the feed · file only
One feed carries one currency; a channel reading mixed prices disapproves the odd ones. If you sell in several currencies, each needs its own feed — we build one per channel and country.
5WarningMissing value [price]
Products with a product link on http://
The landing page has to be reachable over https — on http the click can land on a browser warning instead of your product.
4WarningUnavailable desktop landing page
Products with a description of barely a line
Under about 50 characters there's nothing for a channel to match a search against. A sentence or two about material, fit or use is enough.
4WarningMissing value [description]
Products with an availability value no channel recognises · file only
Channels accept a short list of words — in_stock, out_of_stock, preorder, backorder, or the spaced spellings — and read anything else as unavailable rather than asking. A translated word, a yes/no or a typo therefore takes the product out of every channel while your store still shows it in stock, which is the hardest kind of problem to spot from the inside.
14CriticalInvalid value [availability]
Products that are out of stock
We mark them correctly so ads pause on their own — nothing to do, just letting you know.
7Informational

The 4 checks that are reported but never scored

A feed can be perfectly valid without these, so they cost nothing; they are listed because they cost reach, or because they tell you something about the feed you would want to know.

Products with no size or colour, and look like clothing
Google requires size, colour, gender and age group for apparel — missing one is the most common reason a fashion catalogue is disapproved in bulk. If these aren't clothing, ignore this: it doesn't count against the score either way.
WarningMissing value [color] / [size] / [gender] / [age_group]
Products with the older "in stock" spelling
Not a mistake: Meta and Microsoft list the spaced form, and it is what Google documented for years. Google's current spec lists in_stock with an underscore. If you submit this same file to several channels, that is one file that cannot match all of their specs at once — we render each channel the spelling its own documentation asks for.
WarningInvalid value [availability]
Products with no Google product category
Without it Google guesses, and guesses wrong on anything niche, which quietly limits where a product can show. Pick the closest value from Google's product taxonomy and set it in your export — the top two levels are usually enough. Connect a Shopify store and we fill it in exactly instead. A feed is valid without it, so this doesn't count against the score.
WarningInvalid value [google_product_category]
Products with no manufacturer identifier, and say so
Their feed sets identifier_exists to false, which is how you tell Google a product has no barcode from a manufacturer — custom, handmade or own-brand. Google stops asking for one, so we don't count it against you either.
InformationalIncorrect value [identifier_exists]

Beyond the file: images and product pages

Two things a feed cannot tell you, so the check goes and looks. It downloads the first few kilobytes of up to 20 images spread across the feed and reads their pixel size from the file header, because Google requires at least 500×500 from 31 January 2027 and the number is not visible in any store admin; see Google’s image_link specification. And it opens up to 8 product pages, reads the price from their structured data or visible markup, and compares it with the feed’s, because a difference there is the mismatch that suspends accounts; the price specification requires the two to match. Both are samples, and the report says how many it looked at. Neither number is extrapolated into a total.

What it repairs, in a preview

The report shows what the repaired feed would look like, before and after, taken from your own rows. Nothing here invents data: every repair is a rewrite of a value that is already in the feed.

What stays a person’s job, and why

Listed next to the repairs on purpose. A page that lists what it fixes and says nothing about the rest reads as a claim to fix everything, and the first merchant to find a made-up barcode in a feed would be right never to trust the tool again.

What it does not check

Anything Google decides by looking at pixels or at your website as a whole: promotional overlays and generic images, landing page availability and functionality, policy questions such as misrepresentation, tax and shipping settings, and whether your Merchant Center account is verified. The Merchant Center error library covers those issues and says on each page whether the check can see it.

Questions merchants ask

Does the check read my whole feed?

Up to 40 MB of it, which is tens of thousands of products for a typical feed. A larger file is cut at the last whole product and the report says how many products it covers. Connecting a store processes the whole catalogue.

Why does my Shopify store URL give a report without barcode checks?

Pasting a store address reads the store's public product list, which carries no barcodes. The report leaves identifier checks out rather than reporting zero missing, because zero would claim we looked. Paste the Google feed URL from Shopify's channel, or connect the store, for the full set.

How is the score calculated?

Each check has a weight; the deduction is the weight times the share of products affected, summed across checks. 100 minus that is the score, floored at 5. 85 and above is Good, 60 to 84 is Fair, below 60 Needs work. Checks with weight 0 are reported and never scored.

Is the check the same one a paid account gets?

Yes, the same tables. A connected store gets them on every sync, on the whole catalogue, with the repairs applied to the feeds we serve; the free check runs them once on the file you paste and shows the repairs as a preview.

Do you keep my feed?

The file is read, scored and shown to you, not stored. What we keep is the feed’s host name, whether the check succeeded, the score and the product count, so we can see which platforms the check struggles with. If you ask for the report by email, the address and the top issue are kept to send it.

Sources

Not sure what's wrong with your feed?Paste your feed URL and FeedRobin checks every product for missing barcodes, images, descriptions and more — free, no account needed.
Check my feed — it's free What it checks →