Database Viewer

Open SQLite databases, CSV and TSV files, SQL dumps, JSON, Excel (.xlsx/.xls), OpenDocument and dBase (.dbf) files of any size in a fast, searchable table. Files are read in slices straight from your disk, so a 20 GB file opens as fast as a 20 KB one. Nothing is uploaded.

Viewer Media & Files Updated Oct 5, 2026
How to Use
  1. Drop a file in — or several at once, or press Paste data to paste CSV or JSON text. SQLite (.db, .sqlite), CSV/TSV, SQL dumps (.sql), JSON and JSON Lines, Excel .xlsx/.xls, OpenDocument .ods and dBase .dbf all open directly, and so do those files inside a .zip or .gz.
  2. Rows appear straight away. Big files keep indexing in the background while you scroll; the status line says how far it has got.
  3. Pick a table on the left. Type in the search box to find text in any column, or use the column filter (equals, greater than, contains, is empty, regex…). Click a column header to sort.
  4. Click any cell to see its full value — long text, pretty-printed JSON, or a stored image or file you can download. Double-click a cell (or press F2) to edit it; edits are highlighted and go into every export.
  5. Export what you see — filtered and sorted — to CSV, CSV for Excel, TSV, JSON, JSON Lines or SQL INSERT statements.

Open a database or data file of any size — SQLite, CSV, SQL dumps, JSON, Excel, dBase — and browse, search, sort and export it. The file is read in slices from your own disk, so a 20 GB export opens as fast as a small one. Nothing is uploaded.

Drop a database or table file, or
SQLite · CSV / TSV · SQL dumps · JSON / JSON Lines · Excel .xlsx .xls · .ods · dBase .dbf · inside .zip or .gz · no size limit
Drop a .db and its -wal file together, or a .dbf with its .fpt/.dbt memo file.

What it opens

FormatExtensionsWhat you get
SQLite.db .sqlite .sqlite3 .db3 .s3db .gpkg .mbtiles .anki2 — or no extensionEvery table and its row count, views and virtual tables with their SQL, indexes and triggers, WITHOUT ROWID and generated columns, stored images and files. A -wal file dropped alongside is applied.
Delimited text.csv .tsv .tab .psv .txt .datComma, tab, semicolon or pipe — detected. Quoted fields with commas and line breaks inside them, UTF-8, UTF-16 and legacy code pages.
SQL dumps.sql .dumpmysqldump and phpMyAdmin, pg_dump (INSERT or COPY), SQLite .dump, SQL Server scripts. One table per CREATE TABLE or INSERT target. Nothing is executed.
JSON.json .geojsonAn array of records becomes a table; an object holding several arrays becomes several tables. Nested objects flatten into address.city columns.
JSON Lines.jsonl .ndjsonOne record per line — logs, analytics and data-pipeline exports.
Excel.xlsx .xlsm .xlsEvery sheet, with dates shown as dates rather than serial numbers, and formula results rather than formulas.
OpenDocument.odsEvery sheet from LibreOffice Calc or Google Sheets exports.
dBase / FoxPro / Clipper.dbf (+ .dbt / .fpt memo)All field types, deleted records flagged rather than hidden, DOS code pages 437 and 850 decoded.
Compressed.zip .gzUnpacked in the browser, then opened as whatever is inside.

Why size does not matter

Read in slices
Never the whole file
The browser reads a few megabytes at a time straight from disk. Memory use depends on the screen, not the file.
Checkpoint index
1 position per 64 rows
One pass notes where rows start. A billion-row file needs about 125 MB of index; a million-row file, 125 KB.
Virtual grid
Only visible cells exist
About forty rows are ever drawn, in both directions, however many rows and columns the table has.
Background thread
The page never freezes
Indexing, search, sort and export run in a Web Worker in small slices, so scrolling stays smooth while a 20 GB file is read.
SQLite pages
B-tree walk, no engine
Rows come off the table's B-tree pages directly. Row counts come from leaf-page headers, read in bulk.
Privacy
Nothing leaves the tab
No upload, no server, no copy kept. Close the tab and it is gone.

About the Database Viewer

Most online database and CSV viewers load the whole file into the browser first, which is why they stop working somewhere between 100 MB and 1 GB. This one never does. It reads your file the way a database engine reads its own storage: a slice at a time, only the parts it needs, straight from your disk. Rows appear as soon as the first few kilobytes are read, and the rest of the file is indexed in the background while you work.

How it works

Each format has its own reader, all running in a background thread so the page never freezes. SQLite databases are read page by page by walking their B-trees. Text formats — CSV, TSV, JSON Lines, SQL dumps and JSON arrays — are scanned once, quote-aware, noting where every 64th row starts; to show row 30,000,000 the viewer jumps to the nearest noted position and parses forward a few rows. dBase files have fixed-size records, so any row is one read away. Spreadsheets are streamed out of their zip container and decoded as they arrive.

Search, filters and sorting run over the whole file, not just the rows on screen, and matches appear while the scan is still going.

Frequently Asked Questions

Is there really no file size limit?

The tool never loads your file into memory. It reads the part it needs, when it needs it, straight from your disk — the same way a database engine does. What it keeps is a small index (one position for every 64 rows), so a 20 GB CSV costs a few megabytes of memory. The practical limits are your disk and your patience: searching or sorting has to read every row once, and reading runs at roughly 100–300 MB per second. Sorting is capped at 50 million rows, because it has to hold one sort key per row.

Is my data uploaded anywhere?

No. Everything happens inside your browser tab, in a background worker. There is no server step, so customer lists, medical exports, app databases and financial records never leave your computer. Close the tab and nothing remains.

How does it open a SQLite file without SQLite?

SQLite files have a well-documented page format: a header, then fixed-size pages arranged as B-trees, one tree per table. The viewer walks those trees directly — reading the schema from page 1, then only the pages that hold the rows on screen. Loading the whole file into a WebAssembly copy of SQLite would be simpler, but that has to fit the entire database in memory, which is exactly the limit this tool avoids.

My SQLite database looks empty or out of date.

It is probably in WAL (write-ahead log) mode, where recent changes sit in a second file called yourfile.db-wal until SQLite copies them back. Drop both files at once and the viewer layers the log over the main file, just as SQLite would. The File tab says when a database is in WAL mode.

Can I run SQL queries?

Not yet. You can fix individual cells — double-click one, type the new value, and the edit goes into every export — but there is no query engine. Search, column filters and sorting cover most "find the row" jobs, and they work on files far too large for an in-browser SQL engine. SQL dumps are never executed either: the viewer reads the INSERT and COPY statements as data.

What about "sqsh" files?

A .sqsh or .sqfs file is a SquashFS filesystem image, not a database. The viewer recognises one and says so; extract it with 7-Zip first, then open any database inside it here.

Which formats are not supported yet?

Microsoft Access (.mdb/.accdb), Parquet, Arrow/Feather, Avro and binary Excel (.xlsb) are recognised and explained but not opened. Encrypted SQLite (SQLCipher, used by many phone apps) cannot be read without its key.

Why do some rows show NULL and others show nothing?

NULL means no value was stored at all. An empty cell means an empty string was stored. Databases treat the two differently — a filter for "is empty" matches both, "is NULL" matches only the first.

Common Use Cases

A CSV too big for Excel

Excel stops at 1,048,576 rows and most text editors choke long before a gigabyte. This scrolls a 50-million-row export and searches it.

Look inside an app database

Browser history, messaging backups, game saves, Anki decks, GeoPackage and MBTiles maps — all SQLite underneath.

Check a SQL backup without restoring it

Browse the tables in a mysqldump, pg_dump or SQLite .dump file without installing a database server.

Rescue old dBase and FoxPro data

Read .dbf tables from discontinued accounting and inventory systems, memo fields included, with DOS code pages decoded properly.

Convert between formats

Open any supported file and export it — or just the rows you filtered — as CSV, JSON, JSON Lines or SQL.

Find the one bad row

Filter a column for empty values, out-of-range numbers or a regex pattern to find what broke an import.

Last updated: