How do I bulk translate Shopify products?
Bulk translate Shopify products by exporting the fields you need (title, body HTML, option names), translating them in batches with a locked glossary for brand names, then importing back or pasting into a translation app. Do not machine-translate SKUs, handles or image URLs. CrossKit Batch Translate is built for many rows; Listing Translator is better for a full listing; CSV Formatter helps clean the file first.
Markets with Markets or a translation app still need good source copy. Garbage English becomes garbage German at scale.
Steps
-
Clean the catalog before you translate
Duplicate titles and empty descriptions will multiply. CSV Formatter helps normalize columns.
-
Export only translatable columns
Keep a key column (Handle or SKU) untouched so you can merge back.
-
Build a do-not-translate list
Brand, product proper names, material codes, “USB-C”.
-
Translate in batches and spot-check 10 SKUs
Especially the best sellers. Fix glossary, then continue.
-
Re-import and check storefront language switch
Look at option names (Size vs Größe) and checkout-critical lines.
-
Test language switch on option names
Size vs Größe, Color vs Farbe. If options stay English on a French PDP, filters and the variant picker look unfinished.
Export, glossary, batch, spot-check, import
Clean the catalog first so duplicate titles and empty descriptions do not multiply. Export only translatable columns plus an untouched Handle or SKU key. Lock brand names, model names, material codes and “USB-C”. Translate titles first, then body HTML. Spot-check about ten bestsellers, especially hyphenation and gender in languages that need it. Re-import or paste into a translation app without overwriting the source language. CrossKit CSV Formatter, Batch Translate, Listing Translator and Smart Translator cover cleanup, volume, rich listings and formatting.
What must never be translated
Handles, SKUs, image URLs, HTML tags and Liquid. Translate visible text nodes only. A shifted CSV that writes French titles into the vendor column is worse than no translation. Tags are optional: translate if you display them; operational filter tags often stay in one language. Markets and translation apps still need good source copy—garbage English becomes garbage German at scale.
How CrossKit fits this job
CSV Formatter, then Batch Translate, then a translation app or Shopify import. Listing Translator is for bestsellers that need a full-page pass. Smart Translator keeps HTML-ish line breaks when you paste a single description. Never translate Handle, SKU or image URL columns.
Example
200 apparel SKUs to French. Export Handle, Title, Body HTML. Batch Translate titles first; review hyphenation and gender. Then descriptions. Handles stay `classic-tee-black`. A translation app maps the French fields; you did not overwrite English.
Common mistakes
-
Translating HTML tags or Shopify Liquid by accident
Broken pages follow. Translate visible text nodes only.
-
One giant paste with mixed columns
A shifted CSV writes French titles into the vendor column. Always keep a key.
-
Machine-translating checkout and legal strings with the product catalog
Product copy errors are embarrassing. Checkout errors are costly. Keep those files separate and reviewed.
Recommended tool
Batch Translate
CrossKit Batch Translate translates many product records at once. Clean CSVs with CSV Formatter; use Listing Translator for richer single-product copy.
Frequently Asked Questions
Can CrossKit push translations into Shopify?
It prepares the text. You import via CSV or your translation app.
Should I translate product tags?
Only if you display them. Filter tags often stay operational in one language.
Can I translate metafields in bulk too?
Yes if you export them with a stable key. Treat them like descriptions: glossary first, then batch, then spot-check storefront widgets that read those fields.
How do I keep English and French in sync later?
Change the source, then re-translate the delta—not the whole catalog every time. Keep the glossary versioned with the catalog.