Open a large CSV

How to open a large CSV file (over 1 million rows)

Drop a CSV of up to 1.5 GB into rows.page and it opens in your browser with no row limit, well past Excel's 1,048,576 rows. It's free with no signup, the file stays on your machine unless you click Share, and you can filter, run SQL or export a smaller slice.

.csv.tsv
Drop a file here
Stays in your browserUp to 1.5 GB

No file handy? Open CO2 emissions by country and year (50k rows, 14 MB).

Why Excel and Google Sheets can't open big CSV files

An Excel worksheet holds 1,048,576 rows by 16,384 columns, and LibreOffice Calc has the same row limit. When a CSV has more rows, Excel loads what fits and warns: "This data set is too large for the Excel grid. If you save this workbook, you'll lose data that wasn't loaded." Don't save over the original file, or the missing rows are gone.

Google Sheets stops at 20 million cells or 100 MB per spreadsheet. A CSV with 20 columns reaches 20 million cells at 1,000,000 rows, often before it hits the file size limit.

Large CSV tools and their limits
ToolRow limitPractical file sizeCost
rows.pageNo row limit in the grid; SQL results up to 1,000,000 rows1.5 GB per browser tab; bigger CSVs load the first rowsFree, no signup
Excel worksheet1,048,576 rows by 16,384 columnsWhatever fits the grid; the rest isn't loaded$179.99 one-time or Microsoft 365
Excel Data Model1,999,999,997 rows per tableRows stay out of the grid; you use them in PivotTablesIncluded with Excel for Windows
Google Sheets20 million cells per spreadsheet100 MB per spreadsheetFree
LibreOffice Calc1,048,576 rows by 16,384 columnsWhatever fits the gridFree
DuckDB CLINo row limitAny size, read from diskFree
EmEditor 64-bit1,099 billion linesUp to 16 TB$60 per year

How to open a large CSV in your browser with rows.page

rows.page reads the file with DuckDB-WASM inside your browser tab, so nothing is uploaded and you don't need an account.

  1. Open https://rows.page and drop your .csv, .tsv or .txt file on the page, or choose it from your disk.
  2. Scroll the grid. There is no row limit; rows load in pages of 100 as you scroll.
  3. Open the Columns panel to see each column's type, distinct count, share of empty values, min and max, and a histogram or its top 10 values.
  4. Filter in the search box, for example country:NL, price:>20 or -email:* for rows with no email. For anything more, type SQL that starts with SELECT, WITH or FROM and query the table data, such as SELECT country, count(*) FROM data GROUP BY country.
  5. Open the Export menu and choose CSV. A filtered view exports every matching row; a SQL result exports up to 1,000,000 rows.

A browser tab holds up to 1.5 GB of CSV or TSV. If your file is bigger, rows.page loads the first part and shows "Loaded the first N rows: the file is X, more than the browser can hold." To work with every row of such a file, use DuckDB on your computer.

How to open a CSV over 1.5 GB with DuckDB

The DuckDB command-line tool reads CSV files of any size straight from disk. Start with an exact row count:

bash
duckdb -c "SELECT count(*) FROM 'big.csv'"

To explore the whole file in rows.page afterwards, convert it to Parquet once. Parquet is compressed and typed, and rows.page doesn't hold Parquet files to the 1.5 GB check.

bash
duckdb -c "COPY (SELECT * FROM 'big.csv') TO 'big.parquet' (FORMAT parquet, COMPRESSION zstd)"

If you only need to read or search the raw text, EmEditor 64-bit opens files up to 16 TB and costs $60 per year.

How to load more than 1,048,576 rows into Excel

If you have to stay in Excel for Windows, load the CSV into the Data Model with Power Query. The rows don't appear in the worksheet grid, but PivotTables can use all of them.

  1. In a blank workbook, go to Data > Get Data > From File > From Text/CSV and pick the file.
  2. In the preview window, click the arrow next to Load and choose Load To.
  3. Select Only Create Connection, tick Add this data to the Data Model, and click OK.

Microsoft's own advice for files that overflow the grid is the same import with Load To > PivotTable Report, which summarizes the full data set in a PivotTable.

How to split a large CSV into Excel-sized files

To hand the data to someone who works in a spreadsheet, export it in pieces under 1,048,576 rows. In rows.page, filter one category at a time, such as country:NL, and export each view. Or run this SQL and raise OFFSET by 1,000,000 for every next part:

sql
SELECT * FROM data ORDER BY __rid LIMIT 1000000 OFFSET 0

__rid is a hidden row number, so ORDER BY __rid keeps the original file order. It isn't included in the exported file.

rows.page limits and prices

WhatLimit or price
Open a file in your browserFiles up to 1.5 GB, $0, no account, nothing uploaded
Share a link without an account$0, files up to 100 MB, link deleted 7 days after creation
Free account$0, 10 datasets kept, last 3 versions
Pro$12/month, 100 datasets, files up to 500 MB, private links
Max$39/month, 1,000 datasets, files up to 2 GB, private links

Questions

Why does Excel stop at 1,048,576 rows when I open a CSV?

An Excel worksheet holds 1,048,576 rows by 16,384 columns, so Excel loads what fits and warns "This data set is too large for the Excel grid." Don't save over the original; load the file into the Data Model or open it in rows.page instead.

Does rows.page upload my CSV file?

No. DuckDB-WASM reads the file inside your browser tab, and nothing leaves your computer unless you click Share or push it with curl -T data.csv https://rows.page.

What happens if my CSV is bigger than 1.5 GB?

rows.page loads the first part of the file and shows "Loaded the first N rows: the file is X, more than the browser can hold." For every row, query the file with the DuckDB CLI or convert it to Parquet, which isn't held to the 1.5 GB check.

Can rows.page open a large Excel .xlsx file?

No. rows.page opens CSV, TSV, JSON, JSONL and Parquet, so save the sheet as CSV first; a pushed .xlsx gets "This looks like an Excel or zip file. Export it as CSV and push again."

Can I open a large CSV straight from a URL?

Yes, put the link after https://rows.page/, for example https://rows.page/https://example.com/data.csv. Your browser fetches the file directly, or through the rows.page proxy (up to 100 MB) when the host blocks cross-origin requests, and the 1.5 GB tab limit still applies.