Open the workbench

drop a file · write SQL · get the answer

Excel opens your file. QueryDesk answers it.

Drop a CSV, JSON or Parquet file onto the page and ask it questions in SQL — with the column types shown before you trust them, and a grid you can actually read. No install, no connection string, no account for the data. $49 once, yours for life.

We never see your data. The engine runs in your tab and the workbench is served a policy that forbids it from reaching any server. That is checkable in devtools in about ten seconds, which is why it is the first thing we say.

One file is free forever — that is a free tier, not a trial, and nothing expires. Or rent the full thing for $13 a week.

🚫

“Excel says the file is too big”

It stops at 1,048,576 rows and the export was four million. Open the same file here and ask it a question instead of scrolling it.

🔗

“I need to join two exports, once, today”

Billing exported a CSV, the CRM exported a Parquet, and standing up a Postgres for a Tuesday afternoon is not a plan. Open both, write the join, get the answer.

🔒

“This is customer data”

So it is not going into a website to get a pivot table. Here it never leaves the tab — and that is a header the browser enforces on us, not a policy we ask you to trust.

⌨️

“I know SQL, I just don't want a toolchain”

No install, no Docker, no connection string. Drop the file, press ⌘↵.

Don't take our word for it

real engine, real SQL — edit the query ↓

querydesk.co · live demo, 400 invented rows

The engine is ~34MB of WebAssembly and it loads once. That is the price of running a real database in a tab instead of on somebody else's server, and it is a trade we think is worth stating rather than hiding behind a spinner.

What it opens

CSV

Delimiter, header row, quote character and NULL literals are all yours to correct before anything runs.

TSV

Tab-separated; same options as CSV.

JSON

An array of objects, or a single object.

NDJSON

One JSON object per line — what most log and export pipelines emit.

Parquet

Columnar and lazy: much the fastest way to work past a few million rows here.

Excel (.xlsx)not yet

Not in this build. Reading it needs either a DuckDB extension downloaded at runtime — which the workbench is deliberately unable to do — or a bundled parser we are still choosing, because the popular one on npm sits on an unpatched advisory. Export the sheet as CSV and it opens instantly.

What it does not do

Some of these are scope. Two of them are structural, and those are the interesting ones.

It will not connect to your database

A browser tab cannot open a TCP connection to Postgres. Doing it means a proxy, and a proxy means your credentials and your rows passing through a server we run. Structural, not a scope cut.

It is not unlimited

The engine works inside a browser's memory ceiling and cannot spill to disk. Far past Excel's row limit, not past every limit — and when it stops, it tells you what ran out and what to try.

No text-to-SQL and no AI

Both mean an outbound request from a page holding your data, which would break the one guarantee that makes this worth buying.

No dashboards, no hosted sharing, no scheduling

This is a workbench, not BI. Every one of those wants a server eventually. To hand a colleague an answer you export the result and send the file; to hand them the work, you export a .querydesk query pack — your queries, never your rows.

No Excel files in this build

Reading .xlsx needs an extension downloaded at runtime — which we deliberately cannot do — or a bundled parser we are still choosing, because the popular one on npm sits on an unpatched advisory. Export as CSV in the meantime.

No desktop app

There is no download and none is included in the price. When one exists it will earn its own price story, because it can do the thing a browser cannot: talk to a real database.

No .db / SQLite files yet

Genuinely wanted, genuinely local, and it needs a bundled reader rather than DuckDB's network-loaded scanner. Next, not now.

This is not an audit tool

No claim about governance, lineage or regulatory fitness. It is a place to answer a question about a file.

how it actually works

The privacy claim is a header, not a paragraph

Queries run on DuckDB compiled to WebAssembly, in a Web Worker, in your tab. The workbench is served Content-Security-Policy: connect-src 'self', so the browser itself refuses to let that page open an HTTP request, a WebSocket or a beacon to any origin but this one — not to us, not to an analytics vendor, not to a CDN. It is not a promise we keep; it is a rule enforced on us.

That has a consequence worth stating: the engine itself is served from this site rather than from jsDelivr, which is what DuckDB-WASM normally does. And DuckDB's INSTALL / LOAD cannot work here, so QueryDesk refuses those statements with an explanation instead of letting them fail as a mystery.

Powered by DuckDB (MIT). We are not affiliated with, or endorsed by, DuckDB Labs.

no subscription required

Free, permanently

$0

  • Open a file and read it
  • Write and run SQL
  • See and correct the column types
  • Copy rows to the clipboard

One file at a time. Nothing expires, nothing counts down, and no card is asked for.

Everything

$49once, forever

  • Open several files at once and join them
  • Saved workspaces
  • Query history
  • Export results (CSV, JSON)
Get QueryDesk

Or rent it for $13 a week — deliberately worse value than owning it, and a fair deal if you have one messy dataset and a one-week engagement. Five paid weeks unlock the lifetime licence at half price ($24.50). Nothing auto-converts.

Part of LifeTime Apps — small apps you buy once and own forever. One payment against a category that has been quietly drifting to annual licensing.

Questions worth asking

How big a file can it actually handle?
Bigger than Excel by a long way, and not infinite — anyone who tells you otherwise has not measured it. The engine runs inside a browser tab, in a 32-bit address space, and unlike the desktop version of DuckDB it cannot spill to disk. So there is a real ceiling, it depends on your machine and your columns, and when you reach it QueryDesk says what ran out and what to do about it — select fewer columns, filter on the way in, or convert to Parquet, which is columnar and reads far less of itself to answer the same question. We will publish a measured number on a stated machine before launch rather than guess one now.
Where does my data go?
Nowhere. The engine is WebAssembly running in a worker in your tab, and the workbench is served with a Content-Security-Policy of connect-src 'self' — the browser refuses to let that page open a connection to anywhere but this site. Open devtools, run a real query, and watch the network tab stay empty. The one page that can reach a server is the sign-in screen at /account, which only ever asks whether you own a licence; no file is opened on it.
Do you keep a copy of my file?
No, and there is nowhere in the storage schema to put one. Files are handed to the engine as handles and read straight off your disk — the bytes are never copied into our storage and never sent anywhere, because the workbench is served a policy that forbids it from reaching a server at all. The engine reads only what it needs to answer the query in front of it, and nothing about your file is written anywhere off your machine.
Can it connect to my Postgres?
No, and it structurally cannot: a browser tab has no way to open a raw TCP connection to a database. Doing it would mean routing your credentials and your rows through a proxy we run, which is exactly the thing this product exists not to do. That is also the honest reason a desktop version would eventually be worth building — it is the one thing a browser cannot answer.
Is there AI in it?
No — text-to-SQL would mean an outbound request from a page holding your data, which would break the enforcement above. If it ever ships it will be with your own API key, off by default, and with a plain statement of exactly what leaves.
What is free and what do I pay for?
One file, queried, read and copied to the clipboard, is free forever — not a trial, and nothing expires. The paid version opens several files at once and joins them, saves your workspace so the queries come back tomorrow, keeps a history of what you ran, and exports a result as CSV or JSON. Joining an export from one system to an export from another is the job most people are actually stuck on, and it is the honest thing to charge for.
Does it remember my queries between visits?
Yes — that is the paid part, and the thing it remembers is your queries, never your data. A saved workspace keeps the SQL you wrote and the column corrections you made; it never keeps a copy of the file, so reopening it asks you to pick the file again (on Firefox and Safari, which do not yet let a page hold on to a file handle). You can also export a workspace as a small .querydesk file and hand a colleague a query pack — queries and settings only, without a single customer row going with it. That export is free even on the free tier, because a tool that traps your queries is not one we would ship.
Is this a DuckDB product?
No. QueryDesk is built on DuckDB, which is MIT-licensed and excellent, and we ship it with the app rather than downloading it. We are not affiliated with DuckDB Labs and are not endorsed by them. DuckDB's own CLI is free and, if you are happy in a terminal, genuinely good — we are not trying to beat it at SQL. We are the part nobody open-sourced well: opening a file without a toolchain, seeing the inferred types before you trust them, a grid you can read, and one payment.