Free · No sign-up · Runs in your browser

Shopify product CSV checker

Drop your product CSV and see the format problems that commonly make a Shopify import fail or go wrong, before you upload it.

Your file is never uploaded. The check runs on your computer.

What it checks

  • Comma delimiter and UTF-8 encoding
  • Headers against Shopify's template
  • Prices, weights and quantities
  • Variants and option values
  • Image URLs
  • Duplicate SKUs and handles

Encoding & mixed line endings

Common Shopify CSV import errors, and how to fix them

"Network error: Unexpected token < in JSON at position 0"

Your column headers don't match Shopify's template exactly. Headers are case-sensitive: Title works, title doesn't. The checker flags unrecognised headers; custom metafields may need a separate review.

"Illegal quoting" error

Fields that contain commas, quotes or line breaks need straight double quotes around them, with any inner quote doubled (""). Look for missing quotes or text right after a closing quote. Curly quotes (“ ”) are fine inside a title but can't wrap a field.

All my columns end up in one cell

European versions of Excel save CSV files with semicolons (;) instead of commas. Shopify only reads comma-separated files. Re-export with a comma delimiter, or use Google Sheets → File → Download → CSV.

Accents look broken (é, �)

The file isn't UTF-8 encoded. In Excel, choose "CSV UTF-8 (Comma delimited)" when saving.

Prices are wrong or rejected

Shopify wants a plain number with a dot: 9.99. Values like 9,99 or €9.99 fail. "Compare-at price" must be higher than "Price" to show a discount.

Barcodes or SKUs turned into 1.23457E+12

A spreadsheet converted long numbers to scientific notation and the real code is lost. Re-export from the source with the column formatted as text, and don't re-save the CSV in Excel afterwards.

Variants became separate products, or only one was imported

Variant rows must share the same URL handle, and the product needs an Option1 name (e.g. Size) with a different Option1 value on each row. For existing products, keep the exact option names and values from a Shopify export: changing them can replace your variants.

Images are not imported

Image columns need public web addresses (https://…), not file names from your computer. File names containing _thumb, _small or _medium are refused.

Is my file sent anywhere?

No. The checker is plain JavaScript running in your browser. You can even go offline once the page has loaded.