GumSqlite
Browse, edit, and query SQLite databases inside VS Code — no native bindings, no Docker, no separate app.
GumSqlite registers your .db / .sqlite files once and keeps them in a single sidebar that's visible from any VS Code window. Click a table to browse rows, double-click a cell to edit, or open a SQL query editor for ad-hoc work.
Features
- 🗄 Machine-wide database registry — registered databases live in
~/.gumsqlite/databases.json and show up in every VS Code window, no matter which folder is open
- 🌳 Schema tree — databases → Tables / Views / Indexes / Triggers → columns (with type, PK, NOT NULL flags)
- 📊 Spreadsheet-style data viewer — sticky header, sortable columns (click), filter via
WHERE clause, pagination, show/hide columns
- ✏️ Inline cell editing — double-click any cell to edit; press Enter to commit, Esc to cancel
- ➕ Insert / Delete rows — modal insert with per-column NULL toggles; one-click delete with confirmation
- 🔎 SQL query editor —
Ctrl+Enter to run, Ctrl+Shift+Enter to run selection, multi-statement support, per-statement timing
- 📐 Schema tab per table — full CREATE statement, columns, foreign keys, indexes
- 📤 Export — CSV / TSV / JSON / JSON Lines / SQL INSERTs
- 📥 Import — CSV / TSV / JSON / JSON Lines into any existing table
- 💾 Dump database — full schema + data as a portable
.sql file
- 🧰 Database tools —
PRAGMA integrity_check, VACUUM, drop / rename / truncate table
- 🪶 Pure WASM engine (
sql.js) — no native compilation, works on every platform out of the box
- 🎨 Native VS Code theming — uses your editor colors, fonts, and icons
Quick Start
- Install GumSqlite from the Marketplace
- Click the GumSqlite icon in the activity bar
- Add Database… (the
+ icon) → pick a .db / .sqlite / .sqlite3 file
- Expand the database → expand Tables → click a table to open the viewer
- Double-click any cell to edit. Click column headers to sort.
Or create a new database from scratch: Create New Database… → pick a path → start adding tables.
The Database Registry
GumSqlite keeps one machine-wide list at ~/.gumsqlite/databases.json:
{
"version": 1,
"databases": [
{
"id": "db-a1b2c3d4",
"name": "app.db",
"filePath": "C:\\Users\\me\\projects\\myapp\\app.db",
"addedAt": "2026-05-15T10:30:00.000Z"
}
]
}
Registered databases are visible from every VS Code window — open a folder, open no folder, doesn't matter. You only register a database once.
Table Viewer
| Action |
How |
| Sort by column |
Click column header (toggles ASC → DESC → none) |
| Filter rows |
Type a SQL WHERE expression and click Filter (e.g. id > 100 AND name LIKE '%foo%') |
| Edit cell |
Double-click the cell, type, press Enter |
| Insert null |
While editing, clear the field and press Enter |
| Insert row |
Click + Row — fill values, tick NULL for null fields |
| Delete row |
Click 🗑 on the right side of the row |
| Show/hide columns |
Click ⋮ Columns |
| Page |
‹ / › buttons, or type a page number |
| View schema |
Click the Schema tab |
Edits are saved to disk after each change by default (controlled by gumSqlite.autoCommit).
SQL Query Editor
| Shortcut |
Action |
Ctrl+Enter |
Run the whole query |
Ctrl+Shift+Enter |
Run the selected text only |
Ctrl+S |
Save changes to disk |
Tab |
Insert 4 spaces |
Multiple statements separated by ; are all executed; you see one result block per statement (with row count and timing).
The editor handles -- line comments, /* */ block comments, and ' / " string literals correctly when splitting statements.
Settings
| Setting |
Default |
Description |
gumSqlite.pageSize |
100 |
Rows per page in the table viewer (10–1000) |
gumSqlite.confirmDestructive |
true |
Confirm before DROP / TRUNCATE / DELETE row |
gumSqlite.autoCommit |
true |
Save changes to disk after each edit. If false, edits stay in memory — press Save in the query editor or close the panel to persist. |
gumSqlite.maxCellPreview |
200 |
Maximum characters shown inline in a cell |
gumSqlite.dateFormat |
"iso" |
How to display date/time values: iso, locale, or raw |
Commands
All commands are available from the Command Palette (Ctrl+Shift+P):
| Command |
What it does |
| GumSqlite: Add Database… |
Pick a file → register in the machine-wide list |
| GumSqlite: Create New Database… |
Make a new empty .db and register it |
| GumSqlite: Remove Database |
Unregister (does NOT delete the file from disk) |
| GumSqlite: Rename Database |
Change the display name in the sidebar |
| GumSqlite: Reveal Database File |
Show the file in the OS file manager |
| GumSqlite: New SQL Query |
Open the SQL editor against a database |
| GumSqlite: Open Table |
Open the table data viewer |
| GumSqlite: Show Schema (CREATE) |
View CREATE SQL for a table / view / index |
| GumSqlite: Create Table… |
Open the SQL editor with a CREATE TABLE template |
| GumSqlite: Rename Table |
ALTER TABLE … RENAME TO … |
| GumSqlite: Drop Table |
DROP TABLE with confirmation |
| GumSqlite: Truncate Table |
DELETE FROM (keeps schema) |
| GumSqlite: Export Table… |
CSV / TSV / JSON / JSON Lines / SQL INSERTs |
| GumSqlite: Import Into Table… |
Import CSV / TSV / JSON / JSON Lines |
| GumSqlite: Dump Database to SQL… |
Full schema + data as .sql |
| GumSqlite: Run Integrity Check |
PRAGMA integrity_check and show results |
| GumSqlite: VACUUM Database |
Reclaim unused space |
| GumSqlite: Open Registry |
Edit ~/.gumsqlite/databases.json directly |
| GumSqlite: Refresh |
Re-read schema from disk |
How it works
GumSqlite uses sql.js — SQLite compiled to WebAssembly. This means:
- ✅ No native compilation — works on Windows, macOS, Linux, ARM, x64, anything
- ✅ Self-contained extension — the
.vsix ships with the WASM file
- ⚠️ In-memory model — the entire database is loaded into RAM. Excellent for typical SQLite files (KB to a few hundred MB); not designed for multi-GB databases.
Changes are persisted by writing the in-memory database back to disk after each edit (atomic write via temp file + rename).
Tips
- Add to GumSqlite from File Explorer: right-click a
.db / .sqlite file in the VS Code Explorer → GumSqlite: Add Database…
- Quick filter shortcut: focus the filter input and press Enter to apply.
- Editing a JSON column: paste the JSON as-is — GumSqlite stores it as TEXT, so it round-trips cleanly.
- NULL vs empty string: clearing a cell and pressing Enter saves
NULL. To save an empty string, edit the cell and press Enter without clearing (the original value type is preserved when possible).
Companion extensions
Part of the Gum Suite:
- 🟢 GumRun — start / stop / restart your dev servers from VS Code
- 🟦 GumGo Preview — Go HTML template preview with click-to-jump
- 🟣 GumDotNet Form Viewer — preview C# / VB.NET WinForms designer files
- 🗄 GumSqlite — SQLite database manager (you are here)
License
MIT