Shopify: "The supplied file is too large to be imported."

Shopify refuses the upload on bytes, not on rows. Splitting the file works — but split it on product boundaries or you will silently lose variants.

What you are seeing

You choose your CSV in the import dialog and it is rejected before anything is previewed.

The supplied file is too large to be imported.

Why it happens

This is a size limit measured in bytes, and it fires at the upload form before a single row is read. It is not a row limit, and this is the part that misleads people: we imported a 20,000-row file into the same store without hitting any row cap at all. A narrow file with 300,000 rows can be smaller than a wide one with 30,000, so "how many products can I import" has no fixed answer — it depends on how wide your columns are.

The usual reason a file is unexpectedly large is a Body (HTML) column carrying full marketing descriptions, which can be several kilobytes per product on its own.

How to fix it

  1. Split the file — but split it BETWEEN products, never mid-product. Every row sharing a Handle is one product, and cutting a handle group across two files gives Shopify a product whose variants arrive in two separate imports.
  2. Import the pieces one at a time. A store runs one CSV import at a time; a second upload queues behind the first rather than running alongside it.
  3. If one product is genuinely enormous, the Body (HTML) column is almost always why. Importing without it and adding descriptions afterwards is usually faster than fighting the size limit.

Where this came from

We broke a real Shopify store on purpose to answer these questions, and kept what it said. Nothing on this page is quoted from documentation.

  • No row cap was found at 20,000: the importer processed the whole file, and handles 6441 through 20000 are present with not one gap in 13,560 consecutive rows. It finished seven hours and nineteen minutes after the first row.

What we did not measure. We measured the refusal at 16.0MB and did not binary-search for the exact threshold, so treat that as "somewhere at or below 16MB", not as a published number.

Observed 2026-09-04. The store this was measured on has since been deleted, so these answers are an archive rather than something we re-run — we would rather tell you the date than imply it is checked continuously.

Check your file before you upload it

The Pre-Flight Report reads your supplier file and names every blocker, with the row it is on, before you go near an importer. It is free, it needs no account, and it does not send your file to a model.

Check a file free