Query one or two local CSV files with self-hosted DuckDB WebAssembly. Join tables, group rows and download a bounded result without uploading.
Your input
Outputs are cleared when the input changes.
Result
Enter your data or use the example, then run the tool.
Worked example
The sample groups North 10 + 15 into 25 and South 20 into 20. For two files, join t1 and t2 on a shared identifier.
Use the sample button to load the stated inputs, then change one option to compare results.
Method
The pinned published DuckDB-Wasm binding loads three fixed local WASM parts inside one dedicated Worker. It registers local file buffers, imports CSV headers with automatic type detection, disables external access and automatic extension loading, and runs a single bounded SELECT. Integer and decimal values retain exact text representations; dates use ISO format and timestamps are displayed as UTC. Complex result types must be cast to VARCHAR.
The fixed-source README and complete third-party license notices are available through the source and notices links.
Limits
First run downloads about 43 MB of local engine assets and may need several hundred MB of browser memory; the SQL memory setting is 128 MB, not a total browser heap cap. Single-threaded; no cross-origin isolation required. A 20-second deadline or cancel terminates the Worker. SELECT only; no remote URLs, extensions, SQL comments, persistent database, or arbitrary filesystem. Preview 500 / retained 1,000 rows, 100 columns, 10,000 characters per cell. The downloaded CSV is the retained result, not an unlimited database export.
Inputs stay in this browser; the tool does not upload data. Engine assets are downloaded from this site only when needed.
Your inputs stay on this device. Only optional, consented page visits are measured. Input values, files, filenames and processing logs are not sent to Analytics.
When switching languages, text, settings and selected files are temporarily kept on this device. Transfers are removed after restoring; interrupted transfers are cleaned up on a later visit. Inputs and files are never uploaded.