Back to Blog
Guide

How to split a 10GB CSV file without crashing Excel

Excel has a hard row limit of 1,048,576 rows and collapses under memory pressure long before that with huge files. Here's how to split any CSV into manageable pieces — safely and instantly.

April 18, 20266 min read

Why Excel struggles with large CSV files

Microsoft Excel imposes a hard limit of 1,048,576 rows per sheet. Open a file with more rows and Excel silently truncates it — you lose data without any warning. But even before you hit that ceiling, Excel will often crash or freeze on files larger than a few hundred megabytes because it loads the entire file into RAM.

A 10GB CSV file can easily contain tens of millions of rows. On a machine with 16GB of RAM, Excel will consume all available memory just parsing the file structure, leaving nothing left for the operating system or other applications. The result is a frozen screen, a forced quit, or a full system restart.

The solution is not to get a bigger machine — it is to split the file before you open it.

Two ways to split a CSV

There are two common strategies, and which one you pick depends on how you plan to use the resulting files.

Split by row count

You tell the tool: "give me files with at most 500,000 rows each." This is the most predictable approach. Every output file will have exactly that many rows (except the last one, which gets the remainder). It is the right choice when downstream tools have a row-count limit — for example, if you are importing into a database table that batches 500k records at a time, or loading into a spreadsheet application.

Split by file size

You tell the tool: "give me files no larger than 100MB each." This is the right choice when you have an upload size limit — such as an email attachment cap, a CRM import tool, or an API with a per-request size ceiling. The tool calculates how many rows fit within the target size and cuts the file accordingly.

Rule of thumb: If your problem is a row-count limit, split by rows. If your problem is a file size limit, split by size. When in doubt, splitting by rows gives more predictable results.

Step-by-step: splitting a large CSV with CsvKit

1 Go to the CSV Split tool

Navigate to csvkit.net/split. No account or sign-up required — the tool works on a secure session key generated automatically when the page loads.

2 Upload your file

Drag and drop your CSV or XLSX file onto the upload area, or click to browse. Files under 5MB upload directly. Files above 5MB are uploaded in 10MB chunks automatically — you will see a progress bar as each chunk is transferred. This means even a 10GB file will upload reliably without timing out.

3 Preview your data

Once the upload is complete, CsvKit shows you a live preview of the first rows. Verify the columns look correct before continuing.

4 Configure the split

Choose Split by Rows or Split by Size. Enter the target row count or file size. Give the output files a prefix like customers_part — the parts will be named customers_part_1.csv, customers_part_2.csv, and so on.

5 Download

Click Split. When processing is complete, you can download each part individually or grab all of them as a single ZIP archive.

Choosing the right row count or file size

Here are practical starting points depending on your use case:

  • Excel / Google Sheets: 500,000 rows per file (well below Excel's 1M limit, leaves room for formulas)
  • Database batch imports: 100,000–500,000 rows, depending on your DB and network
  • Email attachments: 10–25MB per file (most email providers cap at 25MB)
  • CRM / marketing tool imports: 50,000 rows (many tools have this limit)
  • API uploads: match the API's documented per-request size limit

What about the header row?

CsvKit preserves the header row in every output file. You do not need to manually copy column names into each part — they are included automatically so every split file is immediately usable as a standalone CSV.

Common mistakes to avoid

  • Opening the original file in Excel first. Even just to preview it can freeze your machine. Use CsvKit's built-in preview instead.
  • Splitting without checking encoding. If your CSV uses a non-UTF-8 encoding (like Windows-1252), make sure your downstream tool handles it. CsvKit preserves the original encoding.
  • Forgetting that the last part is smaller. The final chunk will have fewer rows than the rest. If your import pipeline expects uniform file sizes, account for this edge case.

Summary

Large CSV files and Excel do not mix well. The solution is to split the file into smaller pieces before working with it. Use row-count splitting when you have a row limit, and size-based splitting when you have a file size limit. CsvKit handles files up to 50GB using chunked uploads, so the size of your file is never the blocker.

Ready to try it yourself?

Free, no sign-up required. Works with files up to 50 GB.