How to split a CSV
- Drop the
.csvinto the box above, or paste it in. Nothing is uploaded. - Choose how to split it: rows per file, a number of files to divide it into, or a column's value to get one file per group.
- Leave the header repeated unless the pieces are going to be joined back together.
- Press Split, check the list and the report, then download the ZIP.
Records, not lines
A CSV splitter looks trivial: count lines, cut every thousand, paste the header on the front of each piece. That works until a file contains a record with a line break inside a quoted field — a shipping address, a comment, anything pasted out of a document. Such a record occupies several lines, and a line-counting splitter will eventually put its boundary in the middle of one.
The result is two broken files. The first ends with an open quote, so a parser reading it treats everything after that point as one enormous field. The second starts halfway through somebody's address, so its first row has the wrong number of columns and every value lands under the wrong header. No error is raised by anything, at any stage.
This tool parses the whole file into records before it splits anything, so a boundary can only fall between two records. After the split it tells you how many line breaks were sitting inside quoted fields, and shows the file's text-line count next to its record count. When those two numbers differ, you are looking at a file a line-based splitter would have damaged.
Three ways to split, and when each is right
| Split by | Use it when | Result |
|---|---|---|
| Rows per file | Something downstream has a row limit — an import form, a bulk upload, an API batch size | Equal pieces of the size you named, with a smaller remainder at the end |
| Number of files | You are dividing work between people or processes | The row count spread evenly across exactly that many files |
| A column's value | The file is really several datasets in one — per region, per month, per client | One file per distinct value, each named after it |
Splitting by a column
This is the mode most people are looking for and the one most splitters do not offer.
Pick a column and every distinct value in it becomes its own file, named after the value:
sales-north.csv, sales-south.csv. Each keeps the header, so each
opens on its own.
Two details are worth knowing. Values are grouped exactly as they appear, so
North and north are different groups — the tool does not
guess that they mean the same thing, because sometimes they do not. And because those two
would produce the same filename once cleaned up, a number is added to the second rather
than one file quietly overwriting the other. The list of files and their row counts is
shown before you download, which is the quickest way to notice that the column you picked
was not the one you meant.
Size, memory and the ZIP
Nothing is uploaded, so there is no server-side file size limit to argue with. What limits you is your own machine's memory, since the file is parsed in the browser tab. A few hundred megabytes is usually comfortable on a desktop and much less on a phone; if memory runs out the tab stalls rather than producing a quietly wrong answer.
The pieces come down as one ZIP, built in the browser. CSV is plain text, so it
compresses hard — the ZIP is typically a small fraction of the original. A split
that produces a single piece downloads as a plain .csv instead, because
zipping one file helps nobody.
Next steps
If what you actually need is the data in another shape, CSV to JSON converts it and reports anything it had to change along the way, and JSON to CSV goes back the other direction.