How to use the CSV splitter
- Press Choose a file to load a
.csv,.tsv,.txtor Excel file, or paste rows into CSV data. - Check the Delimiter and whether the First row is a header.
- Choose Split by: Rows per file or Number of files, and type the amount in How many.
- Keep Repeat the header row in every file ticked, and optionally set a File name prefix.
- Press Download all (.zip) to save every part at once, or use the download icon beside a single file.
What it does and when to use it
Large exports are awkward to handle. A contact list of 60,000 rows may be too big for an email tool that takes 10,000 at a time; a product feed may need batches for a shop upload; a data file may be easier to share with a team as one piece per person. The splitter cuts the file into ready-to-use parts without opening a spreadsheet program.
Clean the file first with the CSV cleaner so blank lines are not counted as rows. If you only need some of the columns in each part, run the CSV column extractor before splitting. To join parts back together later, use the CSV merger.
How it works
The file is read and parsed in your browser with PapaParse (Excel files with SheetJS, first sheet only). Blank lines are skipped. In Rows per file mode the data rows are cut into blocks of that size, and the last block holds whatever is left. In Number of files mode the row count is divided as evenly as possible.
Each part is written with the same delimiter as the input, quoted only where a field needs it, and ends with a line break. Files are named with the prefix and a number: part-1.csv, part-2.csv for pasted text, or <file name>-part-1.csv for a chosen file. Characters that are not allowed in file names, such as / and :, are replaced with a dash. The ZIP is built on your device, and nothing is uploaded.
Worked examples
The sample has a header and 8 sales rows (Region, Quarter, Product, Revenue).
3 rows per file (the default). Three files of 3, 3 and 2 rows, each starting with the header:
File | Rows | First data row | Last data row
part-1.csv | 3 | 1 | 3
part-2.csv | 3 | 4 | 6
part-3.csv | 2 | 7 | 8
Two equal halves. Number of files 2, prefix “half”: half-1.csv holds rows 1–4 and half-2.csv rows 5–8.
Header only once, unsafe prefix. 5 rows per file, header not repeated, prefix “batch/2026”. The slash becomes a dash, giving batch-2026-1.csv (header plus 5 rows) and batch-2026-2.csv (rows 6–8, no header).
Limits and tips
- Very large files are held in memory, so a file of hundreds of megabytes may be too much for a phone. Files over 4 MB are processed in a background worker to keep the page responsive.
- Excel files are split from their first sheet only, with cells as they are displayed.
Frequently asked questions
Why would I split a CSV?
Does each part keep the header row?
How are rows shared out when I choose a number of files?
Is there a limit on the number of files?
Are rows shuffled or sorted?
How do we know nothing is uploaded? Test it yourself on the privacy proof page.