Nothing you open here is ever uploaded

Split a CSV into smaller files

Paste or drop a CSV, choose how many rows each piece should hold, and download the pieces. The header row is written into every one of them. That sounds obvious and is the usual bug: without it, whatever program opens the second file treats its first data row as the heading, so one record quietly disappears from every piece after the first. The summary tells you how many rows went in and how many files came out.

This page loads no libraries at all — the work is done by the browser itself. Your file is read on your own machine and never sent anywhere — open your browser's network tab and watch while you use it.

Questions

Why does every file get the header?

Because otherwise each piece after the first loses a row. Spreadsheet programs and import scripts read the first line as column names, so a headerless chunk sacrifices its first record to that assumption — and since the file still opens and still looks reasonable, the missing rows are found much later, if at all.

How do I get all the pieces?

Each piece has its own download button, and there is one button that downloads them all in sequence. Browsers sometimes block a burst of downloads, so they are spaced slightly apart.

What size should I choose?

Whatever the thing you are feeding accepts. Import limits are the usual reason to split — many systems cap uploads at a few thousand rows — so match the cap rather than guessing. The row count excludes the header.

Does the last piece get padded?

No. The last file simply holds whatever is left over, which may be a single row. Padding would invent data, and inventing rows in a data file is worse than an uneven split.

Other data & spreadsheets tools

Everything here is free and works the same way — in your browser.