Comparison
Google Shopping XML vs CSV
Merchant Center accepts two file shapes: delimited text, which is what spreadsheets export and most people call CSV, and XML in RSS 2.0 or Atom 1.0. Google processes both the same way once the attributes are right. The choice is about who produces the file and who has to read it. This page lays out Google's own guidance, shows one product in each format, and says which one a feed tool should give you.
We connect your store, build the feed and keep it in sync. Updated 2026-10-27.
At a glance
- Google's file guide names .txt, .tsv and .xml files, up to 4 GB each; compressed .gz, .zip and .bz2 are accepted when they hold a .txt or .xml.
- Google's FAQ positions tab-delimited files for small-to-medium inventories and beginners, XML for large catalogs and automated systems.
- In text files the first row holds the attribute names; in XML every attribute carries the g: prefix under xmlns:g="http://base.google.com/ns/1.0".
- Textfinity publishes a delimited CSV (or TSV) on a URL that Merchant Center fetches on a schedule, and Merchant Center reads that comma CSV in production; it does not emit XML.
XML vs CSV for Google Shopping: the comparison
Every row below is drawn from Google Merchant Center help pages fetched on the date in the footnote: 'Create a product file for Merchant Center', 'Create a tab-delimited product data source', the 'RSS 2.0 specification' and the 'Product data specification'. Where the help does not state a fact, the cell says so.
What Google says about delimited text
Google's tab-delimited guide is blunt: the file must be tab-delimited plain text, the first line is the header and must contain attribute names separated by tabs, and each product is one line with each attribute separated by a tab. A cell may be empty when an attribute has no value. The product file guide tells Google Sheets users to download as .tsv and Excel users to save as tab-delimited .txt, and warns that missing tab separators, extra tabs or line breaks inside a field, and non-UTF-8 or UTF-16 encodings are the common processing errors. Multi-value attributes can be comma-separated in one cell or split into one column per value.
Note the wording: Google's current help describes the text option as tab-separated and does not name .csv. In practice 'CSV' is what every spreadsheet and most platform exports call a delimited file, which is why the query is phrased XML vs CSV. If your tool exports comma-separated and Merchant Center reports delimiter errors, export tab-separated instead; the attribute names and values do not change.
What Google says about XML
The RSS 2.0 specification page sets the structure: a channel with title, link and description, then one item per product, and the Merchant Center namespace declared as xmlns:g="http://base.google.com/ns/1.0". Every Merchant Center attribute tag needs the g: prefix; attributes without it are ignored, and elements from other RSS modules or custom namespaces are not processed. Item-level title, link and description are optional in RSS itself but required for product data, alongside price, id and condition. The file must include all products you want in Merchant Center, not only changes; removing a product from the file removes it from the account. Many namespace attributes may be repeated within one item, which is how multiple images or shipping entries are expressed. Atom 1.0 has its own page with the same ideas.
XML earns its 'large catalogs and automated systems' label because it is self-describing: nested and repeated values do not fight with a delimiter, and platform plugins have emitted it for years. It is also harder for a person to open, diff or fix in a spreadsheet, and a single unclosed tag stops the whole file.
The same product in both formats
Attribute names and values are identical; only the container changes. The 150-character title limit, the 5,000-character description limit and the '15.00 USD' price format from the product data specification apply equally.
Tab-delimited text (.tsv) and RSS 2.0 XML
id title price availability link
SKU-204 Patagonia Nano Puff Jacket Men's, Navy, L 239.00 USD in_stock https://store.example/p/nano-puff
<rss version="2.0" xmlns:g="http://base.google.com/ns/1.0">
<channel>
<item>
<g:id>SKU-204</g:id>
<g:title>Patagonia Nano Puff Jacket Men's, Navy, L</g:title>
<g:price>239.00 USD</g:price>
<g:availability>in_stock</g:availability>
<g:link>https://store.example/p/nano-puff</g:link>
</item>
</channel>
</rss>Which format a feed tool should produce
If a tool sits between your store and Merchant Center, the format question moves to the tool. Textfinity reads CSV and TSV exports and XML in Google Shopping's RSS or Atom shape (so a platform's Google feed plugin output is a fine input; a custom XML schema has to be exported as CSV), applies mapping and filter rules, and publishes a delimited CSV or TSV file on a stable URL. We register that URL with you in Merchant Center as a scheduled-fetch file source, and Google fetches hosted files every 24 hours. Textfinity does not write XML, so merchants who need an XML file for a non-Google destination that only reads RSS should keep their platform's XML export for that destination. For Merchant Center itself, the delimited file carries the same attributes and is easier to open, diff and profile.
The one place XML still wins is when you are hand-writing a feed from a system that produces nested data and have no tool in between. Everyone else benefits more from a flat file they can inspect.
Examples
Worked examples, by situation
Three situations where the format decision was really a tooling decision, each with the rule that resolved it.
Platform XML in, delimited file out
Before
Magento extension emits RSS XML with HTML inside <g:description> and 400 items missing <g:gtin>
After
CSV with description stripped of tags and gtin filled from a supplier sheet; 11,600 rows after filtering
How we set it up
We set up the XML URL as the source, map description with remove from regexp <[^>]+>, join the supplier GTIN sheet as a merged source on sku, and add an exclude filter: gtin is empty AND supplier_gtin is empty AND brand is in list (brands requiring GTIN). Filters run on the source row before mapping, so they check the XML's gtin and the sheet's column, not the mapped output.
Multi-value attributes without delimiter fights
Before
additional_image_link: 'a.jpg,b.jpg,c.jpg' in one comma-separated cell, rejected by a spreadsheet tool
After
Three columns additional_image_link, additional_image_link, additional_image_link, one URL each
How we set it up
We add three output columns named additional_image_link, each a rename from image_2, image_3 and image_4. Google's multi-value help allows either one comma-separated cell or one column per value; separate columns avoid Excel mangling.
Delimiter errors from a comma-separated export
Before
Merchant Center: 'different number of delimiters' on 140 lines where descriptions contain commas
After
Clean processing after the description column is quoted and shortened
How we set it up
We map description with replace from regexp to collapse line breaks (\r?\n to a space) and add an exclude filter "description is longer than 5000". Feed hygiene's length check flags the over-limit rows before upload.
Copy this plan
Get a Merchant Center-ready file from either input
Whatever your platform exports, the output is one delimited file Google fetches on a schedule.
01
Start from the export you already have
Google Shopping XML from a feed plugin, CSV from an admin export (over HTTPS or SFTP) or a Google Sheet all work as the source. Shopify connects directly.
What we set up: We set up your CSV or XML URL, Google Sheet or Shopify store as the source in Textfinity.02
Start from the Google Shopping template
The template names every column with Google's spelling so the header row is right by construction.
What we set up: We start the feed from Textfinity's Google Shopping template.03
Map and clean the text fields
Strip HTML, collapse line breaks and cap lengths so a comma or newline inside a description never breaks a row.
What we set up: We map description with remove from regexp and add an "is longer than" filter for over-limit rows.04
Profile the file
Feed hygiene reports completeness per column, values over Google's limits, mixed languages and malformed URLs.
What we set up: We run feed hygiene on the output and fix what it flags before the first fetch.05
Register the feed URL in Merchant Center
Add the URL as a file data source with a scheduled fetch. Google fetches hosted files every 24 hours. This step is in Merchant Center.
What we set up: We register the URL with you: you give us access to Merchant Center, or we walk you through it.
Customization tips
Make it yours
Keep one id across formats
If you switch from an XML plugin feed to a delimited file, send the same id values. A new id is a new product to Google and resets history.
Prefer one column per repeated attribute
Comma-separated multi-values in one cell are allowed but Google warns they do not work well in Excel. Separate columns cost nothing in a generated file.
Send the whole catalog every time
Google's RSS guide says a product removed from the file is removed from Merchant Center. The same applies to text files: never publish a delta.
Watch encoding on exports from older platforms
Google lists non-UTF-8/UTF-16 encodings as a common error. A feed tool re-emits UTF-8; a raw platform export may not.
Side by side
What we could verify
| Delimited text (.txt / .tsv, 'CSV') | XML (RSS 2.0 / Atom 1.0) | |
|---|---|---|
| Named in Google's file guide | .txt (tab-delimited), .tsv | .xml (RSS 2.0 or Atom 1.0) |
| Google's suggested fit | Small-to-medium inventories; beginners | Large catalogs; automated systems |
| Where attribute names go | First row, one per column | Tags with the g: prefix inside <item> |
| Namespace required | xmlns:g="http://base.google.com/ns/1.0" | |
| Multi-value attributes | Comma-separated in one cell or one column per value | Repeat the tag inside the item |
| Common processing errors (Google) | Missing tab separators; extra tabs or line breaks in a field; wrong encoding | Unclosed tags; attributes without the g: prefix are ignored |
| Max file size | 4 GB | 4 GB |
| Compression | .gz, .zip, .bz2 containing a .txt | .gz, .zip, .bz2 containing an .xml |
| Easy to open in a spreadsheet | ||
| Partial updates allowed | not stated; file replaces the product set | No: the file must contain all products; removal deletes |
| Title / description limits | 150 / 5,000 characters | 150 / 5,000 characters |
| What Textfinity produces | Yes: CSV or TSV on a stable URL | No (reads XML as a source) |
Checked 2026-10-27. Criteria from Google Merchant Center help: 'Create a product file for Merchant Center', 'Create a tab-delimited product data source', 'RSS 2.0 specification', 'Product data specification'.
FAQ
Questions about google shopping xml vs csv
Does Google Merchant Center accept CSV files?
Google's file guide names .txt (tab-delimited), .tsv and .xml. 'CSV' in everyday use means any delimited spreadsheet export; if a comma-separated file produces delimiter errors, export it tab-separated with the same header row and values. A properly quoted comma CSV does work in practice: Merchant Center fetches Textfinity's comma-delimited feeds in production.
Is XML better than CSV for Google Shopping?
Google processes the attributes the same way. Its FAQ suggests tab-delimited files for small-to-medium inventories and beginners, and XML for large catalogs and automated systems. XML handles repeated values natively; text files are easier to open, diff and fix.
What is the maximum feed file size for Merchant Center?
Google's product file guide says a single product file can be up to 4 GB. Compressed .gz, .zip and .bz2 files are accepted when they contain a .txt or .xml file.
Can I convert a Google Shopping XML feed to CSV?
Yes. A feed tool such as Textfinity reads the Google Shopping XML URL (RSS or Atom) as a source and publishes a delimited CSV with the same attribute names, with mapping and filter rules applied in between; we set those rules up in Textfinity for you.
Does the title limit differ between XML and text feeds?
No. The product data specification sets title at a maximum of 150 characters and description at 5,000 in either format; price is numeric with an ISO 4217 code, for example 15.00 USD.
Set up for you
Have us turn your platform's export into a Merchant Center-ready file.
Send us your Google Shopping XML, CSV or Google Sheet URL. We set up the mapping in Textfinity, profile the delimited feed before Google sees it, and register its URL with you in Merchant Center.
Tell us your store and channels. We reply within 24 hours.