Split a Large CSV File into Smaller Parts

To split a large CSV file into multiple files, choose a data-row count for each part, keep the same header in every output, and check that the parts contain all the original records. A CSV splitter should work with complete records, including quoted fields, rather than assuming every visible line is a separate record.

CombineSheets accepts UTF-8 CSV and can split it by rows in your browser, then download the parts in a ZIP. This is useful for files that fit the tool's input and device guards. It is not a way to process an unlimited file by loading only one small part at a time.

Understand why a large CSV will not open

Microsoft Excel has a limit of 1,048,576 rows per worksheet, including the header. A CSV can contain more records than that because it is a text file rather than an Excel worksheet. Opening it in the grid cannot show everything once that worksheet limit is exceeded. See Microsoft's worksheet specifications.

Files can also become difficult to open below that row count. Wide records and long text increase memory requirements, while the receiving system may impose its own upload or import limit. A file that fits on disk does not necessarily fit comfortably in an application.

Keep the original CSV unchanged. Do not open a partly loaded file and save over it as your splitting method: the saved copy may omit records that never reached the grid. Establish the source record count using an appropriate CSV reader or the exporting system.

Choose data rows per part before exporting

Start with the destination's limits. If each part will go into a worksheet, allow one row for its header. If an import service limits file size instead, start with a modest record count and inspect an actual output; row count alone cannot predict bytes when field lengths vary.

For example, a table with 25,000 data records split into batches of 10,000 produces three parts containing 10,000, 10,000, and 5,000 data rows. Each file also needs the header. These are planning figures, not a promise about the size of your own download.

Smaller batches produce more outputs. For CombineSheets, free splitting allows up to 10 output files, while a pass allows 300. Increase rows per part if your plan exceeds the output count, provided the resulting files still fit the receiving system.

Row batches follow record order. They do not group all records for a customer or region into the same file. If that grouping matters, use a separate preparation workflow: the CombineSheets split tool does not offer splitting by a column's value.

Check encoding, delimiters, and the header

Use UTF-8 input for CombineSheets. If an older export uses another encoding, convert a copy using a tool that understands the original encoding. Merely renaming the file or opening it with the wrong encoding can leave names and accented characters damaged.

Check the delimiter in the source and the application receiving the result. A comma-separated file and a semicolon-separated file need different import settings. The browser split interface has no delimiter selector, so check a small output to confirm the fields were interpreted as intended before processing the working batch.

A field containing a comma must be quoted appropriately. Quoted fields can also contain line breaks, which means counting physical text lines can overstate the record count. Inspect a record with punctuation or multiline notes during validation.

The browser tool treats the first non-empty row as the header and repeats it in each row-split output. Put the actual column labels first, without a report title above them. Keep labels distinct so that the receiving system can identify the fields reliably.

Split CSV by rows with CombineSheets

Open the split tool and choose the CSV. The tool uses the same file reader as its workbook workflows; file data is processed locally and is not uploaded.

  1. Choose Split by rows rather than One file per sheet.
  2. Keep exactly one input table selected for row splitting.
  3. Enter a positive whole number in Data rows per part.
  4. Choose CSV for text files or XLSX for workbook parts.
  5. Select Review export and inspect the proposed filenames and data-row counts.
  6. Select Download ZIP, extract the bundle, and open the outputs for checking.

Parts use numbered names such as orders - part 001.csv. The final part can be shorter, and every part receives the header separately from its data-row allowance. One file per sheet is the alternative for a workbook whose tabs already define the separation you want; the team workbook guide explains that workflow.

Exports contain values only. When the input is a workbook, formulas become their last saved values and formatting is not preserved. Keep the original if you need its calculations or layout. When importing CSV parts into a spreadsheet, explicitly treat identifier columns as text so that the receiving app does not remove leading zeros.

Plan around browser memory and batch guards

Free splitting accepts one input file per run and up to 10 outputs. A pass permits multiple workbook inputs for worksheet splitting, subject to 300 outputs; row splitting still requires exactly one selected table.

General input limits are 30 files and 50 MB total free, or 300 files and 100 MB with a pass. The free split restriction still limits that operation to one input. Merge and split guards count 1,000,000 non-empty cells free or 2,000,000 with a pass, across all input sheets.

Phones use 20 MB and 300,000 non-empty cells across tiers. Browser memory can run out below these guards. Making smaller output parts does not reduce the size of the source that must first be read. For a source that does not fit, use a suitable local command-line workflow or request smaller exports upstream.

Use command-line alternatives with record checks

On macOS or Linux, split -l 100000 input.csv part- creates chunks of up to 100,000 physical lines. It does not repeat the header: only the first chunk inherits the original header, and that header counts toward its line allowance. The split documentation describes line-based splitting.

Use that approach only when each CSV record occupies exactly one line, and handle the header separately if every part needs it. Quoted multiline fields can be cut between chunks. Adding a header afterward does not repair a broken record; use a CSV-aware parser for those files.

In PowerShell, a script can read objects with Import-Csv, collect a bounded batch of records, and write each batch with Export-Csv -NoTypeInformation -Encoding UTF8. Each separate export writes its column header. Set the input encoding and delimiter explicitly, and test the round trip on representative records. Microsoft's import and export references explain these options. Avoid collecting the entire input into an array when memory is the reason for splitting.

Reconcile the parts before importing them

Sum the data-record counts across all outputs, excluding each repeated header, and compare with the source. Check the first and last record in every part, plus quoted text, accented characters, identifiers, blanks, and zeros. Import one part into the destination before committing to the whole batch. Keep the unchanged original until every record has been accounted for.