Load two CSV exports and join them on a shared ID column to compare records.
This tool runs entirely as JavaScript in your browser. the CSV file(s) you load, and the SQL queries you write against them, is never transmitted over the network to this site's server or any third party, and is never written to a cookie, to browser storage, or to any log — there is nothing on our end to breach, subpoena, or accidentally leak, because it was never received in the first place. Closing or refreshing this tab clears it completely.
This describes only what this specific tool does with what you type into it. It doesn't cover the rest of this site — see the Privacy Policy for how analytics and advertising cookies are handled elsewhere.
Load one or more CSV, TSV, or other delimited text files and query them with real SQL — SELECT, WHERE, JOIN, GROUP BY, ORDER BY, and aggregate functions like SUM and COUNT — the same SQL you'd use against a real database, running entirely inside your browser tab. Each file you load becomes its own table (named after the file), so loading two files lets you JOIN them directly, like matching an orders file against a customers file on a shared ID column.
The delimiter doesn't need to be specified — comma, tab, semicolon, and pipe are all detected automatically per file, so a TSV export from one tool and a semicolon-delimited export from another (common outside English-speaking locales, where a comma is often the decimal separator instead) can both be loaded and queried the same way, mixed together in the same session if needed. The detected delimiter for each file is shown next to its table name once loaded, so it's never a guess.
This is built for anyone who needs to ask a real question of a CSV that's awkward to answer by scrolling through it or fighting with spreadsheet formulas — analysts doing a quick data check, students learning SQL against real files instead of a toy classroom database, or anyone who just needs to filter, join, or total up a CSV export without opening a heavier tool. If you already know SQL, this is often faster than importing a file into a spreadsheet and building formulas to do the same thing.
Nothing here touches a server. The moment you choose a file, it's read and parsed directly in your browser and loaded into an in-memory SQLite database that also runs entirely in your browser — via SQLite compiled to WebAssembly, the same engine format used by real embedded databases, just running locally on your device instead of a server. Your file is never uploaded anywhere, which is a stronger privacy position than most tools can honestly claim, since there's no server round-trip to even worry about — refreshing or closing the tab clears everything completely, with nothing saved between visits.
No — it never leaves your browser. The CSV is parsed and loaded into an in-browser database running via WebAssembly, entirely on your device. There’s no server this tool talks to at all.
It’s best for files under about 50MB total across everything you load. Larger files can still work, but since parsing and querying both happen in your browser’s own memory rather than on a server, very large files may run slowly or strain your browser depending on your device.
Yes — load two or more CSVs and each becomes its own table, named after the file. Write a normal SQL JOIN between them, the same as you would with real database tables.
It’s real SQL, specifically SQLite’s dialect — SELECT, WHERE, JOIN, GROUP BY, HAVING, ORDER BY, subqueries, and SQLite’s built-in functions all work as expected.
Yes — comma, tab, semicolon, and pipe-delimited files are all detected automatically, no need to tell it which one a file uses. You can load a .csv and a .tsv in the same session and query across both.
No, by design — nothing persists between visits. Refreshing or closing the tab clears everything, including any files you’ve loaded and whatever query you’ve typed. Copy anything you want to keep before you navigate away.
Yes — numeric-looking values are stored as actual numbers and text stays as text, so sorting and comparisons on number columns behave correctly rather than sorting them alphabetically as if they were text.