FREE WEB TOOL

CSV row splitter

Split a large CSV into files with a chosen number of rows.

Split CSV

Files are processed in your browser and are not sent to our server.

How to use

An upload says “maximum 10,000 rows,” but your CSV has 47,000. Instead of cutting the file by hand, choose the number of data rows per part and keep the header on every output file.

  1. Choose the CSV file and set the maximum data rows per output file.
  2. Split the file; every part receives the original header row.
  3. Check the part counts and download the files you need.

The limit applies to data rows, not the header

If you choose 1,000, each part contains one header row plus up to 1,000 data records. That matches the way many import limits are described: number of products, contacts, or records.

Quoted line breaks still count as one CSV record

This is a subtle CSV detail. A newline inside a correctly quoted cell can make one record span several physical lines in a text editor. The tool parses CSV structure first, so it splits logical records rather than raw newline characters.

The output format is normalized

Output files are written as comma-delimited CSV with CRLF line endings and a UTF-8 BOM. A Shift_JIS input therefore does not stay byte-for-byte Shift_JIS. If the receiving system requires Shift_JIS, convert the split files afterward.

Even a UTF-8 file without a BOM becomes UTF-8 with BOM after splitting. That is friendly to many spreadsheet workflows, but it is not byte-preserving. Check the receiving system if encoding is part of the import contract.

This tool expects comma-delimited CSV

TSV and semicolon-delimited data should be converted before splitting. The parser here is intentionally for standard comma-separated CSV.

One quick boundary check is worth it

Open the end of part 1 and the beginning of part 2. If the records line up and the sum of all part row counts equals the source data-row count, you have a strong sanity check before uploading.

For 47,000 rows split at 10,000, you should see 10,000 / 10,000 / 10,000 / 10,000 / 7,000. Simple arithmetic like this catches a surprising number of configuration mistakes before upload.

Want the deeper explanation?