SQLite DB Viewer & SQLite Viewer, Database Viewer (Read-Only)

SQLite DB Viewer & SQLite Viewer, Database Viewer (Read-Only), a VS Code extension by Zovo

Free, with no paywall, no ads, no license banner and no sign-in. There is nothing to buy. Databases up to 512 MB open by default (a setting raises the limit).

Install in VS CodeOpen the Marketplace page

Free, MIT license. Needs VS Code 1.90.0 or newer. Extension ID zovo.sqlite-table-viewer, version 0.2.2.

Click a .db or .sqlite file and this SQLite DB viewer shows its tables, schema, JSON columns and BLOBs in a fast read-only grid. It also shows the rows your app has not checkpointed yet, and it updates while the app writes.

VS Code with app.db open on the events table. A blue line says it includes 6 committed transactions from app.db-wal, and the Live button is on in the toolbar

A real VS Code 1.142 window. A Python script holds app.db open in WAL mode and keeps inserting rows, and the grid follows it.

Quick start

  1. Install SQLite DB Viewer.
  2. Click any .db, .sqlite, .sqlite3, .db3, .s3db, .sl3, .vscdb or .gpkg file. It opens as a table.

A SQLite file with another name (.data, .store, no extension) is detected by its "SQLite format 3" header, and VS Code offers to open it here. You can also right-click any file and pick "Open in SQLite Table Viewer".

Questions people ask

Is SQLite DB Viewer & SQLite Viewer, Database Viewer (Read-Only) free?

Yes. SQLite DB Viewer & SQLite Viewer, Database Viewer (Read-Only) is free and MIT licensed.

How do I install SQLite DB Viewer & SQLite Viewer, Database Viewer (Read-Only)?

Click "Install in VS Code" above, or search for zovo.sqlite-table-viewer in the Extensions view.

More screenshots

store.db open on the orders table, filtered to paid orders over 100000 cents and sorted by total, next to the list of 4 tables, 2 views, 3 indexes and 1 trigger with row counts

store.db, a generated shop database with 50,000 rows (scripts/make-samples.py), filtered and sorted. It opened in 57 ms.

JSON column as a tree, light themeSchema tab, dark theme
types.sqlite with a JSON cell open in the cell viewer as a collapsible tree, next to PNG and float32 BLOB cellsThe Schema tab for the orders table with column types, primary key, NOT NULL, defaults, the foreign key to customers and the CREATE statements
SQL box with history, dark themeFloat32 embedding, light theme
A SELECT with a join, GROUP BY and json_extract run in 18 ms, with 30 result rows in the gridA 384-dimension float32 BLOB decoded as a vector with min, max, mean, L2 norm and the first 64 values, above its hex dump

What you can do

Pick a table or view on the left. Each one shows its row count. Indexes and triggers are listed too, and a click shows their SQL.

Click a column header to sort. Clicks cycle through ascending, descending and the table's own order, and NULLs go last. Type in the box under a header to filter that column. Number columns take >10, >=10, <5, !=3 and ranges like 5..9. Text matches any part of the value, =word matches exactly and !word drops rows that contain it. empty and !empty work everywhere. The search box looks in every column. Every filter value is sent to SQLite as a bound parameter, never pasted into the SQL text.

WAL files and live reload

When a database is in WAL mode, SQLite writes new transactions to name.db-wal first and copies them into name.db later, at a checkpoint. A viewer that reads only name.db misses those rows, and a table made since the last checkpoint is not there at all. This viewer reads both files. Only complete, committed transactions are used: frames are checked with the WAL salts and checksums, and a half-written transaction at the end is skipped. A blue line above the grid says how many transactions came from the -wal file. If the -wal file can't be used, a yellow line says so and the main file is shown.

The viewer checks the database and its -wal file once a second. When either changes, it reads them again and shows the same table with the same sort, filters, scroll position and open cell. The "Live" button in the toolbar turns this off (setting sqliteTableViewer.autoReload). Then a line says "The file changed on disk" with a Reload button. "Reload" in the toolbar reads the files again at any time. If a reload happens in the middle of a write and fails, the old view stays and the viewer tries once more.

Rows are fetched one page at a time, so a table with millions of rows scrolls as fast as a small one.

The Schema tab shows each column's declared type, primary key, NOT NULL, default and foreign key, plus the CREATE statements for the table, its indexes and its triggers.

The SQL tab runs one statement at a time. SELECT, WITH, VALUES, EXPLAIN and reading PRAGMAs (table_info, index_list, integrity_check and so on) are allowed. The result fills the same grid, so you can sort, filter and copy it. You see the row count and the time, and the last 20 queries stay in the history list.

Double-click a cell, or press Enter, to open the cell viewer. Text and JSON show in full. A BLOB shows its size and a hex dump, plus the picture for image data and vector stats when the bytes decode as float32 or float64.

Select cells by dragging or with Shift+click, or click row numbers for whole rows. Copy CSV, Copy JSON and Copy INSERT put the selection on the clipboard, and Ctrl+C (Cmd+C on macOS) copies tab-separated values. Export saves every row in view, filtered and sorted, as CSV or JSON.

Settings

SettingDefaultWhat it does
sqliteTableViewer.maxFileSizeMB512Larger files show a message instead of loading
sqliteTableViewer.copyMaxRows100000Most rows copied to the clipboard at once
sqliteTableViewer.exportMaxRows1000000Most rows written to one CSV or JSON export
sqliteTableViewer.autoReloadtrueReload the view when the database or its -wal file changes. Turn it off with false to get a Reload notice instead
sqliteTableViewer.askForRatingtrueAsk for a Marketplace rating after 3 databases opened without an error on 2 different days. "Later" asks one more time after 7 days, "No thanks" never again. It never asks after an error. Turn it off with false.

Limits

Privacy

SQLite Table Viewer makes no network requests and collects no telemetry. The database is read in a worker thread on your machine. The webview runs under a strict Content Security Policy with no remote scripts, and every value from the file is written as plain text, never as HTML.

License

MIT. sql.js is MIT and SQLite is public domain. See THIRD-PARTY-NOTICES.txt.

Guides

Install SQLite DB Viewer & SQLite Viewer, Database Viewer (Read-Only)

Click the button to open VS Code and install it, or press Ctrl+P (Cmd+P on macOS) in VS Code and run ext install zovo.sqlite-table-viewer.

Free, MIT license. Needs VS Code 1.90.0 or newer. Extension ID zovo.sqlite-table-viewer, version 0.2.2.

Source code and issues are on GitHub.

All our VS Code extensions

Support this work

If this extension saves you time, you can support the work on GitHub Sponsors. Monthly tiers start at $5, and one-time tiers start at $15. Sponsorship is optional, and the tool works the same without it.