Product CSV Checker for Shopify: Catch Import Mistakes
The rows the importer would refuse or get wrong, with the fix — before you press Import.
Your product CSV
Pasted text is checked as you type. Encoding and file-size checks need the file itself.
Reading options
Result
Columns
| # | Column in the file | Read as |
|---|
Products
| Handle | Title | First row | Rows | Variants | Images | Errors | Warnings |
|---|
MySmartCoPilot is not affiliated with or endorsed by Shopify. The checks follow Shopify’s public help pages; Shopify’s own importer has the last word.
About the Product CSV Checker for Shopify: Catch Import Mistakes
An import into Shopify can stop at one stray quote, quietly sell a variant for 0.00, or — when a file edits variant columns such as SKU or price without the Option1 columns — create a new default variant and delete the variants your product had. This checker reads your product CSV the way the importer reads it and lists the rows that would fail or import wrongly, with the column, the value and what to write instead.
It knows the current column names and the older template’s (Handle, Body (HTML), Variant Price…), follows Shopify’s product CSV help and also checks the bytes: UTF-8, commas, quotes and the 15 MB limit. Big exports are read in pieces, and the file never leaves your device. MySmartCoPilot is not affiliated with or endorsed by Shopify; the name is used only to say which files this checks.
How to use it
- Export your products from Shopify (Products › Export) or open the CSV you made, and drop it here. You can also paste the rows, or press Try a sample file to see a report.
- Choose what the import will do: add new products, or update products already in your store with “Overwrite products with matching handles”. Updating turns the checks for deleted variants and erased values into errors and notes.
- Read the verdict and the list. Each problem names the row as your spreadsheet numbers it, the column, the value and the fix. Switch between By check and By row, show only errors, or filter by a handle or value.
- Fix the rows in your spreadsheet and check again. Download the report (CSV) to work through a long list.
Examples
Handle, Title, Variant SKU, Variant Price — no Option1 name or Option1 value
Error: without those two columns “a new default variant is created and existing variants are deleted” (Shopify’s help)
linen-shirt on rows 2–5 and again on row 8, after canvas-tote
Warning: the rows of “linen-shirt” aren’t together; keep each product’s rows one under the other, the row with the title first
Price: $34.00 · Weight value (grams): 0.26 kg
Error: write 34.00 (no currency symbol) · Error: write 260 (whole grams)
Variant Barcodes: 4.00638E+12
Error: Excel turned the barcode into scientific notation, and its last digits are lost
Common uses
- Checking an edited export before re-importing it with “Overwrite products with matching handles”.
- Checking a file from a supplier, an agency or another shop system before the first import.
- Finding the line behind “Illegal quoting on line …” or “Validation failed: options are not unique”.
- Making sure image links open the image itself and use https.
What is checked
- File: UTF-8 (every byte is read, and the first line that isn’t UTF-8 is named), commas between values, an Excel “sep=” line, quotes the importer refuses (“Illegal quoting on line…”, “Missing or stray quote on line…”), rows with more values than columns, text saved in the wrong encoding (café for café), and the 15 MB limit.
- Columns: names exactly as Shopify writes them (its help: “Column header names are case-sensitive”), the current and the older names, columns Shopify doesn’t know (only Collection may be added), the same column twice, the old Barcode and the new Barcodes column together (“A file that has both columns fails to import”), and the Option1 columns.
- Handles and product rows: a URL handle on every row, handles with letters, numbers and dashes only, each product’s rows together with the title on its first row, two products sharing one handle, handles that differ only in capitals or spaces.
- Options and variants: a value for each option of the product, option names on the first row, no two variants with the same option values (“options are not unique”), up to three options and 2,048 variants, and a note above 100 variants, which some themes and apps don’t support.
- Prices: plain numbers without a currency symbol, thousands separator or decimal comma; not negative; a compare-at price above the price.
- Inventory, weight and shipping: whole-number quantities; tracker shopify, shipwire, amazon_marketplace_web or empty; deny or continue; weights in whole grams (5.125 kg → 5125); units g, kg, lb or oz; all four packed sizes or none on rows that require shipping; fulfillment service handles; a SKU for every variant of a custom fulfillment service.
- SKUs and barcodes: SKUs used twice or turned into scientific notation, up to 20 barcodes per variant, the same barcode twice, and the barcode types GTIN, UPC, EAN, ISBN and ASIN with their lengths and check digits.
- Images: https links that open the image itself (not a Google Drive, Dropbox or Imgur page), no spaces, no files on your computer, no file names ending in _thumb, _small or _medium, no videos or 3D models, up to 250 images per product, alt text up to 512 characters.
- Status, tags, category and SEO: active, draft or archived; TRUE or FALSE; up to 250 tags; a category written as a full path from a top-level category of Shopify’s taxonomy, or its ID; SEO titles up to 70 and SEO descriptions up to 320 characters; gift cards, which a CSV can’t create.
Updating products that are already in your store
With “Overwrite products with matching handles” on, Shopify’s help describes what a file changes:
- a column that is in the file overwrites the store’s values, so an empty cell erases the value (“overwritten as blank”);
- a column that isn’t in the file keeps the store’s values;
- variant columns without Option1 name and Option1 value delete the existing variants;
- four empty packed-size cells on a variant row delete its saved packed size;
- changing option values gives the variants new IDs, which apps that rely on variant IDs may not follow.
Choose Updating existing products (or Not sure) and the checker reports these too: the deleted-variants case as an error, the erased values and packed sizes as notes with the rows they affect. An export from Shopify that you edit is the safest file to start from: it has every column, so leave out the columns you don’t want to change.
Where the rules come from
Each check quotes or follows Shopify’s own help: Using CSV files to import and export products, Importing products, Solutions to common product CSV import problems, Adding variants (three options, 2,048 variants) and the barcode types on the product details page. Top-level categories come from Shopify’s open Standard Product Taxonomy. Check digits follow GS1’s method, as in the Check Digit Validator.
The checks are tested against the sample file on Shopify’s help page, which passes without errors or warnings. Where Shopify’s pages disagree — the help gives 0.00 as the default price while its troubleshooting page lists “price can’t be blank” — the check is a warning that says both.
Limitations
- It doesn’t connect to your store, so it can’t see which products, handles, SKUs or metafield definitions already exist there. “Updating existing products” only turns on the checks for what overwriting changes.
- Product categories are checked for their form and their top level, not against each of the taxonomy’s thousands of categories; metafield values aren’t checked against their definitions.
- Shopify can change its format without notice. When Shopify’s importer reports something this page doesn’t, follow Shopify’s message.
- Excel and OpenDocument workbooks are read as their CSV export would be, but Shopify imports CSV files only: export as CSV UTF-8 and check that file too.
- The list shows up to 500 rows for each check and 20,000 in all; every problem is counted.
Privacy
Everything happens in your browser. What you enter or open here is not uploaded or stored by MySmartCoPilot. The spreadsheet reader (SheetJS) downloads from this site once, only when you open an Excel or OpenDocument file. Your file is read on your device and never uploaded.
Frequently asked questions
Is my product file uploaded anywhere?
No. The file is read in your browser, in pieces, and the report is made on your device. Nothing is sent to MySmartCoPilot, to Shopify or to anyone else.
Why did Shopify delete my variants when I imported a CSV?
If a file has variant columns (SKU, price, weight…) but not Option1 name and Option1 value, Shopify’s help says “a new default variant is created and existing variants are deleted”. Keep the option columns in every file that edits variants — an export from Shopify has them. A product without variants uses Option1 name “Title” and Option1 value “Default Title”.
What does “Illegal quoting on line …” mean?
Shopify’s troubleshooting page gives two causes. The file isn’t UTF-8 (“your CSV file must be UTF-8 encoded”), so its quotes and commas aren’t read as such: save it again as CSV UTF-8. Or a quote is missing or stray: a double quote (") inside a value that isn’t itself in quotes, such as 5" screen, must be doubled inside a quoted value ("5"" screen"), which saving from a spreadsheet as CSV UTF-8 does for you. The checker reports both, with the row and, when a value spans several lines, the line in the file, so you can find it in a text editor.
Does it work with older exports that use Handle, Body (HTML) and Variant Price?
Yes. Shopify still imports the older template; the checker knows both sets of names and says which one your file uses.
My file is bigger than 15 MB. What now?
Shopify’s help says a product CSV can’t exceed 15 MB. Split it into smaller files with all the rows of each product in the same file, and import them one after another.
Is this tool made by Shopify?
No. MySmartCoPilot is not affiliated with or endorsed by Shopify. Shopify is named only to describe the files the checker reads; the rules are taken from Shopify’s public help pages.