Shopify CSV Validator
Check a Shopify product CSV for import errors before you upload it, and download a cleaned-up copy.
In the fixed file, Handle becomes URL handle, Variant Price becomes Price and so on.
What the validator checks
It reads the file the way Shopify's importer does and checks each rule from Shopify's CSV documentation. It accepts the current column names (URL handle, Price, Product image URL) and the older ones (Handle, Variant Price, Image Src), because Shopify still accepts both.
| Check | What Shopify expects |
|---|---|
| Required columns | Title and URL handle (Handle in older files) |
| Variant rows | The same URL handle on every row of a product, with the rows kept together. Title, Description, Vendor and Tags go on the first row only. |
| Options | Up to 3 options. Option names on the first row, a value on every variant row, and no two variants with the same combination. |
| Variant limit | Up to 2,048 variants per product |
| Numbers | Prices with no currency symbol (19.99), Weight value (grams) as whole grams, Inventory quantity as a whole number |
| Fixed values | true or false for Published, Charge tax, Requires shipping and Gift card. Status is active, draft or archived. Continue selling is deny or continue. Weight unit is g, kg, lb or oz. |
| Duplicates | Repeated SKUs, barcodes, option combinations, images and image positions |
| Images and text | Full https:// image URLs, alt text up to 512 characters, SEO title up to 70 and SEO description up to 320 |
| The file | UTF-8 encoding, commas between values and 15 MB at most |
Errors are problems that stop the import or bring products in wrong. Warnings are worth a look but won't block anything. Each one gives the row number as it appears in the preview table.
What the fixed file changes
When a problem has only one sensible fix, the download fixes it for you:
- Trims spaces from the start and end of every value.
- Changes yes/no and 1/0 to
true/false, and yes/no in Continue selling tocontinue/deny. - Cleans prices:
$1,299.00becomes1299.00and19,99becomes19.99. - Turns weights like
680gor150.4into whole grams, and units likelbsintolb. - Encodes spaces in image URLs as
%20. - Repairs garbled characters such as
’when the original text can be recovered. - Switches semicolon or tab separators to commas, and removes empty rows.
- Optionally renames old column names to Shopify's current ones.
It never changes handles, option values or SKUs, because those decide which product and variant each row updates. Shopify warns that changing option values deletes the variant IDs and creates new ones, which can break apps that rely on them.
The sample file
- Products / variants
- 4 / 10
- Row 6
- Status "Published" (error: use active, draft or archived)
- Row 9
- Same options as row 8, L/XL / Black (error)
- Row 11
- Option1 value empty for Size (error)
- Rows 6 and 9
- Compare-at below price, duplicate SKU (warnings)
3 errors and 2 warnings. The download also fixes 8 values, including $28.00, 12,50, Yes, No, 680g, 24.0 and a space in an image URL.
Importing the file into Shopify
- 01
Open the importer
In your Shopify admin, go to Products and click Import.
- 02
Add the file
Click Add file and pick the fixed CSV.
- 03
Choose whether to overwrite
To update products that already exist, tick Overwrite products with matching handles. Shopify then replaces the values in every column the file includes.
- 04
Check the preview
Click Upload and continue, read the summary, then click Import products.
With overwrite on, a blank cell blanks the existing value, and a column you leave out keeps its current values. So when you update, delete the columns you don't mean to change.
Common Shopify CSV import errors
- Strange characters like ’ or �. The file wasn't saved as UTF-8, which Shopify requires. In Excel, use Save As → CSV UTF-8.
- Barcodes like 8.5E+11. Excel turned a long number into scientific notation and dropped digits. Format the column as Text before you paste the codes back in.
- Variants import as separate products. The rows don't share exactly the same URL handle, or they aren't kept together.
- Missing option values. A product has an option name but one of its variant rows has no value for it.
- Stock doesn't change. Inventory quantity only applies to stores with a single location. With more than one, update stock with Shopify's inventory CSV instead.
Questions people ask
Why does Shopify reject my CSV header?
Usually a column name is misspelled, a column appears twice, or the file uses semicolons instead of commas. The validator lists unknown and duplicate columns and the separator it found.
What's the file size limit for a Shopify product CSV?
15 MB. Split bigger files by product, keeping every row for a product in the same file.
Do old CSV templates with Handle and Variant Price still work?
Yes. Shopify keeps backward compatibility with older column names, but recommends moving to the current format. Turn on the rename option to convert the header for you.
How many variants can a Shopify product have?
Up to 2,048 variants, built from a maximum of 3 options such as Size, Color and Material.
Is my file uploaded anywhere?
No. It's read in your browser and never leaves your computer.
Related tools
Last reviewed 30 September 2026.
Sources: Shopify Help: Using CSV files to import and export products · Shopify Help: Importing products with a CSV file · Shopify Help: Adding variants (2,048 variant limit) · Shopify: Sample product CSV template
