How to split CSV files by rows, size or column
Drop the file, choose how to split it, and download a zip of the parts. The header row is repeated at the top of every part, so each one opens as a complete CSV on its own.
- By number of rows — for example 100,000 rows per file, so each part fits comfortably in Excel.
- By file size — for example 50 MB per part, useful for upload limits and email.
- By column value — one file per distinct value in a column, such as a country, a team or a year. Up to 500 distinct values.
Split a large CSV so Excel can open it
Excel can hold at most 1,048,576 rows on a sheet, and it becomes slow well before that. Splitting a large CSV into parts of a few hundred thousand rows each gives you files Excel opens quickly, with the header on every one. For very large files, filtering to just the rows you need is often better than splitting; the viewer can do both.
How it opens a huge file without loading it
A browser tab has a limited amount of memory, so anything that reads a whole large file into it — the way most online CSV tools work — fails or freezes past a few tens of megabytes. This toolkit never loads the file. It reads it in eight-megabyte blocks, scans each block for where every row begins, and keeps only that list of positions.
When you scroll to a row, it reads just the bytes of the rows on screen and parses those. The table is virtualised, so only a screenful of rows exists at any moment, whether the file has a thousand rows or a hundred million.
Messy files, handled
- Quoted fields that contain commas, doubled quotes and line breaks are read correctly, so a note with a newline in it does not split into two rows.
- Comma, semicolon, tab and pipe delimiters are detected from the start of the file, including the semicolons European exports use.
- A byte-order mark, and Windows (CRLF) or Unix (LF) line endings, are handled.
- Rows with more or fewer fields than the header are counted and shown, not silently dropped.
- Files with no header row are supported with one checkbox.
- UTF-8 files are supported. A UTF-16 file needs saving as UTF-8 first, and the tool tells you so.
How to use it
- Drop the CSV file onto the box.
- Pick rows, size or column, and set the value.
- Click Split file.
- Download the zip of parts.
Frequently asked questions
Is the header repeated in every file?
Yes, if the first row is a header. Untick “First row is a header” if your file has none and the rows are split as they are.
Can I split by a column value?
Yes. Choose Column value and a column, and you get one file per distinct value, named after the value. If a column has more than 500 distinct values, choose another column or split by rows.
Are rows ever cut in half?
No. A row that contains line breaks inside quotes is kept whole, and every part boundary falls between rows.
How large a CSV file can it handle?
The largest file it has been run on is 1 GB, opened and scrolled in a real browser. It streams the file instead of loading it, so memory grows with the number of rows (about 8 bytes each for the index), not with the size of the file. Very large row counts, roughly above a hundred million, may exhaust a browser tab’s memory.
Is my file uploaded anywhere?
No. The file is read in pieces by code running in your browser and is never sent to a server. The site records only an anonymous counter with the operation and rough size buckets, such as “100–500 MB” and “1M–10M rows” — never file names, column names or any data.