The file that broke Excel
Open a large CSV, JSON or Parquet file and query it with SQL
Drop a multi-gigabyte CSV, JSON, Parquet or log file and query it with SQL. No upload, no row limit, no account — DuckDB runs inside this tab and reads the file straight off your disk.
Free forever · nothing is stored · works offline once loaded
How to open a large CSV file and query it
About two minutes, most of which is you writing the query. There is no sign-up step because there is no account, and no upload step because nothing is uploaded.
Drop the file onto this page
Drag the CSV, JSON, NDJSON, Parquet or log file into the drop zone, or click Choose files. Nothing is uploaded — the browser hands the file to DuckDB, which reads it from your disk. A multi-gigabyte file registers in under a second because it is not copied anywhere.
Check the columns it found
The file appears in the sidebar with its detected format and column list. Formats are detected by reading the first 16 KB, not by trusting the extension, so a .txt holding tab-separated data still opens correctly. Click Profile columns to see null counts, distinct counts and which columns are safe to join on.
Write a SQL query
The file is a table named after the filename. Start with SELECT * FROM your_table LIMIT 100, then filter and aggregate normally — DuckDB speaks standard SQL, including window functions, CTEs and joins across two files at once. Press Ctrl+Enter to run.
Export the result
Export CSV writes the whole result, not the 1,000 rows on screen. In Chrome and Edge it streams straight to disk, so the export is not bounded by memory. Share query copies a link containing the SQL and the column names — never any data — so a colleague can run the same question on their own copy of the file.
Why it does not fall over
Most browser-based data tools die on real files, and they all die the same four ways. Here is what this one does instead.
The file is streamed, not copied
The obvious way to hand a file to DuckDB-WASM reads the whole thing into memory first, which puts the real ceiling somewhere under 1.5 GB. Query Studio registers the browser's file handle instead, so DuckDB issues range reads and streams the scan. Memory tracks what your query is doing, not how big the file is.
The size check happens before the read
If a file is genuinely too big for a browser tab, you are told immediately and pointed at the desktop app. You do not find out three minutes into a load, by way of a crashed tab — which is how every tool that skips this check behaves.
Results are windowed
Only the rows in view are in the DOM. Scrolling a hundred-thousand-row result costs what scrolling thirty rows costs, so the page stays responsive on a laptop and on a phone.
The format is sniffed, not assumed
Exports lie about themselves constantly — a .txt that is really TSV, a .json that is really NDJSON, a .csv that is semicolon-separated because it came out of a European Excel. Query Studio reads the first 16 KB and works out what the file actually is.
Which file formats it opens
Detected by reading the file, not by trusting its extension.
- CSV and TSV.csv .tsv .tab .txt
- Any delimiter, detected by reading the file rather than trusting the extension. Quoted fields, embedded commas, doubled quotes and ragged rows are all handled, and a malformed line is skipped instead of killing the load. This is the format most people arrive with after Excel refuses to open it.
- JSON.json
- Whole-document arrays of objects. Nested objects and arrays stay queryable — DuckDB can reach into them with dot and bracket syntax rather than making you flatten the file first.
- NDJSON and JSONL.ndjson .jsonl
- One JSON object per line, which is what most export pipelines and log shippers emit. Streamed line by line, so a 20 GB export never has to be valid as a single document.
- Parquet.parquet .pq
- Columnar, so a filter or an aggregate only reads the columns you name — a query over three columns of a 200-column file touches a fraction of the bytes. Opening one usually means installing Python and pandas; here it is a drag and drop.
- Arrow and Feather.arrow .feather
- Read directly, with no conversion step, because DuckDB already speaks Arrow internally.
- Log files.log .out
- One line per row, as a single text column. That is enough to grep an nginx, application or syslog file with WHERE and GROUP BY — count status codes, find the slowest endpoints, or pull out every line matching a pattern, without a regex pipeline.
How big is too big
Different runtimes genuinely have different limits, and you are told which one you are on before you drop a file rather than after it fails.
| Where | Engine | Ceiling |
|---|---|---|
| This page | DuckDB-WASM | ~3.5 GB, streamed |
| Desktop app | Native DuckDB | No limit — bounded by disk |
| Android app / phone browser | DuckDB-WASM | ~900 MB |
The mobile figure is deliberately conservative: phone browsers get killed by the OS long before WebAssembly’s own limit, and a tool that accepts a file and then vanishes is worse than one that says no. Get the apps →
Against Excel, CSV viewers and pandas
The other ways to do this job and where each one stops. Checked in August 2026. Two of these are better than this tool for things it does not attempt, which is said plainly below rather than left out.
Excel and Google Sheets
Where most people start, and where most people hit the wall that brought them here.
- Where it stops
- Excel stops at 1,048,576 rows and slows down badly well before that. Google Sheets stops at 10 million cells, which a wide table reaches in a few hundred thousand rows.
- What the workbench does
- No row limit in the tool itself — the limit is your machine, and on the desktop app it is your disk. A 40-million-row CSV opens the same way a 40-row one does.
- Where they’re better
- For editing cells, writing formulas and making a chart for a report, a spreadsheet is the right tool and this is not a spreadsheet.
Online CSV viewers
The large-CSV-viewer sites that fill the first page of search results.
- Where it stops
- Almost all of them are viewers: scroll, search, maybe sort. You cannot join two files, group, aggregate, or compute anything. Several upload your file to a server despite what the landing page implies.
- What the workbench does
- A real query engine. GROUP BY, JOIN across several files, window functions, CTEs — DuckDB's full SQL dialect, running locally with nothing uploaded.
- Where they’re better
- If you only want to eyeball a file and never write SQL, a viewer is less to learn. This page asks you to know some SQL.
pandas or DuckDB in a notebook
What most data people reach for, and the closest thing to a fair comparison.
- Where it stops
- It needs Python installed, an environment that works, and a notebook running. That is a five-minute detour when you are on someone else's laptop, and pandas in particular will happily exhaust memory on a file DuckDB would stream.
- What the workbench does
- A browser tab. Drop the file, write the query. It is the same DuckDB engine underneath, so the SQL you write here is the SQL you would write there.
- Where they’re better
- For anything beyond a query — plotting, modelling, a repeatable pipeline, anything needing a library — a notebook is the serious environment and a web page is not a substitute.
An AI chatbot
Increasingly the first thing people try, and worth addressing directly.
- Where it stops
- It cannot open your file. Upload limits are small, uploading defeats the point if the data is sensitive, and a model asked to summarise a large file will confidently describe rows it never saw.
- What the workbench does
- A deterministic engine reading the actual bytes on your machine. The number it returns is the number in your file, every time.
- Where they’re better
- A model is much better at writing the SQL than at running it. Paste your schema into one, then run its query here.
Frequently asked questions
How do I open a CSV file that is too big for Excel?
Drop it on this page. Excel stops at 1,048,576 rows; the workbench has no row limit — it streams the file through DuckDB in your browser and shows you the first 1,000 rows of any query instantly. For files past roughly 3.5 GB, the free desktop app reads them natively with no ceiling at all.
Is my file uploaded anywhere?
No. The file is read by your own browser using DuckDB compiled to WebAssembly. Nothing is sent to a server, there is no account, and the page keeps working if you disconnect from the internet after it loads. That is a property of how it is built, not a promise in a privacy policy.
What is the largest file I can open?
In a browser tab, roughly 3.5 GB — WebAssembly has a 4 GB address space and DuckDB needs headroom inside it. On a phone, around 900 MB, because mobile browsers get killed by the OS well before the WASM limit. The desktop app has no limit: DuckDB reads the file from disk and spills to disk, so the only bound is your storage.
Which file formats can I query?
CSV, TSV and other delimited text, JSON, NDJSON/JSONL, Parquet, Arrow/Feather, and plain log files. The format is detected by reading the first 16 KB rather than trusting the extension, so a .txt that is really a TSV opens correctly.
Can I join two files together?
Yes. Drop both, and each becomes a table named after its filename. Then write a normal JOIN. This is the main thing the workbench does that a CSV viewer cannot.
Can I query Parquet files without Python?
Yes. Drop a .parquet file and query it with SQL. Parquet is columnar, so a query that names three columns only reads those three — which is why aggregates over a large Parquet finish far faster than the same query over an equivalent CSV.
What SQL dialect does it use?
DuckDB's, which is PostgreSQL-compatible and adds some genuinely useful extras — SELECT * EXCLUDE (col), GROUP BY ALL, QUALIFY, and SUMMARIZE. If you know Postgres, you already know it.
What does 'Profile columns' do?
It runs one pass over the table and reports, per column, how many values are null, roughly how many are distinct, and the min/max/quartiles for numeric columns. Columns then get badges — unique, constant, groupable, sparse — which answer the question you actually have about an unfamiliar export: which columns are empty, which are secretly all one value, and whether this id is safe to join on.
How does the share link work, and does it contain my data?
It contains your SQL and the table and column names it references. It contains no rows, no cell values, and no sample — the payload is structurally incapable of holding data. It travels in the part of the URL after the # symbol, which browsers never send to a server, so the query goes from your machine to the recipient's and nowhere else.
Can I export more rows than the 1,000 shown?
Yes. The grid shows 1,000 rows so the page stays responsive, but Export CSV writes the entire result. In Chrome and Edge it streams straight to disk, so the export is not bounded by memory at all. In the desktop app, DuckDB writes the file itself and the rows never pass through the interface.
Is there a desktop or mobile app?
Yes, all free and with no account. There are downloads for Windows, macOS, Linux and Android on the Apps page. The three desktop builds run native DuckDB rather than the WebAssembly build, so they have no file size limit at all and are considerably faster on a large scan. The Android app is the same WebAssembly engine as this page, wrapped natively, so it keeps the same roughly 900 MB ceiling.
Is there an iPhone or iPad app?
Not yet, and it needs an Apple developer account to happen. In the meantime this page works in Safari on iPhone and iPad — and from the share menu you can Add to Home Screen, which gives you an icon that opens straight into the workbench. It is the same engine either way; the only thing an App Store build would add is the icon.
Which downloads have actually been tested?
Only the Windows one. The macOS, Linux and Android builds were cross-compiled from a Windows machine and have been checked structurally, but never launched on the hardware they are for, so they may be broken in ways that only show up on a real device. The Apps page marks each one and links to GitHub issues — if a build fails for you, reporting it is genuinely the fastest way to get it fixed.
Why does my browser warn me about the download?
None of the builds are code-signed yet, because a certificate costs money per year and this tool makes none. Windows SmartScreen shows a warning you get past with More info, then Run anyway; macOS needs a right-click and Open the first time; Android asks permission to install from an unknown source once. Every download on the Apps page publishes its SHA-256 so you can check the file is the one that was built.
How do I open a CSV file with more than 1 million rows?
Drop it on this page. Excel's grid stops at 1,048,576 rows and Google Sheets stops at 10 million cells, but there is no row limit here at all — the file is streamed through DuckDB in your browser and any query returns its first 1,000 rows immediately. A 40-million-row CSV opens the same way a 40-row one does.
What can open a 10 GB CSV file?
In a browser tab, this page will, up to roughly 3.5 GB. Past that you want the free desktop app, which runs native DuckDB and reads the file from disk with no ceiling at all — a 60 GB file opens the way a 60 KB one does. The usual alternatives are a database import, or Python with pandas or Polars, both of which take considerably longer to set up than dragging the file here.
Can I open a large CSV without Excel?
Yes, and for a file this size you should. Excel loads the whole sheet into memory and refuses anything past its row limit; this reads the file where it sits and only materialises the rows your query returns. You also get SQL instead of formulas, which for filtering, grouping and joining is both faster to write and easier to check.
How do I open a Parquet file without Python?
Drag it onto this page. Normally reading Parquet means installing Python plus pandas or pyarrow; here DuckDB reads it directly in the browser. Because Parquet is columnar, a query that names three columns only reads those three, so an aggregate over a large file is often faster than the equivalent CSV scan.
Is it safe to open a confidential file here?
The file never leaves your device. There is no upload, no server-side processing and no account — DuckDB is compiled to WebAssembly and runs inside your own tab, reading the file through the browser's file API. You can verify it: open your browser's network tab and query a file, and you will see no request carrying your data. Once the page has loaded it works with the network disconnected.
Does this cost anything?
No. It is free, unlimited, has no account, no trial, and no paid tier. There is nothing to upgrade to, because the whole thing runs on your own machine and costs nothing to serve.
More free tools
Git Rescue
Git cheat sheet & fix-it playbook
Table Grabber
Convert any table to CSV, Excel, Markdown, JSON, SQL and more
Storage Inspector
Chrome Web Store extension — see every byte a site stores