Split a CSV Into Multiple Files

Drop a large CSV and download it split into smaller files of however many rows you choose - the header row repeated in each one, packaged as a single zip. Nothing is uploaded.

Split a CSV Into Multiple Files

Drop your CSV file here

Up to 20MB per file. Stays on this device.

Nothing is sent anywhere. Turn off your Wi-Fi and this page still works - try it.

How it works

  1. Drop or choose a .csv file, or paste CSV text directly into the text box.
  2. Set “Rows per file” - the file list updates immediately to show exactly which files you’ll get and how many rows land in each.
  3. Leave “First row is a header” on (the default) to repeat the header as the first row of every file, or turn it off to split purely by position.
  4. Download the zip - every piece is a complete, standalone .csv.
Example output

Input

idnameamount
1Alice20
2Bob15
3Cara40
4Drew5
5Elle60

Output (2 files)

orders-part-01.csv

idnameamount
1Alice20
2Bob15
3Cara40

orders-part-02.csv

idnameamount
4Drew5
5Elle60

One file split into smaller ones by row count. The header row repeats in every output file.

Frequently asked questions

Does the header row count toward the rows-per-file number?

No. “Rows per file” counts data rows only - with the header option on, each file gets the header row plus up to that many data rows. Splitting 250 data rows into files of 100 gives you three files: 100, 100, and 50 rows, each with the header on top.

What are the files in the zip called?

They take the original file’s name with a numbered suffix - orders.csv split three ways becomes orders-part-01.csv, orders-part-02.csv, orders-part-03.csv. The numbers are zero-padded so the files sort in the right order in any file manager.

How are quoted fields with commas or line breaks inside them handled?

Correctly - this tool reads the whole file with a full CSV parser, so a quoted field like "Smith, John" or a quoted field containing its own line break is kept as one field of one row. That matters more for splitting than almost any other CSV operation: a tool that split on raw line breaks would cut a multi-line field in half and corrupt both output files around it.

Why would I split a CSV at all?

The usual reasons: a tool or form that caps how many rows it accepts per import (many CRM, email, and e-commerce importers stop at 500–10,000 rows), a spreadsheet that struggles with a very large file, or sharing a big export in reviewable pieces. Set “Rows per file” to whatever your importer’s limit is and each piece comes out ready to load.

Do you upload my file anywhere?

No. The file is read, split, and zipped entirely on your device. Turn off your Wi-Fi after the page loads and it still works. This page loads 11KB of JavaScript, gzipped - about what your browser's network tab will show for this page's own scripts.

What happens to blank lines?

Rows whose cells are all empty are dropped rather than carried into an output file - they’d otherwise waste a slot in a row-count split and show up as empty lines mid-file. Rows with any real content are kept exactly as they are.

Is there a limit on file size or how many pieces I can make?

The input file is capped at a generous size (shown on the drop zone) so a single huge file can’t freeze the tab, and one split is capped at 2,000 output files - if your settings would produce more, the tool says so and asks you to raise “Rows per file” rather than silently building a zip your browser can’t handle.

Files are processed locally in your browser and never uploaded. Read more on the privacy page.