Split a large CSV file into smaller files
Set the rows per part, click Split file, and each piece appears in the Output panel with its own download button. The header row is repeated at the top of every part, so each one opens cleanly on its own — a split that drops the header on parts 2 and up is the most common way this goes wrong elsewhere.
How many rows per part?
It depends on what receives the file, not on the file itself:
- Opening in Excel: anything under 1,048,576 works, but Excel gets sluggish well before that. 100,000–250,000 rows per part stays responsive.
- Importing into a CRM or email tool: most impose their own ceiling. Mailchimp, HubSpot and Salesforce data loaders all have per-import limits in the tens of thousands — check the limit and set your split just under it.
- Feeding a script or API: match the batch size your code already uses, so each part maps to one run.
Splitting 500,000 rows produces a lot of files
At 10,000 rows per part that is 50 downloads. When a split produces more than one file a Download all as .zip button appears above the list, which bundles every part into a single archive. It hides itself when the total exceeds 200 MB, because the zip is built in memory and a larger one would stall the tab — download those individually.
Why not just use the command line?
split -l 10000 big.csv part_ is fast and fine, with two caveats: it only repeats
the header if you add more scripting, and it produces files with no .csv extension.
If you are comfortable in a terminal it is a perfectly good answer. This page exists for the times
you are not, or the file is on a machine where you would rather not install anything.
Related: CSV too large for Excel · Open a large CSV file · Remove duplicate rows
Common questions
Does each part keep the header row? Yes. The header from the original file is written at the top of every part, so each one opens correctly on its own.
Is there a limit on how many parts it can create? No fixed limit. Splitting is streamed, so a file that produces hundreds of parts works; only the optional zip bundle is capped, at 200 MB total.
Can I split by file size instead of row count? Not currently — splitting is by row count, which is what import limits are almost always expressed in.