CSV Too Big for Excel? The Row Limit and How to Split the File

Last updated: August 2026 · By the CSVUndo team · 7 min read

The short answer: an Excel worksheet holds at most 1,048,576 rows, so a CSV with more rows than that isn’t too big to exist — it’s too big for Excel to display. Excel opens the first 1,048,576 rows, discards everything after them, and if you save the file in that state the extra rows are deleted for good. The fix is to split the CSV into parts below the limit with the free browser splitter: every row lands in exactly one part, the header is repeated in each, and each part opens in Excel like any normal file.

Every version of Excel since Excel 2007 caps a worksheet at exactly 1,048,576 rows — that is 220 — while the older .xls format stops at just 65,536.

How many rows can Excel actually open?

The grid itself is the limit: 1,048,576 rows by 16,384 columns per worksheet, unchanged since Excel 2007 introduced the .xlsx format. If a colleague is still opening files as .xls, their ceiling is far lower — 65,536 rows and 256 columns. These are properties of the worksheet format, not of your computer, so more RAM or a newer laptop changes nothing. Microsoft publishes the full list in its specifications and limits page.

What happens when a CSV exceeds the grid is the part that surprises people. Excel doesn’t refuse the file. It loads the first 1,048,576 lines, and in many versions shows a small “File not loaded completely” notice that is easy to dismiss without reading. From that moment the worksheet looks complete — you can scroll, sort and filter — but everything past the limit simply isn’t there. The CSV on disk still contains all the rows. The danger is the save: press Ctrl+S while the truncated sheet is open, and Excel writes back only what it loaded. The file on disk now genuinely ends at row 1,048,576, and the loss is permanent unless you have another copy.

That last sentence is worth sitting with, because it is the difference between an inconvenience and a data-loss incident. Opening an oversized CSV in Excel is harmless. Saving an oversized CSV from Excel destroys the tail of the file.

How do I know if Excel truncated my CSV?

Four checks, from quickest to most reliable:

  1. Ctrl+End in Excel. Jump to the last used cell. If the last row is exactly 1,048,576, treat that as a red flag: real datasets almost never end precisely on the limit, so a file that does was almost certainly cut off there.
  2. The notice. If you saw “File not loaded completely” when opening, truncation already happened in memory. Close without saving.
  3. Count the lines outside Excel. On Windows, open PowerShell and run Get-Content data.csv | Measure-Object -Line; on Mac or Linux, wc -l data.csv. If the count is higher than what Excel shows, Excel is hiding the difference. One caveat: a CSV can legitimately contain line breaks inside quoted cells, which makes the raw line count higher than the true row count — see line breaks inside cells before you panic over a small mismatch.
  4. Ask the source. The system that produced the export usually reports how many records it wrote. If it says 2.4 million and Excel shows 1,048,576, you have your answer.

One honest caution: “Excel not showing all rows” is not always truncation. If your file is under the limit, the far more common culprits are an active filter or hidden rows. Select a whole column and look at the count in the status bar, and clear any filters (Data → Clear), before concluding that data is missing. Diagnosing by symptom alone leads to wrong fixes — the same reason a repair tool should never decide a value like 2E5 is Excel damage purely from its shape, since it can be a perfectly real part number.

How do I split a CSV that’s too big for Excel?

Cut it into parts that each fit under the limit, with the header repeated so every part opens with the right column names:

  1. Open the CSV splitter and drop the file in.
  2. Choose by rows per file and enter 1000000 (no comma — it is a number field) — comfortably under the 1,048,576 ceiling once the header is added — or choose into N files if a fixed number of parts suits you better. Leave First row is a header ticked.
  3. Click Split, then download the parts one by one or all together as a single zip.

Because the splitter cuts by row position into sequential blocks, no row is reordered or dropped: every data row ends up in exactly one part, in the original order. The parts are re-written as UTF-8 with CRLF line endings, so the values are identical even if the byte-level formatting of the original isn’t. There’s an optional Excel-safe mode that wraps long numbers and zero-led codes as ="00501" so Excel can’t re-damage barcodes and ZIP codes when you open the parts, and an option to add a UTF-8 BOM if your data has accented characters Excel keeps mangling. And since the whole thing runs in JavaScript on your own machine, the file never leaves your browser — there is no upload step for a large file to time out on, and nobody else ever holds a copy of your data.

Note what the splitter deliberately doesn’t do: it divides by position, not by meaning. If you need all of one customer’s rows in the same part, that’s a grouping job for a database or script, not a file splitter.

Split it now, in the browser

Drop in the oversized CSV and download Excel-sized parts — split by row count or into N files, header repeated in each, all parts in one zip, nothing uploaded.

Open the CSV splitter →

What about files bigger than 60 MB?

Here is where we’re upfront about our own ceiling. The splitter parses on the browser’s main thread, so it refuses files over 60 MB outright — not because the code couldn’t try, but because a synchronous parse of a bigger file would freeze the tab, and a frozen tab helps nobody — and anything much above 12 MB can leave the tab unresponsive for a few seconds while it works. 60 MB covers roughly a few hundred thousand rows of typical width, which handles many oversized exports — though a file that has genuinely passed Excel’s 1,048,576-row ceiling is often well past 60 MB too. But a multi-gigabyte database dump is a different animal, and we’ll say it plainly: multi-GB files need command-line tools, not a browser tab.

The good news is the command-line version is short. On Mac or Linux: split -l 1000000 big.csv part_ cuts the file into million-line pieces in seconds (add --additional-suffix=.csv on Linux for tidy names). Its one gap is that it doesn’t repeat the header, so only the first part carries the column names — paste the header line into the others, or prepend it in a loop. On Windows, a short PowerShell loop over Get-Content can write a huge file out as numbered chunks without holding the whole thing in memory — add -ReadCount to batch the lines and make it far faster. And if your real goal is analysis rather than opening the raw rows, Excel’s own Power Query can load many millions of rows into the Data Model for PivotTables without ever putting them on a worksheet — the row limit applies to the grid, not to the model.

Can I get the missing rows back?

It depends entirely on whether the truncated file was saved. If Excel is merely showing you 1,048,576 rows but you haven’t saved, close the workbook without saving — the CSV on disk is untouched and complete, and you can split it as above. If Excel already saved over the original, be clear-eyed: the rows past the limit are not hidden, cached or recoverable by any repair tool, including ours. They no longer exist in that file. Your recovery options are upstream: re-export from the source system, re-download the original, restore a backup or a previous version, or find the copy still sitting in someone’s outbox.

While you’re assessing the damage, check for Excel’s quieter casualties in the rows that did survive. Excel stores numbers with at most 15 significant digits, so 16-digit card or ID numbers get their tail digits turned to zeros — and once the file is saved in that state, those digits are unrecoverable too; no tool can compute information that was rounded away. See 16-digit numbers changed to zeros for what can and cannot be fixed, and scientific notation in CSVs for the related display damage that often is repairable. For prevention next time, open the CSV without breaking it — or keep big files out of Excel entirely and split first. Browse all guides for the rest.

Frequently asked questions

How many rows can Excel handle?

An Excel worksheet holds 1,048,576 rows and 16,384 columns, in every version since Excel 2007. The older .xls format stops at 65,536 rows. It is a limit of the worksheet format itself, not of your PC’s memory, so a faster machine does not raise it.

Why is Excel not showing all the rows in my CSV?

Two common reasons. If the CSV has more than 1,048,576 rows, Excel loads only the first worksheet-full and drops the rest, sometimes with a “File not loaded completely” notice. If the file is under the limit, look for an active filter or hidden rows instead — select a column and the status bar shows the true count.

Does splitting a CSV lose any data?

No. The splitter cuts the file into sequential blocks, so every row ends up in exactly one part, and the header row is copied to the top of each part so every file opens with the right column names. Merging the parts back together recreates the full dataset.

Can I recover rows Excel deleted when I saved?

Not from that file. Once Excel saves a truncated worksheet over your CSV, the rows past 1,048,576 are gone and no repair tool can bring them back. Recover them from wherever the file came from — re-export from the source system, re-download it, or restore a backup.

How big a file can the browser splitter handle?

It refuses files over 60 MB, and anything much above 12 MB can leave the tab unresponsive for a few seconds, because parsing runs on the page’s main thread and a bigger file would freeze the tab. For multi-gigabyte exports, use a command-line tool such as split on Mac or Linux, or a PowerShell script on Windows.

Sources: the 1,048,576-row and 16,384-column ceilings are documented in Microsoft’s Excel specifications and limits.