CSV Splitter
Split a long CSV into parts that each keep the header.
What you paste
Parsed in your browser — never uploadedHow this reads your output
The file is parsed, then the data rows are cut into parts of a hundred with the header row repeated at the top of each. Repeating the header is the detail that matters and the one manual splitting always misses: without it, the first data row of each part gets treated as column names by whatever imports it, and one record silently disappears per part.
What the results mean
- Parts
- How many chunks the data divides into. Each is a complete, valid CSV rather than a fragment.
- Last part
- The remainder, which is usually shorter. Worth checking it is not a single stray row caused by a trailing blank line.
- Problems found
- Issues in the source file such as ragged rows. Splitting a malformed file produces several malformed files, so fix these first.
Common problems and fixes
- An import tool rejects one of the parts
- Check whether the part contains a row split across lines. A quoted field may legitimately contain newlines, and this splitter counts parsed rows rather than text lines, so that case is handled here. A naive split by line count is where that problem usually comes from.
- I need a different number of rows per part
- This one is fixed at a hundred, which suits most import limits and paste windows. For a different size, split with a spreadsheet by filtering on row number, or use a command-line tool, which handles arbitrary sizes and very large files far better than a browser can.
Frequently asked questions
Why does each part repeat the header?
So that every part is a valid CSV on its own. Without the header, whatever imports the second part treats its first data row as column names, and you lose one record per part without any error appearing.
Does the row order change?
No. Rows stay in their original order and are cut sequentially, so concatenating the parts back together, minus the repeated headers, gives you exactly what you started with.
What is this useful for?
Import limits, mostly. Many systems cap uploads at a few hundred or a few thousand rows, and some paste-based importers have much smaller limits. Splitting also makes a failed import easier to diagnose, since you know which part contains the bad row.
Put this on your own site
Free to embed, no attribution required beyond the source link the frame carries itself. It runs entirely in your visitor's browser, sets no cookies and loads no third-party script.
<iframe src="https://runthetests.com/embed/csv-splitter/" width="100%" height="720" style="border:1px solid #e5e5e5;border-radius:8px" title="CSV Splitter" loading="lazy"></iframe>
Preview it at https://runthetests.com/embed/csv-splitter/. Embedded pages are marked noindex, so yours stays the canonical copy — not this one.