The Best Excel Alternatives for Large Datasets
If Excel is choking on your file, the honest answer depends on one number: how many rows you have. Under about 1 million rows, you do not need to leave Excel, you need to stop loading rows into the grid. Use Power Query to import and Power Pivot to model, and Excel will handle tens of millions of rows in the data model without ever putting them on a sheet. Between 1 million and roughly 100 million rows on a single machine, DuckDB is the fastest path: it reads CSV and Parquet files directly from your laptop, runs standard SQL, and needs no server. Above that, or when several people need the same data at once, put it in a database (PostgreSQL, ClickHouse, BigQuery, Snowflake) and query it from there.
If you want something that still looks and feels like a spreadsheet, the shortlist is short. Polars or pandas in a Jupyter notebook if you can write a little Python. DuckDB if you can write SQL. Google Sheets connected to BigQuery if you want a grid your finance team recognises with a warehouse behind it. Gigasheet or Row Zero if you want a browser spreadsheet that opens a 50 GB CSV without a code editor. Each of those is covered below with the row counts and file sizes where it actually starts to matter.
Where Excel actually breaks
Excel's famous limit is 1,048,576 rows per worksheet. That number is misleading, because almost nobody reaches it before something else fails. The real failure points, in the order most people hit them:
- Around 100,000 to 300,000 rows with formulas. Volatile functions (
OFFSET,INDIRECT,NOW,RAND) and full-column references likeVLOOKUP(A2, Sheet2!A:Z, 5, FALSE)force a recalculation across every cell. A workbook that opens fine takes 40 seconds to respond to a single edit. - Around 500,000 rows in a pivot table. The pivot cache duplicates your data in memory, so a 400 MB file becomes 1.5 GB of RAM.
- File size, not row count. A .xlsx above roughly 100 MB gets slow to save, slow to open and prone to corruption on network drives. Formatting, merged cells and conditional formatting rules inflate this far faster than data does.
- 32-bit Excel. Still common in corporate installs, and capped at about 2 GB of addressable memory regardless of how much RAM the machine has. If you are hitting walls at surprisingly small sizes, check File, Account, About Excel for "32-bit".
Knowing which of these you hit changes the answer. If your file is 200,000 rows and slow, the problem is formula design and a different tool will not save you.
The fix that keeps you in Excel
Power Query and Power Pivot ship inside Excel and are the single most under-used answer to this question. Power Query connects to a CSV, folder of CSVs, database or API, transforms the data in a step-by-step editor and loads the result. Critically, you can choose "Only Create Connection" plus "Add this data to the Data Model" and never place a single row on a worksheet.
The data model uses the VertiPaq columnar engine, the same one behind Power BI. It compresses columns aggressively, especially low-cardinality ones like country or product category. In practice, 20 to 50 million rows in the data model is routine on a 16 GB machine, with a 10x to 100x compression ratio on typical transactional data. You then build pivot tables against the model and write measures in DAX.
Two rules make this work: import only the columns you need (a wide table with 80 columns you never use will not compress its way out of trouble), and use 64-bit Excel.
The tools, compared
| Tool | Practical ceiling | Interface | You need to know | Cost |
|---|---|---|---|---|
| Excel + Power Pivot | 20 to 50M rows in the model | Pivot tables | Power Query UI, some DAX | Included with Office |
| DuckDB | 100M+ rows on a laptop | SQL, CLI or notebook | SQL | Free, open source |
| Polars | 100M+ rows, larger with streaming | Python or R | Python basics | Free, open source |
| pandas | 5 to 10M rows comfortably | Python | Python basics | Free, open source |
| Google Sheets + Connected Sheets | Billions, via BigQuery | Spreadsheet grid | Nothing beyond Sheets | Workspace plan + BigQuery usage |
| Gigasheet | Billions of rows | Browser spreadsheet | Nothing | Free tier, paid above |
| Row Zero | Billions of rows | Browser spreadsheet | Spreadsheet formulas | Free tier, paid above |
| PostgreSQL | 100M+ rows, concurrent users | SQL | SQL, some admin | Free, hosting varies |
| ClickHouse | Billions, sub-second aggregates | SQL | SQL, schema design | Free, cloud paid |
Worked example: a 12 GB CSV of order lines
Say you have three years of order lines, 68 million rows, exported as a 12 GB CSV. Excel will not open it at all. Here is what each realistic path looks like.
DuckDB. Install it, open the CLI in the folder and run:
SELECT region, date_trunc('month', order_date) AS month,
SUM(line_total) AS revenue
FROM 'orders.csv'
GROUP BY 1, 2
ORDER BY 2;
No import step. DuckDB reads the CSV in place, infers types and returns a monthly revenue table in a few seconds on a modern laptop. Convert once to Parquet (COPY (SELECT * FROM 'orders.csv') TO 'orders.parquet' (FORMAT PARQUET)) and the file drops to roughly 1 to 2 GB and every subsequent query gets faster. You can then export the small aggregated result back to CSV and open that in Excel, which is usually what you wanted anyway.
Polars. pl.scan_csv("orders.csv") builds a lazy plan, and only the columns and rows your query touches get read. The same monthly aggregation is a few lines of Python and runs in a similar time to DuckDB. Choose Polars over DuckDB if the work involves reshaping and feature engineering rather than aggregation, or if the output feeds a model.
Power Query. Point it at the CSV, remove the columns you do not need, group by region and month, load to the data model. Slower to run than DuckDB, but the output lands in a pivot table you can hand to someone who has never seen SQL.
Gigasheet or Row Zero. Upload and browse. Useful when the task is genuinely exploratory ("what does this data even contain") or when the person doing the work will not touch a terminal.
When the simple answer breaks
The data is not one file. Most real large-dataset problems are actually many-files problems: a folder of daily exports with slightly inconsistent headers. DuckDB globs (FROM 'exports/*.csv') and Power Query's "From Folder" both handle this, but only DuckDB tolerates schema drift gracefully with union_by_name=true.
You need it refreshed, not just once. A one-off analysis and a report that must be right every Monday are different problems. Local files and laptop tools solve the first badly for the second. That is the point where a database plus a scheduled load earns its cost.
Several people need the same numbers. The moment two people have their own copy of the extract, you have two versions of the truth. A shared database with a single query is not just faster, it is the only way the numbers agree.
It is not really a size problem, it is a joins problem. If your bottleneck is VLOOKUP across three sheets, a columnar engine helps but a relational one helps more. Model the data properly: fact table, dimension tables, keys.
The row count is fine but the cells are text. Free-text fields, JSON blobs in a column, inconsistent date formats. These break every tool. Clean the types first, in Power Query or with an explicit schema in DuckDB, before blaming performance.
Choosing quickly
- Under 1M rows and slow: fix formulas, kill volatile functions, use tables and structured references. Stay in Excel.
- Under 50M rows, needs to stay a pivot table: Power Query plus the data model.
- One big file, one analyst, SQL is fine: DuckDB.
- One big file, Python shop: Polars.
- Non-technical user, huge file, one-off: Gigasheet or Row Zero.
- Recurring report, multiple people, growing data: PostgreSQL or a warehouse, then connect Excel or Sheets to it.
When the data is not in a file at all
Large-dataset tooling assumes the hard part is volume. Often the hard part is that the answer needs two sources that were never in the same place: the order lines in your warehouse, and the reason a customer churned, which is sitting in a Zendesk ticket or a Slack thread. BI tools connect to databases and modelled sources, so evidence that exists as a sentence in an email is outside what they can see, no matter how many rows they handle.
That is a different tool category. Skopx connects to nearly 1,000 SaaS tools alongside PostgreSQL, MySQL, MongoDB, Snowflake and ClickHouse, so you can ask a question in chat and get an answer that draws on both the numbers and the conversations, with citations back to the source. If the answer is something you need to look at repeatedly, you can describe it in a sentence and get a read-only console for it: see Internal Apps.
Skopx Team
The Skopx engineering and product team