Skip to content

How to split a large CSV for imports

Why naive splitting breaks imports, what row counts the big platforms accept, and the two-minute private way to do it.

Updated September 3, 2026 · 4 min read · by the InfyTool team

The 200,000-row export meets the 5,000-row import limit: a rite of passage for anyone who has migrated a mailing list, a CRM or a product catalogue. The fix is splitting — but naive splitting (chopping the file every N lines) produces parts that fail, because only the first one carries the header row the importer needs. Here is the way that works.

The two-minute flow

  1. Open Split CSV and drop the export — CSV or Excel both work.
  2. Set rows per part just under your platform's limit (importing at 5,000? use 4,900 — some platforms count the header).
  3. Keep "Repeat header in every part" ticked. This is what makes each part importable on its own.
  4. Download the ZIP: tidy files named part1, part2, … each a complete table.
Split a CSV now

SheetJS in your browser — customer data never crosses the network.

Finding the right rows-per-part

The error message usually tells you the cap; when it doesn't, the platform's import docs do. If neither helps, binary-search it: try 10,000 — fails; 5,000 — works; done. One habit worth keeping: make parts meaningfully smaller than the cap, because failed imports at row 4,999 of 5,000 waste far more time than a few extra files.

When the file needs reshaping too

Imports often want different columns, not just fewer rows. The Excel ↔ CSV ↔ JSON converter previews the table before you commit, and converts between formats when the importer insists on one. For a quick sanity check on what a part contains, its preview table beats opening forty files in Excel.

Frequently asked questions

How many rows can common platforms import?

It varies by tier, but typical caps: mail platforms 1,000–10,000 contacts per file, CRMs 5,000–50,000 rows, e-commerce catalogue uploads often 10,000. When an import fails silently or truncates, the row cap is the first suspect — split below it and retry.

Why does every part need the header row?

Because the importer maps columns by the header. A part without one either fails outright or maps "Ravi, ravi@…" as column names. Repeating the header makes every part a complete, self-describing file — that is the whole trick.

Can I split an Excel workbook the same way?

Yes — drop the .xlsx and choose whether parts come out as CSV or as separate Excel files. Workbooks with several sheets are split sheet by sheet with the sheet name in each file name.

Is my customer data uploaded?

No — parsing and splitting run on SheetJS in your browser, and the parts are zipped locally. For files full of emails and phone numbers, that is the only responsible arrangement.

Tools used in this guide