1. Your feed file
A product feed saved as CSV or tab-separated text, or an export from Shopify, WooCommerce, a spreadsheet or your own system.
Choose a file or paste the text, then click Check file.
Result
Products
| Line | id | Title | Group |
|---|
Safe fixes
The rules, and what they leave out
- Comma- or tab-separated, UTF-8. A semicolon file (European Excel) or Excel's UTF-16 "Unicode Text" is read wrongly.
- Required columns: id, title, description, availability, condition, price, link, image_link, brand. A missing one is an error. Item_group_id, gtin and google_product_category are expected and raise a warning when absent.
- id is unique, at most 100 characters, and must not be Excel scientific notation or end in .0. Title is at most 200 characters, not all capitals, with no promotional text or HTML. Description is at most 9,999 characters and plain text.
- availability is in stock, out of stock, preorder, available for order or discontinued, in lowercase. condition is new, refurbished or used.
- price is an amount, a space and an ISO currency code (19.99 USD) with a decimal point. sale_price uses the same form, the same currency, and is lower than price. sale_price_effective_date is two ISO 8601 date-times separated by a slash.
- link and image_link are full web addresses, https preferred. Images should be JPEG, PNG, GIF, BMP or TIFF; WebP, SVG and HEIC are flagged.
- gtin is 8, 12, 13 or 14 digits with a valid GS1 check digit. brand is required and not a placeholder like n/a.
- Variants: rows sharing an item_group_id need at least one differing color, size, material, pattern, gender or age group; two variants with the same options are flagged.
- Safe fixes change only the delimiter, stray spaces, a trailing .0, barcode leading zeros the check digit confirms, availability and condition spelling, and price spacing. They never edit a title, description, brand, link or the digits of a price.
- Not checked: that Meta will accept the feed today, domain verification, that links and images open, image dimensions, category validity, and Meta's commerce and advertising policies. Upload a small test feed first.
Common questions
Why was my Facebook or Instagram catalog upload rejected?
The usual causes are a file saved with semicolons or as UTF-16, a missing required column (id, title, description, availability, condition, price, link, image_link, brand), duplicate ids, prices without a currency code like 19.99 USD or written with a $ sign or a decimal comma, availability values such as In Stock instead of in stock, empty image or product links, an image in WebP format, a sale price that is not lower than the price, and barcodes that Excel turned into 4.00638E+12. This tool tests each of them and names the line.
Why did Excel change my ids and barcodes?
Excel treats digit strings as numbers. A 12-digit UPC such as 036000291452 becomes 36000291452 and a long id becomes 1.2346E+09 or gains a trailing .0. Format those columns as Text before pasting. This tool flags each, and restores a barcode's leading zeros only when the padded number has a valid check digit; 36000291452 becomes 036000291452, but a number that is still invalid is left for you to check.
What format does the price field use?
From memory of Meta's catalog help, a price is the amount, a space, then the ISO 4217 currency code, for example 19.99 USD, with a decimal point and no thousands separator. A currency symbol such as $ or a decimal comma is flagged, not guessed, because $ can mean several currencies. sale_price uses the same form and must be lower than price in the same currency.
What does Apply safe fixes change?
Only things with one reasonable reading: semicolon or pipe delimiters to commas, stray spaces, a trailing .0 on an id or barcode, a barcode's leading zeros when the check digit confirms them, availability and condition spelling and case, and price spacing such as 19.99USD to 19.99 USD. It never edits a title, a description, a brand, a link, an image address or the digits of a price.
Is it safe to put my product feed into a web page?
The page runs in your browser, the file is read locally and nothing is uploaded; a test in the code asserts there are no network calls.
What does this not check?
Whether Meta will accept the feed today, whether your domain is verified for the catalog, whether links and images actually open, image dimensions, whether a product category is current, and Meta's commerce and advertising policies, which can reject a perfectly formatted item. A clean result is not a promise of approval: upload a small test feed first.