CSV and TSV Feed Formats

Delimited text formats (CSV and TSV) are the simplest way to create product feeds. Google Merchant Center supports tab-separated values (TSV) as its primary text format, while Meta Commerce Manager accepts both CSV and TSV. Each row represents one product, and the header row defines the attribute mapping.

Google Merchant Center TSV Format

Google uses tab-separated values with attribute names as the header row. The file extension should be .txt or .tsv. Column names must match Google attribute names exactly.

id	title	description	link	image_link	price	availability	brand	gtin	condition
SKU-12345	Nike Air Max 90 - Black/White	Classic running shoe	https://example.com/shoes/air-max-90	https://example.com/images/air-max-90.jpg	129.99 USD	in_stock	Nike	0884776536842	new
SKU-67890	Adidas Ultraboost 22 - Navy	Responsive running shoe	https://example.com/shoes/ultraboost-22	https://example.com/images/ultraboost-22.jpg	189.99 USD	in_stock	Adidas	4065419842357	new

Meta Product Catalog CSV Format

Meta accepts comma-separated or tab-separated files. CSV is more common for Meta feeds. Column names use the same attribute names as the feed specification. Multi-value fields use a comma within quoted strings.

id,title,description,availability,condition,price,link,image_link,brand
product_1234,"Nike Air Max 90 - Black/White","Classic running shoe with Air cushioning",in stock,new,129.99 USD,https://example.com/product/1234,https://example.com/images/product-1234.jpg,Nike
product_5678,"Adidas Ultraboost 22 - Navy","Responsive Boost midsole running shoe",in stock,new,189.99 USD,https://example.com/product/5678,https://example.com/images/product-5678.jpg,Adidas

Note the availability value difference. Meta uses in stock (with space) while Google uses in_stock (with underscore). A single feed file cannot serve both platforms without transformation.

Column Specification

RuleTSV (Google)CSV (Meta)
DelimiterTab character (\t)Comma (,)
EncodingUTF-8 (required, no BOM)UTF-8 (required)
Header rowRequired, first lineRequired, first line
QuotingDouble-quote fields containing tabs or newlinesDouble-quote fields containing commas, quotes, or newlines
Escaping quotesDouble the quote: "" inside quoted fieldDouble the quote: "" inside quoted field
Line endingsLF (\n) or CRLF (\r\n)LF (\n) or CRLF (\r\n)
Empty fieldsLeave blank (two consecutive tabs)Leave blank or use empty quotes ""
Multi-value fieldsComma-separated within the fieldComma-separated within quoted field
Max file size4 GB uncompressed8 GB per upload
Compressiongzip, zip, bz2gzip, zip

Common Encoding Issues

UTF-8 BOM (Byte Order Mark)

Google rejects files with a UTF-8 BOM (0xEF 0xBB 0xBF at the start of the file). Many Windows text editors add this by default. Verify with a hex editor or use file --mime-encoding feed.txt to check. Strip with sed -i '1s/^\xEF\xBB\xBF//' feed.txt.

Latin-1 / Windows-1252 Characters

Product descriptions copied from legacy databases often contain Windows-1252 characters (smart quotes, em dashes, degree symbols) that are not valid UTF-8. Convert with iconv -f WINDOWS-1252 -t UTF-8 before submitting.

Unescaped Tab Characters in TSV

Tab characters within field values (common in product descriptions) break TSV parsing. Either quote the field or replace tabs with spaces before export. Test by counting columns per line: awk -F'\t' '{print NF}' feed.tsv | sort -u should return a single number.