Split a CSV file
Cut a large CSV into equal chunks, or into one file per value of a column, with the header, delimiter and encoding carried into every part.
Drop your files here
.csv, .tsv, .txt · up to 300 MB
How to Split File
- 1
Drop your CSV file
The encoding and separator are detected from the file itself, so nothing needs configuring before you start.
- 2
Choose row count or column value
Equal chunks for importers with a per-batch limit; one file per column value for handing each team its own rows.
- 3
Split and download a ZIP
Parts arrive together, numbered or named after the value they contain. A single part is handed over as a plain file.
The parts have to be the same kind of file
Splitting is a lossless operation by definition, so anything the source file established is carried into every part: the same delimiter, the same character encoding, the same header row. This matters more than it sounds. An export that arrived from an accounting system as Windows-1251 with semicolons has to go back into a system that expects exactly that; a splitter that quietly normalises everything to UTF-8 with commas produces parts that the original importer rejects, and the user has no idea why. Quoted fields containing commas or line breaks are parsed properly and re-quoted on the way out, so a record with a multi-line address is never cut in half.
Splitting by a column, and why there is a ceiling
Grouping rows by the value of a column is how a national customer list becomes one file per region, or a staff export becomes one file per department. Values are used as filenames, so characters that filesystems reject (slashes, colons, quotes and control codes) are replaced, and two different values that clean up to the same name are still kept apart with a numeric suffix. There is a hard limit of a thousand distinct values, checked before anything is written: a column you did not mean to group by, such as an order id, would otherwise produce an archive of hundreds of thousands of two-line files, and finding that out after the wait helps nobody.
Repeating the header
Every part gets the header row by default, because each part is meant to be a usable CSV in its own right, openable in Excel and feedable to the same importer. When the parts are going to be concatenated again later, repeated headers become rows of data in the middle of the file, so the option to write it only where it belongs is there. Files are numbered with three digits, which is not cosmetic: part-002 sorts before part-010 as text, while part-2 does not.
The file stays in your browser
Reading, parsing, splitting and packing the archive all run locally in this tab. A large CSV is usually a customer or transaction export, and none of it is uploaded, cached or retained anywhere.
Frequently asked questions
How are the output files named?
Splitting by rows gives source-part-001.csv upwards, with three digits so the parts sort correctly. Splitting by column gives source-Value.csv, using the cleaned-up column value.
Does every part get the header row?
Yes by default, so each part is a valid CSV on its own. Turn the repeat option off when you plan to concatenate the parts back together and do not want headers appearing mid-file.
How many files can splitting by column produce?
Up to a thousand. Beyond that the split is refused before anything is written, because a column with thousands of distinct values is almost always the wrong column to group by.
What if the delimiter is not detected?
You are told rather than given a wrong split. Detection requires one candidate to produce a consistent, unambiguous field count; when two tie or the file has a single column, pick the separator yourself from the list.
Can I put the parts back together?
Yes. The CSV merger does exactly that, and because the parts keep the original delimiter and encoding, the round trip returns you to an equivalent file.
Is there a limit on rows?
Not one imposed here. Parts can hold from one to 500,000 rows each, and the source is limited only by what your browser can hold in memory.
Is my file uploaded?
No. Everything happens in this browser tab, from detecting the encoding to writing the ZIP, with no server involved at any stage.