↑↓ to move ↵ to open Esc to close Browse all tools

Split CSV

Drop a big CSV file and cut it into smaller ones, each with the header row. Download the parts as a ZIP; the file never leaves your browser.

Split a CSV file

Split by
Data rows in each part, not counting the header.
Delimiter
Parts -

Drop a CSV file to split it.

    First rows of the file

    The first rows appear here.

    Your CSV is split in your own browser. Nothing is uploaded.

    Hand-checked listFree Office SuitesFree word processors, spreadsheets and full office suites for the desktop and the browser, with their limits.

    Split CSV by Freebiefy, free online tools · Privacy · Legal notice

    Embed this tool on your site

    Paste this code into your page. The tool runs in the visitor's browser, free and without signup. The height adjusts to the content. All tools you can embed

    Split a large CSV file into smaller ones

    Many import forms, email attachments and spreadsheet programs have a limit, and an export with a million rows does not fit. This tool cuts a CSV file into parts: a set number of rows per file, a set number of files, or files that stay under a size such as 10 MB. Every part gets the header row, so each one can be imported on its own, and you download them together as a ZIP or one by one.

    The splitting happens in your browser, in a background thread. The file is never uploaded, and the page stays usable while a big file is being split. To look at the parts in a spreadsheet, convert one with CSV to Excel; to turn one into JSON, use CSV to JSON.

    Why rows are never cut in half

    A CSV record can span several lines. RFC 4180 allows line breaks inside a field when the field is wrapped in double quotes, and writes a double quote inside such a field as two double quotes. A simple split at every line break would cut such a record into two broken halves. This tool reads the file the way RFC 4180 describes, so it only cuts between complete records:

    id,address
    1,"12 Main St
    Springfield"
    2,"Say ""hi"""

    Here the file has three lines after the header but two records, and they stay whole. That is also why the delimiter matters: a quote only starts a quoted field at the beginning of a field. Detect finds the delimiter from the first rows; pick it by hand if the preview looks wrong.

    What stays as it was

    The tool copies every record byte for byte. It does not decode and re-encode the text, so UTF-8, Windows-1252 and any other single-byte or UTF-8 file comes out with the same characters, and quotes, spaces and number formats are untouched. If the original starts with a UTF-8 byte order mark, every part starts with it too: Microsoft notes that Excel opens a UTF-8 CSV normally when it has one (Opening CSV UTF-8 files correctly in Excel). Each record ends with the line break the file uses, CRLF or LF, including the last record of a part. Blank lines are left out.

    The three ways to split

    Split byWhat you getExample with 25,000 data rows
    Rows per fileParts with that many data rows; the last one holds the rest10,000 rows: 3 files with 10,000, 10,000 and 5,000 rows
    Number of filesThat many parts with nearly the same number of rows4 files: 6,250 rows each
    Size per fileParts filled with whole rows up to the size, header includedDepends on the length of the rows

    Parts are named after your file with a number, like orders-part-01.csv, so they sort in order. Sizes are counted in megabytes of 1,048,576 bytes.

    How to split a CSV file

    1. 1Drop your CSV file on the box or browse for it. The tool counts the rows and shows the first ones.
    2. 2Choose rows per file, number of files or size per file, and check that the header option matches your file.
    3. 3Press Split CSV, then download all parts as a ZIP or single parts from the list.

    Frequently asked questions

    Is my file uploaded?

    No. The CSV is split by your browser, in a background thread on your own device, and the parts are packed into a ZIP right there. Nothing is sent to a server, so exports with customer or payment data stay private.

    Does every part get the header row?

    Yes, when First row is a header is switched on, which it is by default. The header is written at the top of every part, so each file can be imported on its own. Switch it off for files without a header row.

    Can a row be cut in half?

    No. The tool splits only between records. A quoted field that contains line breaks, like an address over two lines, stays in one piece, because the splitter reads the quotes the way RFC 4180 describes them.

    How big can the CSV be?

    Up to 300 MB, as long as the browser has the memory for the file, the parts and the ZIP at the same time. Computers handle far bigger files than phones. The work runs in a background thread, so the page stays usable.

    Are the characters or the encoding changed?

    No. Every record is copied byte for byte, so UTF-8, Windows-1252 and the byte order mark at the start stay as they were, and each part starts with the same byte order mark when the original has one. The only change is the line break after each record, which follows the file. UTF-16 files are the exception: they are saved as UTF-8 with a byte order mark.

    What does split by size do?

    It fills each part with whole rows until the next row would make it bigger than the size you set, header included. It suits upload forms with a size limit. A single row that is bigger than the limit gets a part of its own.