DuckDB online

DuckDB online: run DuckDB in your browser with no install

rows.page runs DuckDB on CSV and JSON files up to 1.5 GB in your browser, with a 4 GB memory cap, free and with no signup. shell.duckdb.org is a free DuckDB-WASM SQL prompt with the same cap. MotherDuck adds cloud storage, and the DuckDB UI runs on your own computer.

.csv.parquet.json
Drop a file here
Stays in your browserUp to 1.5 GB

No file handy? Open CO2 emissions by country and year (50k rows, 14 MB).

Where can you run DuckDB online for free?

Five tools run DuckDB SQL from a browser tab. Three run DuckDB inside the tab with DuckDB-WASM, MotherDuck runs it in the cloud, and the DuckDB UI runs it on your own computer.

5 ways to run DuckDB online compared
OptionRuns whereLoad your own filePrice
DuckDB Web ShellBrowser (DuckDB-WASM)Local files with .files add, or HTTPS URLsFree
rows.pageBrowser (DuckDB-WASM)CSV, TSV, JSON, JSONL up to 1.5 GB; ParquetFree; Pro $12/mo and Max $39/mo for hosting
SQLite OnlineBrowserCSV importFree, no signup
MotherDuckCloudCSV, JSON or Parquet uploadFree Lite; Business $250/org/mo + usage
DuckDB UI (duckdb -ui)Your computer (localhost:4213)Any local file DuckDB readsFree

How to run DuckDB in your browser with no install

DuckDB Web Shell

The official DuckDB Web Shell at shell.duckdb.org gives you a DuckDB prompt in a browser tab, running on DuckDB-WASM. It reads files from HTTPS URLs, and the .files add command opens a picker for local files. It is free with no account, and it works like a terminal, so results print as text rather than in a grid.

rows.page

rows.page puts a scrollable grid, a filter box and a Columns panel with histograms on top of DuckDB-WASM. You drop a CSV, TSV, JSON, JSONL or Parquet file on the page, or paste cells copied from Excel or Google Sheets, and the data stays in your browser unless you press Share. It is free with no signup, and the Pro ($12 per month) and Max ($39 per month) plans are for hosting shared datasets.

SQLite Online

SQLite Online runs SQLite, DuckDB and PGlite in your browser with no signup, so you can try one query on three engines. You import a CSV into a table first, then query it.

How to run DuckDB in the cloud or on your own computer

MotherDuck

MotherDuck is a cloud DuckDB service, so tables you load stay in your account between sessions. In its web UI, the Add data button uploads a CSV, JSON or Parquet file. The Lite plan is free, and Business starts at $250 per organization per month plus usage.

DuckDB UI on your computer

Since version 1.2.1 (March 2025), the DuckDB CLI can open a notebook UI built by MotherDuck. It runs DuckDB as a native process, so queries use all of your computer's cores, memory and files, and by default your data never leaves your machine. It is free, but it does not support Intel Macs or Windows on ARM.

  1. Install the DuckDB CLI, version 1.2.1 or newer.
  2. Run duckdb -ui in a terminal.
  3. The UI opens in your browser at http://localhost:4213.

How to query a CSV, JSON or Parquet file with DuckDB on rows.page

  1. Open rows.page and drop a CSV, TSV, JSON, JSONL or Parquet file on the page, or click Paste data.
  2. Type a quick filter such as country:NL or price:>20 in the filter box.
  3. For SQL, type one statement that starts with SELECT, WITH or FROM in the same box, using data as the table name.
  4. Export the result as CSV, Parquet, JSON, JSONL or Markdown, or press Share to get a link.
sql
SELECT
  "user.address.city" AS city,
  count(*) AS orders,
  median(amount) AS median_amount
FROM data
WHERE status = 'paid'
GROUP BY ALL
HAVING count(*) > 10
ORDER BY orders DESC

Window functions, QUALIFY, unnest(), PIVOT inside a subquery and FROM (SUMMARIZE data) all work, and results show up to 1,000,000 rows. Nested JSON becomes dot-path columns up to 8 levels deep, so quote names with dots, like "user.address.city". A hidden __rid column holds the original row number, so remove duplicates with SELECT DISTINCT * EXCLUDE (__rid) FROM data.

What are the limits of DuckDB-WASM and rows.page?

DuckDB-WASM is DuckDB compiled to WebAssembly, so queries run inside your browser tab and your file is not uploaded. A tab can use at most 4 GB of WebAssembly memory. rows.page adds these limits:

  • CSV, TSV, JSON and JSONL files open up to 1.5 GB per tab.
  • A bigger CSV, TSV or JSONL file loads its first rows, with the note "Loaded the first N rows: the file is X, more than the browser can hold."
  • A .json file over 1.5 GB is refused with "Too big for this browser", so convert it to JSONL to open part of it.
  • Parquet skips the 1.5 GB check, because DuckDB reads it in place.
  • One SQL statement on one file: no cell editing, no CREATE TABLE, and no joins across two files.
  • SQL results and their exports stop at 1,000,000 rows, while a filtered view exports every matching row.
  • No Excel, SQLite, XML or Avro files, so save a sheet as CSV first.

Which DuckDB online option should you use?

  • A quick query on a file you have, or a link to share it: rows.page.
  • A plain DuckDB prompt for scripts with several statements: the DuckDB Web Shell.
  • The same query on DuckDB, SQLite and PostgreSQL (PGlite): SQLite Online.
  • Tables you want to keep and query again from any device: MotherDuck.
  • Files bigger than a browser tab can hold, kept on your own machine: the DuckDB UI.

rows.page limits and prices

WhatLimit or price
Open a file in your browserFiles up to 1.5 GB, $0, no account, nothing uploaded
Share a link without an account$0, files up to 100 MB, link deleted 7 days after creation
Free account$0, 10 datasets kept, last 3 versions
Pro$12/month, 100 datasets, files up to 500 MB, private links
Max$39/month, 1,000 datasets, files up to 2 GB, private links

Questions

Is DuckDB free for commercial use?

Yes. DuckDB is open source under the MIT license, which allows commercial use. Version 2.0.0 LTS came out on 2026-10-21 and is supported until 2027-10-22.

Can I open a remote CSV or Parquet URL with DuckDB online?

Yes. On rows.page, put the public file URL after rows.page/, as in https://rows.page/https://example.com/data.csv. Your browser fetches the file directly, and if the host blocks cross-origin requests, rows.page fetches it through its proxy (up to 100 MB, 30 seconds and 5 redirects).

Why does my file fail to load in DuckDB-WASM?

A browser tab has a 4 GB WebAssembly memory cap. On rows.page, a .json file over 1.5 GB is refused, while a bigger CSV, TSV or JSONL file loads only its first rows. A CSV that is not UTF-8 and uses Windows-1252 characters such as the euro sign or curly quotes fails with "Couldn't open this data", so re-save it as CSV UTF-8.

Can I open Excel files with DuckDB online?

Not on rows.page, which doesn't read .xlsx or .xls files. Save the sheet as CSV UTF-8, or copy the cells and click Paste data, since copied cells arrive tab-separated. The DuckDB CLI can read .xlsx sheets through its excel extension.

Does rows.page upload my data when I query it?

No. Opening and querying a file happens in your browser with DuckDB-WASM. A file is uploaded only when you press Share or push it with curl -T data.csv https://rows.page, and without an account that link holds up to 100 MB and expires after 7 days.