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

Ctrl+Enter to run · nothing leaves this tab
File bigger than 3.5 GB? The desktop app runs native DuckDB — no size limit at all, and still no account.Download for Windows96.8 MBmacOS · Linux · Android →

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.

  1. 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.

  2. 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.

  3. 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.

  4. 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.

WhereEngineCeiling
This pageDuckDB-WASM~3.5 GB, streamed
Desktop appNative DuckDBNo limit — bounded by disk
Android app / phone browserDuckDB-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

← Query StudioGet the apps →