Free Online DuckDB Viewer

Drop a .duckdb or .sqlite file below and every table is listed with its real row count. Pick one and it opens in a grid you can sort, filter, measure and export. The database is attached read-only, in your own tab, with nothing uploaded.

A database file is a black box until something opens it

Single-file databases have quietly become a normal way to move data around. DuckDB writes one, SQLite has always written one, and the result gets attached to tickets, dropped in buckets, committed to repositories and emailed between colleagues. It is a good format for that: self-contained, typed, compact, and much harder to corrupt than a CSV.

It is also completely opaque. There is nothing you can do with a .duckdb file except open it with DuckDB, and if you are not the person who created it you may not have DuckDB, or Python, or a terminal you are allowed to install things into. The question you have is small: what tables are in here, how many rows do they hold, does the extract look right. The apparatus normally needed to answer it is not small at all.

This page loads DuckDB compiled to WebAssembly into your browser tab, attaches the file read-only, and lists every table in it with a real row count beside each name. Then it opens one in a grid. That is the whole flow, and it takes as long as the four-megabyte engine takes to download the first time.

SQLite files work too, and the detection is by content rather than by name. A .db extension is used by both formats and tells you nothing, so the first sixteen bytes are checked: a file beginning SQLite format 3 goes to the SQLite reader and anything else is tried as DuckDB. You do not have to know which one you were sent.

What is on the page

Every table, with real counts

The picker lists each table with a genuine count of its rows, not an estimate from a catalog. That list alone answers most of what you wanted to know about a file somebody sent you.

Read-only by construction

The attach is explicitly READ_ONLY and the file is only ever in browser memory. Nothing this page does can change the database on your disk.

Format detected by content

DuckDB or SQLite is decided from the file's magic bytes, so a misleadingly named .db opens correctly instead of failing with a message about a corrupt header.

Types rendered properly

Dates, timestamps and decimals are rendered the way DuckDB writes them rather than as the raw numbers underneath, so a DATE column reads as a date instead of as an epoch integer.

Sort, filter, freeze

Click a header to sort, filter as you type across all columns or one, and pin the first columns so the primary key stays visible on a wide table.

Column statistics

Blanks, distinct count, min, max, mean, median, sum and most common values, one click from a header. A quick profile of a table without writing a query.

Copy a range

Select cells and Copy as TSV, CSV, Markdown or JSON. Ctrl or Cmd plus C copies as TSV without opening the menu.

Export the view

Download CSV or .xlsx writes what is on screen after your sort and filter, which is how one table out of nine becomes a file you can send to somebody without a database tool.

SQL is one click away

Open in Data Explorer carries the file across for real DuckDB SQL: joins across the tables you just listed, window functions, GROUP BY, CTEs. No opt-in, no second engine.

A worked example

The Try with sample data link loads a small analytics database. After the engine warms up, the picker fills with the tables it contains and each carries a row count, so before clicking anything you can see which table is the fact table and which are the small dimension tables around it.

Pick the largest one. The grid draws with a type badge on every header, which for a database file is a more interesting check than it sounds: the badges are inferred from the values as rendered, so a column the schema calls VARCHAR but which contains nothing but numbers will badge as numeric, and that mismatch is usually a sign that a load script wrote everything as text.

Click the sigma on an amount column for min, max, mean, median and sum across the table. Filter to a region and read the new count under the grid. Sort by date descending to see whether the extract actually goes up to the day it claims to. Each of these is a query you did not have to write, against a file you did not have to install anything to open.

When the questions get bigger than one table, Open in Data Explorer carries the same file into full DuckDB SQL, where the tables you just listed become things you can join. That progression is the point: the viewer answers the small questions in seconds, and hands off cleanly when the question stops being small.

Limits worth knowing

  • Base tables only. Views, indexes, sequences and system catalog objects are left out of the picker. A list of forty internal objects would hide the three tables you came for.
  • The main schema. Tables in other schemas are not listed. Multi-schema databases are a full-editor job.
  • Two million rows per table in the grid. Larger tables open and report their true size, and the grid holds the first two million. The ceiling is the tab's memory, not the file.
  • The engine downloads once. DuckDB-WASM is around four megabytes on first use and cached afterwards. Nothing of yours is sent anywhere in the process.
  • A newer file format may not open. DuckDB's storage format has changed between major versions; a database written by a much newer release than the WebAssembly build here will refuse to attach, and says so rather than showing an empty table.

Frequently Asked Questions

How do I open a .duckdb file without installing DuckDB?

Drop the file on the box at the top of this page. DuckDB compiled to WebAssembly loads in your tab, attaches the database read-only, lists every table with its row count, and opens the first one in a grid. There is no CLI to install, no Python, and nothing is uploaded.

Does it list every table or just one?

Every table, each labelled with its real row count from a COUNT over that table rather than an estimate. That list is usually the first thing you want from a database file somebody handed you: what is in here, and which of these tables has the data. Switching between them redraws the grid.

Does it open SQLite files too?

Yes. The format is detected from the file's magic bytes rather than its extension, so a .db file that is really SQLite is routed to the SQLite reader automatically and a .db that is really DuckDB is not. Both give you the same table picker and the same grid. That matters because .db is used by both and the extension tells you nothing.

Is the database opened read-only?

Yes, explicitly. The DuckDB attach is READ_ONLY, so nothing this page does can modify the file you dropped on it. The file is also only ever in your browser's memory: the copy on your disk is not touched at all.

Can I run SQL against the database here?

Not on this page, which is a browser rather than a query tool. The engine underneath is full DuckDB, so Open in Data Explorer carries the file across and gives you real SQL over it: joins across tables, window functions, GROUP BY and CTEs, with no opt-in and no second engine to drift from the first.

Are views and indexes shown?

Base tables in the main schema are listed. Views, indexes, sequences and the system catalog are not, because a picker showing forty internal objects hides the three tables you actually wanted. If you need to inspect the full catalog, that is a job for SQL in the full editor.

How large a database can this open?

250 MB. The grid loads up to two million rows from the selected table and only renders the ones on screen, so a large table scrolls smoothly; when a table has more rows than that, a warning says the exact total and how many are shown. Above 250 MB, the full editor handles up to 1 GB.

Can I export a table as CSV or Excel?

Yes. Pick the table, sort and filter it as you like, and Download CSV or .xlsx writes exactly the view on screen. For a fragment, select a range of cells and use Copy as, which offers TSV for a spreadsheet, CSV, a Markdown table, or JSON keyed by column name.

See what is inside the database

Every table with a real row count, attached read-only, in a tab you already have open.

Back to the viewer