About CSV & SQL Data Playground
Drop a CSV, TSV, JSON or Parquet file and query it with real SQL, powered by DuckDB compiled to WebAssembly. Because the file is read directly off your disk in byte ranges rather than uploaded or loaded into memory, it handles files in the hundreds of megabytes — well past Excel's 1,048,576-row limit — and nothing ever leaves your machine.
Spreadsheet software hits a wall long before your data does. Excel stops at 1,048,576 rows, and Google Sheets far sooner — so the moment an export grows past a few hundred thousand records, the usual workflow is to upload it somewhere, wait, and hope the service is trustworthy. This tool removes that step entirely: the file is read straight off your disk and queried in place.
It runs DuckDB, a column-oriented analytical database, compiled to WebAssembly. Crucially the file is never loaded into memory in one piece — the engine reads byte ranges on demand as a query needs them, which is what makes files in the hundreds of megabytes practical inside a browser tab. Your data never touches a network, so there is no upload wait, no size cap imposed by someone else, and nothing to delete afterwards.
SQL earns its place here by recording the method rather than the result. A spreadsheet captures what you got; a query captures how you got it, which means you can read it back in a month, hand it to a colleague as a precise description of the analysis, or change one clause and re-run. When a number is later questioned, the query is the answer to how it was produced — a chain of manual sorts and filters performed weeks ago is not.
Converting a large CSV to Parquet once usually pays for itself immediately. Parquet stores data column by column rather than row by row, so a query touching one column of forty reads only that column instead of the whole file, and its per-column type-aware compression typically shrinks the file five to tenfold. It also stores column statistics per chunk, letting a filtered query skip entire sections without decompressing them.
Common use cases
- Opening a data export that is too large for Excel or Google Sheets
- Joining two exports on a shared key without loading them into a database
- Profiling an unfamiliar dataset before deciding what to do with it
- Filtering a large log or transaction file down to the rows that matter