Download Query Studio for Windows, macOS, Linux and Android
The same workbench as a real application. The desktop builds run native DuckDB, which removes the file size ceiling entirely — a 60 GB Parquet opens the way a 60 KB CSV does.
Version 1.0.0 · free · no account · MIT licensed
Only the Windows build has been tested
The macOS, Linux, Android downloads were built and checked, but never launched on the hardware they are for — they were cross-compiled from a Windows machine. They may be broken in ways that only show up on a real device. They are here because a build you can try is more useful than a page that says “coming soon”.
If one fails, please open an issue on GitHub or get in touch. Tell me the platform and what happened and I will fix it — until someone reports back, I have no way of knowing whether these work. Meanwhile the browser version runs everywhere and is tested.
Windows
No limitNative DuckDBNative DuckDB, no file size limit, fully offline. Nothing is uploaded and there is no account.
sha256 4cc11ef0c574…Unsigned, so SmartScreen warns the first time — choose More info, then Run anyway.
Or build it from source →
git clone https://github.com/eziokittu/query-studio
cd query-studio && npm install && npm run build
npm run dist:win --workspace @query-studio/desktopRequires Node 20 or newer. The build lands in apps/desktop/release.
macOS
No limitNative DuckDBUntestedNative DuckDB for Apple silicon and Intel. Unzip and drag to Applications.
Unsigned and not notarised, so Gatekeeper blocks the first launch. Right-click the app and choose Open, or run: xattr -cr "Query Studio.app"
Or build it from source →
git clone https://github.com/eziokittu/query-studio
cd query-studio && npm install && npm run build
npm run dist:mac --workspace @query-studio/desktopRequires Node 20 or newer — a Mac for a signed build, otherwise cross-built. The build lands in apps/desktop/release.
Linux
No limitNative DuckDBUntestedNative DuckDB. Extract the archive and run the binary — no install step.
No AppImage or .deb yet — extract the archive and run ./query-studio from inside it.
Or build it from source →
git clone https://github.com/eziokittu/query-studio
cd query-studio && npm install && npm run build
npm run dist:linux --workspace @query-studio/desktopRequires Node 20 or newer. The build lands in apps/desktop/release.
Android
~900 MBDuckDB-WASM in the system WebViewUntestedThe same workbench, wrapped natively. A signed APK, installed directly.
Not from the Play Store, so Android asks you to allow installing from this source once. The app declares no internet permission at all, so it cannot send your data anywhere even if it tried.
Or build it from source →
git clone https://github.com/eziokittu/query-studio
cd query-studio && npm install && npm run build
npm run build:android --workspace @query-studio/mobileRequires a JDK 21 and the Android SDK. The build lands in apps/desktop/release.
iOS
~900 MBDuckDB-WASM in WKWebViewThe same workbench, in Safari or added to the Home Screen.
No app yet. An iOS build has to be compiled with Xcode on a Mac and signed with a paid Apple developer account, and there is no way around either. The browser version works in Safari on iPhone and iPad today, and can be added to the Home Screen from the share menu — same engine, same ceiling, no install.
Open it in your browserOr build it from source →
git clone https://github.com/eziokittu/query-studio
cd query-studio && npm install && npm run build
npm run build:ios --workspace @query-studio/mobileRequires Xcode on a Mac, plus an Apple developer account to install on a device. The build lands in apps/desktop/release.
What the desktop build actually changes
It is not the same app in a window. The browser version runs DuckDB compiled to WebAssembly, which lives inside a 4 GB address space it shares with the page. The desktop version runs the real thing in a separate process.
No size ceiling
The window never sees the file's bytes — it sends a path and gets back a schema. Nothing has to fit in memory, so the limit is your disk.
Spills to disk
A 40 GB aggregate finishes on a 16 GB laptop because DuckDB writes intermediate results to a temp directory instead of dying.
Uses every core
Native DuckDB parallelises scans across your CPUs. The WASM build is mostly single-threaded in practice.
Exports at disk speed
COPY … TO writes the file from inside the database. The rows never cross into the interface, so a 200-million-row export costs the UI nothing.
Opens files from Finder or Explorer
Registered as a handler for .csv, .tsv, .parquet and .ndjson, so "Open with" works and double-clicking a file in a folder does the obvious thing.
What these apps do not do
Four things worth being specific about, because “private” on a download page usually means nothing.
No account, ever
There is no sign-in, no licence key and no user record. There is nothing to create an account for, because nothing about the app is server-side.
No telemetry
No analytics, no crash reporting, no update ping. The Electron main process has no network client in it at all.
Works offline
DuckDB and its WebAssembly assets ship inside the app rather than being fetched from a CDN. Install it, unplug the machine, keep working.
Your files stay yours
Files are read from disk by the app itself. Nothing is copied, uploaded, or indexed anywhere, and permission requests from the interface are refused outright.
Installing and troubleshooting
Mostly about operating systems refusing to run an unsigned download, which all three of them do, in three different ways.
Which download do I want?
On Windows, the installer unless you cannot install software on the machine — then take the portable build, which runs from anywhere including a USB stick. On a Mac made from late 2020 onwards, Apple silicon; older Macs, Intel. On Linux, x86-64 unless you are on a Raspberry Pi or an ARM server. On Android, the single APK covers every device.
Why does Windows say the app is not commonly downloaded?
Because it is not signed with a code-signing certificate, which costs a few hundred a year for a tool that makes nothing. SmartScreen shows the warning on any unsigned installer regardless of what is in it. Click More info, then Run anyway. If you would rather verify first, every download here publishes its SHA-256 — compare it with certutil -hashfile <file> SHA256.
macOS says the app is damaged or cannot be opened. Is it?
Almost certainly not. macOS quarantines anything downloaded from the internet that is not notarised, and reports it with that wording. Right-click the app in Finder and choose Open, which gives you an Open button the plain double-click does not, or run xattr -cr on the app once. Notarising requires a paid Apple developer account.
How do I run the Linux build?
Extract the archive and run the binary inside it: tar -xzf QueryStudio-1.0.0-x64.tar.gz then ./QueryStudio-1.0.0-x64/query-studio. There is no install step and nothing is written outside that directory. An AppImage and a .deb are not built yet.
Android will not install the APK.
Android blocks installs from outside the Play Store until you allow it for the app doing the installing — usually your browser or file manager. The prompt appears the first time and points you at the right setting. The APK is signed, so once that is allowed it installs normally.
Why are the macOS, Linux and Android builds marked untested?
Because they are. All three were cross-compiled on a Windows machine, which is also the only platform the app has actually been launched on. The archives have been checked for structure — signatures, permissions, that the DuckDB engine is packaged — but that is not the same as knowing the app opens. They are published anyway because a build you can try beats a page that says coming soon, and because one report is all it takes to find out.
A build does not work. What should I do?
Open an issue on GitHub with your platform, the version, and what happened — a screenshot of the error is ideal. You can also use the contact page. There is no telemetry and no crash reporting in these apps, by design, so a report from you is the only way a problem on a platform I cannot test reaches me.
Is there an iPhone or iPad app?
No. An iOS build has to be compiled with Xcode on a Mac and signed with a paid Apple developer account, and there is no way around either requirement. The browser version works in Safari on iPhone and iPad, and Add to Home Screen from the share menu gives you an icon that opens straight into it — the same engine, with the same roughly 900 MB ceiling an App Store build would have.
Do the apps need an internet connection?
No, and the Android build cannot use one even in principle — it declares no internet permission at all, so the operating system would refuse the request. DuckDB and its WebAssembly assets ship inside every build rather than being fetched from a CDN. Install it, disconnect the machine, and everything still works.
Do I need to uninstall the browser version?
There is nothing to uninstall — the browser version is just a page. The apps and the site are the same tool and do not share any state, since neither one stores anything. Use whichever is in front of you.
How do I update?
Download the new version and install it over the old one. There is no updater and no update check, which is a deliberate consequence of the apps having no network client at all. On Android, install the new APK over the existing one — it is signed with the same key, so it upgrades in place.
Is it really free?
Yes. No account, no trial, no paid tier, no telemetry. It is MIT licensed and the source is on GitHub. Nothing about it is server-side, so it costs nothing to run and there is nothing to upgrade to.
Something not answered here? Open an issue or send me a message.