ShopiClean
✓ 7-Day Pass Active Open CSV Auditor →
Import Errors

Shopify Import Error “Invalid CSV Header: Missing Headers” (or “Unexpected token < in JSON”): What It Means and How to Fix It

Last updated: 19 October 2026 • 7 min read

Short answer

These errors mean Shopify can’t match your column titles to its template. Header names are case-sensitive, so compare your first row with Shopify’s sample CSV, look for extra spaces or look-alike names, and use the “Choose column headings” window if Shopify offers it.

What the messages mean

Shopify’s documentation lists three related symptoms, and all three point at the first row of your file:

  • “Invalid CSV header: missing headers” (sometimes followed by a column name, such as Title). Shopify expects the first line of the file to contain its column headers, and it also asks you to check for extra white space at the end of that first line.
  • “Network error: Unexpected token < in JSON at position 0”. According to Shopify, this means your column titles don’t match its template headers exactly. Header names are case-sensitive, and Shopify’s own example is that you should use Handle instead of handle.
  • A “Choose column headings” window. Shopify shows this when your headers are incorrect. You can pick the correct header from each drop-down to continue the import.

Shopify Community threads about this error are common, and the usual answers there are the same checks listed below. Examples: one thread and another.

Checks to run, in order

  1. Compare with Shopify’s sample file. Download the sample product CSV from Shopify’s CSV documentation and put its header row next to yours. Copying your data under Shopify’s header row, without editing the headers, is a simple way to rule out typos.
  2. Check capitalization. handle, HANDLE and Handle are different headers to Shopify.
  3. Look for extra spaces before or after a header, and at the end of the first line. A header such as Variant Price (with a trailing space) can look right in a spreadsheet and still not match.
  4. Make sure the header row is the first line. A title line, a blank line or a note above the headers means Shopify reads the wrong line as the header.
  5. Check which columns are required. When you create new products, only Title is required, and the handle column is also required if you add variants. When you update products, Handle (URL handle) and Title are required.
  6. Remove columns Shopify doesn’t know. Shopify’s documentation says the Collection column is the only extra column you can add without breaking the format.
  7. Don’t mix naming styles for the same field. Shopify’s current documentation uses names such as URL handle and Price, while older templates use Handle and Variant Price. Shopify keeps backward compatibility with the older names, but one file should use one style per field.
  8. Edit in Google Sheets. In Community threads on this error, Shopify staff have recommended editing CSVs in Google Sheets with Chrome, because other spreadsheet programs can change the file’s format.

Common mismatches and their fixes

What’s in your fileWhy Shopify doesn’t match itFix
handle, titleHeader names are case-sensitiveRename to Handle, Title (or the current names)
Variant Price Trailing space after the nameDelete the space
body_html, product_nameNames from another platform or exportMap them to Shopify’s names, such as Body (HTML) and Title
A supplier or WooCommerce exportIt isn’t in Shopify’s column format at allConvert it first (see the supplier guide below)
Both Barcode and BarcodesShopify says a file with both columns fails to importKeep only one of the two
A title line above the headersThe first line must be the header rowDelete the extra lines

When your file came from a supplier

A supplier price list or another platform’s export usually has completely different headers, so the error is expected: nothing in the file matches Shopify’s template. The columns have to be converted or mapped to Shopify’s names before the import can work. Our supplier conversion guide covers this, and Shopify’s “Choose column headings” window can also help map a small number of mismatched headers by hand.

What ShopiClean does with headers

Disclosure: ShopiClean is our own product. Everything in this guide can be done by hand in a spreadsheet; the tool simply automates the checks. The scan and the on-screen 5-row preview are free, and downloading the repaired file needs a 7-Day Pass ($9).

What it does:

  • Corrects capitalization and stray spaces on headers it recognizes as Shopify columns. In our test, handle became Handle, Title became Title and Variant Price became Variant Price.
  • Works with both the current column names (such as URL handle, Price and Inventory quantity) and the older ones.
  • Reports columns it doesn’t recognize, so they don’t get dropped silently. In our test, body_html was listed as a non-standard column that Shopify may ignore or reject.

What it does not do:

  • It doesn’t rename arbitrary headers from other systems. For those, use the Supplier Converter, which maps common supplier column names to Shopify’s.
  • It can’t see what Shopify’s importer will say about your store, so keep Shopify’s sample file as the reference.

Sources and how this guide was checked

The Shopify behaviors described above were checked against the Shopify Help Center pages below on 19 October 2026. Shopify can change how imports work, so if something here differs from what you see, trust Shopify’s documentation.

Related guides