eg

google merchant feed validator.

check every item against the merchant center product data spec for the country you sell in

drop your feed here, or

csv, tsv, txt or google shopping xml. column names must be the merchant center attribute names, because that is what google reads.

target country
destination
scan depth

read in this browser tab. nothing is uploaded, stored or sent anywhere.

this checks compliance with google's spec. for how well the same feed reads to ai assistants and shopping surfaces, try the ecommerce feed checker.

> what the spec requires in united states

every attribute in the merchant center product data specification, with the limit google applies and whether it is required for shopping ads and free listings in united states. change the country or destination above and this table changes with it.

required for every item, 7

idRequired. Maximum 50 characters, unique across the account, and stable between uploads.max 50 chars
titleRequired. Maximum 150 characters of plain text.max 150 chars
descriptionRequired. Maximum 5,000 characters.max 5,000 chars
linkRequired. The landing page URL, starting with http or https.max 2,000 chars · an absolute http or https URL
image_linkRequired. The main product image. At least 500 by 500 pixels, enforced from 31 January 2027.max 2,000 chars · an absolute http or https URL
priceRequired. A number with an ISO 4217 currency code. Excludes tax in the US and Canada, includes VAT or GST elsewhere.a number and an ISO 4217 currency code, for example 24.99 USD
availabilityRequired. One of in_stock, out_of_stock, preorder or backorder, and it must match the landing page.in_stock, out_of_stock, preorder, backorder

required for you, given the country and destination above, 10

availability_dateRequired when availability is preorder or backorder, and the date should be shown on the landing page.max 25 chars · ISO 8601, for example 2026-10-01T13:00-0800 or 2026-10-01T13:00Z
brandRequired for all new products except movies, books and musical recordings.max 70 chars
gtinGTIN is required where the manufacturer assigns one. Where there is none, send brand and MPN, or set identifier_exists to no.max 50 chars · 8, 12, 13 or 14 digits with a valid GS1 check digit
multipackRequired for multipacks in Australia, Brazil, Czechia, France, Germany, Italy, Japan, Netherlands, Spain, Switzerland, the UK and the US, and for free listings.a whole number
is_bundleRequired for bundles in Australia, Brazil, Czechia, France, Germany, Italy, Japan, Netherlands, Spain, Switzerland, the UK and the US, and for free listings.yes, no
age_groupRequired for apparel targeted to Brazil, France, Germany, Japan, the UK and the US, and for free listings on all Apparel & Accessories.newborn, infant, toddler, kids, adult
colorRequired for apparel targeted to Brazil, France, Germany, Japan, the UK and the US, and for free listings on all Apparel & Accessories.max 100 chars · up to 3 values · 40 chars each
genderRequired for apparel targeted to Brazil, France, Germany, Japan, the UK and the US, and for free listings on all Apparel & Accessories.male, female, unisex
sizeRequired for Clothing (1604) and Shoes (187) targeted to Brazil, France, Germany, Japan, the UK and the US, and for free listings on those categories.max 100 chars
item_group_idRequired for variants in Brazil, France, Germany, Japan, the UK and the US, and for all variants in free listings.max 50 chars

required in certain cases, 6

mpnRequired when the product has no manufacturer GTIN. Maximum 70 alphanumeric characters.max 70 chars
identifier_existsSet to no when the product genuinely has no brand, GTIN or MPN.yes, no
conditionRequired if the product is used or refurbished. One of new, refurbished or used.new, refurbished, used
adultRequired if the product contains nudity or adult content.yes, no
certificationRequired for energy-labelled products in the EU, EFTA and the UK. Syntax authority:name:code, for example EC:EPREL:123456.authority:name:code, for example EC:EPREL:123456
google_product_categoryA numeric taxonomy id or the full category path. Required for alcohol, mobiles sold with a contract, tablets and gift cards.a numeric taxonomy id or the full category path

optional, 46

additional_image_linkOptional. Up to 10 additional images, each URL at most 2,000 characters.up to 10 values · 2000 chars each · an absolute http or https URL
mobile_linkOptional. Mobile-optimised landing page URL, maximum 2,000 characters.max 2,000 chars · an absolute http or https URL
video_linkOptional. Maximum 2,000 characters. 6 to 240 seconds, 720p minimum, 500MB maximum.max 2,000 chars · an absolute http or https URL
virtual_model_linkOptional, United States only. A .gltf or .glb 3D model, maximum 15MB.max 2,000 chars · an absolute http or https URL · united states only
document_linkOptional. Up to 5 PDF links, each at most 2,000 characters.up to 5 values · 2000 chars each · an absolute http or https URL
sale_priceOptional. The discounted price, submitted alongside price.a number and an ISO 4217 currency code, for example 24.99 USD
sale_price_effective_dateOptional. Two ISO 8601 timestamps separated by a slash, maximum 51 characters.max 51 chars · two ISO 8601 timestamps separated by a slash
expiration_dateOptional. ISO 8601, and at most 30 days in the future.max 25 chars · ISO 8601, for example 2026-10-01T13:00-0800 or 2026-10-01T13:00Z
cost_of_goods_soldOptional. A number with an ISO 4217 currency code, using a period as the decimal point.a number and an ISO 4217 currency code, for example 24.99 USD
auto_pricing_min_priceOptional. The floor for automated discounts.a number and an ISO 4217 currency code, for example 24.99 USD
unit_pricing_measureOptional. A number and a supported unit, for example 750ml.a number and a supported unit, for example 750ml
unit_pricing_base_measureOptional. One of 1, 2, 4, 8, 10, 100, 75cl, 750ml, 50kg or 1000kg.one of 1, 2, 4, 8, 10, 100, 75cl, 750ml, 50kg, 1000kg
installmentOptional. months:amount, with optional downpayment and a credit_type of finance or lease.months:amount, optionally downpayment and credit_type of finance or lease
subscription_costOptional. period:period_length:amount, where period is week, month or year.period:period_length:amount, period being week, month or year
loyalty_programOptional. Sub-attributes including program_label, tier_label, price and member_price_effective_date.no format constraint
materialOptional. Maximum 200 characters, a primary material plus up to two secondary, separated by a forward slash.max 200 chars · up to 3 values
patternOptional. Maximum 100 characters.max 100 chars
size_typeOptional, apparel only. Up to two of regular, petite, maternity, big, tall or plus.up to 2 values · regular, petite, maternity, big, tall, plus
size_systemOptional, apparel only. The country whose sizing the size value uses.US, UK, EU, DE, FR, JP, CN, IT, BR, MEX, AU
item_group_titleOptional. The parent product name, identical across every variant. Maximum 150 characters.max 150 chars
variant_optionOptional. Up to 30 values, 5,000 characters total, name and value at most 250 characters each.up to 30 values
product_lengthOptional. A number and a unit of cm or in, maximum 3000, matching the other dimensions.a number and a unit of cm or in, up to 3000
product_widthOptional. A number and a unit of cm or in, maximum 3000, matching the other dimensions.a number and a unit of cm or in, up to 3000
product_heightOptional. A number and a unit of cm or in, maximum 3000, matching the other dimensions.a number and a unit of cm or in, up to 3000
product_weightOptional. A number and a unit of lb, oz, g or kg, maximum 2000. This is the assembled product weight, not the shipping weight.a number and a unit of lb, oz, g or kg, up to 2000
product_detailOptional. section_name:attribute_name:attribute_value, at most 100 details, names at most 140 characters and values at most 1,000.up to 100 values · section_name:attribute_name:attribute_value
product_highlightOptional. Between 2 and 100 highlights, each at most 150 characters, describing the product only.max 150 chars · up to 100 values · at least 2 values · 150 chars each
question_and_answerOptional. Up to 30 pairs, 10,000 characters total, question and answer at most 1,000 characters each.up to 30 values · question:answer
related_productOptional. relationship_type:identifier_type:identifier, up to 30 values.up to 30 values · relationship_type:identifier_type:identifier
product_typeOptional. Your own category path, maximum 750 characters, full path only.max 750 chars
ads_redirectOptional. Must share a registered domain with link. Maximum 2,000 characters.max 2,000 chars · an absolute http or https URL
custom_label_0Optional. Maximum 100 characters. Up to five labels, custom_label_0 to custom_label_4.max 100 chars
custom_label_1Optional. Maximum 100 characters.max 100 chars
custom_label_2Optional. Maximum 100 characters.max 100 chars
custom_label_3Optional. Maximum 100 characters.max 100 chars
custom_label_4Optional. Maximum 100 characters.max 100 chars
popularity_rankOptional. A number from 0 to 100 using a period as the decimal point.a number between 0 and 100 using a period as the decimal point
excluded_destinationOptional. Destinations this item should not appear in.no format constraint
included_destinationOptional. Destinations this item should appear in.no format constraint
shippingOptional. country:region:service:price. Overrides your account shipping settings.country:region:service:price
shipping_weightOptional. Needed for carrier-calculated rates.a number and a unit of lb, oz, g or kg, up to 2000
shipping_labelOptional. Your own label for shipping rules.max 100 chars
min_handling_timeOptional. Whole days before dispatch.a whole number
max_handling_timeOptional. Whole days before dispatch.a whole number
taxOptional, United States only. Overrides account tax settings.no format constraint
tax_categoryOptional. Your own tax grouping.no format constraint

google ignores these for the country above, 4

maximum_retail_priceOptional, India only.a number and an ISO 4217 currency code, for example 24.99 USD · india only
energy_efficiency_classOptional, and only used for Switzerland, Norway and the UK.A+++, A++, A+, A, B, C, D, E, F, G · switzerland, norway, united kingdom only
min_energy_efficiency_classOptional, Switzerland, Norway and the UK only.A+++, A++, A+, A, B, C, D, E, F, G · switzerland, norway, united kingdom only
max_energy_efficiency_classOptional, Switzerland, Norway and the UK only.A+++, A++, A+, A, B, C, D, E, F, G · switzerland, norway, united kingdom only

what this cannot check

  • needs the image fetched, dimensions including the 500 by 500 minimum google enforces from 31 january 2027, file format, watermarks and promotional overlays, and whether the image host blocks google.
  • needs the landing page fetched, whether the price and availability in the feed match the page. that mismatch is one of the most common real disapprovals and no file can show it.
  • needs your account, shipping, tax and returns settings, policy strikes, restricted category approval, and feed rules that rewrite values after upload.
  • limits of the data, a gtin check digit proves the digits are self-consistent, not that the barcode was ever assigned. bundles and multipacks cannot be told apart from ordinary items in a file, so those rules are shown as prompts rather than failures.

> why run this at all

the rules change by country, and nothing tells you that

Google requires age_group, gender and colour on apparel only in Brazil, France, Germany, Japan, the UK and the US. Size is required for clothing and shoes in those same six. is_bundle and multipack are required in a list of twelve countries. certification is required for energy-labelled goods in the EU, EFTA and the UK. energy_efficiency_class is only used in Switzerland, Norway and the UK, and maximum_retail_price only in India. A feed that passes in Ireland can be full of disapprovals in Germany.

a disapproved item is invisible, quietly

There is no error in your store, no drop you can attribute, no email. The item simply stops appearing. By the time anyone notices the pattern in Merchant Center, the feed has usually been shipping the same mistake on thousands of items for weeks.

the limits are specific, and specific limits get broken

Brand is capped at 70 characters. A single colour value at 40, inside a colour field capped at 100. product_type at 750. Ten additional images, no more. Two to a hundred product highlights, each at 150. Nobody remembers these, which is why a validator that holds the whole spec is worth more than a spot check.

a misspelled column is a missing attribute

Google reads the attribute names it publishes and ignores everything else. additional_image_links with an s on the end is not additional_image_link, and the images never arrive. This validator keys strictly on the official names, so a typo shows up as an unrecognised column rather than being quietly absorbed.

> worked example

An apparel feed targeting the UK returns 2,140 items breaking a required rule. The top entries are age_group missing on every apparel item, gender missing on the same set, and size missing on the clothing lines. Switch the target country to Ireland and the same file returns zero: none of those four attributes is required there for shopping ads. Switch the destination to free listings and they come back, because free listings require them everywhere.

takeaway, The question is never whether a feed is valid. It is whether it is valid for the country and destination you are selling into.

> when operators reach for this

  • Ecommerce managers opening a new country and wanting to know which attributes that country adds before the first upload.
  • Feed developers checking a build against the spec locally rather than uploading and waiting for Merchant Center to report back.
  • Agencies inheriting an account with disapprovals and needing a per-attribute list of what is actually broken, exported per item.
  • Merchandisers spot-checking one SKU that Merchant Center flagged, using the single item mode rather than exporting the whole catalogue.
  • Anyone who has renamed a feed column and wants to confirm Google still recognises it.

> the calculation

  • verdict, not scoreitems breaking a required rule · items with a warning · items with nothing flagged
  • requiredthe spec says the attribute is required, or required for your country, category or destination
  • warningthe spec states a limit or a condition we cannot fully confirm from a file alone
  • which rules runcountry + destination + category of each itemConditional rules are compiled against your country and destination first, so only the rules that can apply to you are evaluated. The rest are listed with the reason they do not apply.
  • category detectionnumeric google_product_category matched against the published taxonomy, text paths matched on the category nameApparel, clothing and shoes, media, alcohol and the energy-labelled categories are taken from Google's own taxonomy file rather than guessed.

Frequently asked questions

What is the Google Merchant Center product data specification?
It is the document that defines every attribute you can send in a product feed, which ones are required, what values are allowed, and how long each field can be. Google validates uploads against it, and items that break a required rule are disapproved rather than corrected. This tool checks a feed against that specification before you upload.
Which requirements change by country?
Apparel is the big one. age_group, gender and color are required for apparel targeted to Brazil, France, Germany, Japan, the UK and the US. size is required for Clothing and Shoes in those same countries, and item_group_id is required for variants there. is_bundle and multipack are required in Australia, Brazil, Czechia, France, Germany, Italy, Japan, Netherlands, Spain, Switzerland, the UK and the US. certification is required for energy-labelled goods in the EU, EFTA and the UK. Two attributes are country-limited in the other direction: energy_efficiency_class is only used for Switzerland, Norway and the UK, and maximum_retail_price only in India.
What is the difference between Shopping ads and free listings?
Free listings are stricter. The apparel attributes are required on all Apparel & Accessories products rather than only in the six named countries, item_group_id is required on all variants, and is_bundle and multipack apply too. If you appear in both, validate against both, which is the default here.
Does this replace Merchant Center diagnostics?
No, it runs before them. Merchant Center tells you what was rejected after you have uploaded and waited for processing. This tells you what will be rejected, and it does it for a country you have not launched in yet, which diagnostics cannot do because there is nothing uploaded to diagnose.
What can it not check?
Anything that needs to fetch something. It cannot confirm the price and availability in your feed match the landing page, which is one of the most common real disapprovals. It cannot check image dimensions, format or watermarks, or whether the image host blocks Google. It cannot see your account settings, policy strikes or category approvals. And it cannot tell a bundle or a multipack from an ordinary item in a file, so those rules appear as prompts rather than failures.
Why is my column listed as not a Merchant Center attribute?
Because Google reads the exact attribute names it publishes. This validator matches strictly on those names, so msrp is not read as price and additional_image_links is not read as additional_image_link. That is deliberate: a loose match would hide the exact mistake that stops an attribute reaching Google.
How is this different from the ecommerce feed checker?
Different question. This one asks whether Google will approve each item, against the specification, for one country and destination. The feed checker asks how well the same file reads to shopping surfaces and AI assistants, which includes things Google does not require at all, such as structured product details and returns information. Most teams want both, in that order.
Is my feed uploaded anywhere?
No. The file is read by your browser and validated in the tab you are looking at. Nothing reaches a server, nothing is stored, and there is no account or email step. You can disconnect from the internet after the page loads and it still works.
How current are these rules?
They were transcribed from the product data specification and the availability documentation, with category ids taken from Google's published taxonomy file rather than guessed. Google changes the spec periodically, and where it announces a future date, such as the 500 by 500 pixel image minimum enforced from 31 January 2027, the tool says so rather than enforcing it early.

> related calculators, ai & llm visibility