ZeroTool Workbench
SQLite Viewer
Open SQLite .db and .sqlite files in your browser. Browse tables, schema and indexes, run SQL, and export results to CSV. The file never leaves your device.
How to inspect a SQLite file
- Drop a
.db,.sqliteor.sqlite3file onto the drop area, or click it to choose one. - Pick a table or view from the list on the left. Its columns, types, primary key, indexes and original
CREATEstatement appear above the data. - Page through the rows 100 at a time with Previous and Next.
- Write any SQL in the editor and press Run SQL or Ctrl/Cmd + Enter.
- Press Export CSV to save the whole table, or the full result of your last query.
When a browser SQLite viewer is the right tool
- Checking what an agent or script wrote. A coding agent ran a migration or seeded test data. Open the file and look at the rows before you trust it.
- Reading app data. Browsers, mobile apps, Electron apps and many CLIs keep their state in SQLite. Pull the file and read it without installing a desktop client.
- Handing data to someone else. Run a query, export the result as CSV, and send the CSV — the database itself stays with you.
What the viewer shows
| Value | How it appears | In CSV |
|---|---|---|
| NULL | A muted NULL marker, so it cannot be confused with an empty string | Empty field |
| BLOB | Byte length and the first 16 bytes in hex | Full content as uppercase hex |
| Long text | Truncated in the cell; hover to see more | Full value, quoted per RFC 4180 |
| Numbers | Right-aligned | As stored |
Query results render the first 1,000 rows so the page stays responsive. The CSV export always contains every row.
How it works
The page first reads only the first 100 bytes of the file and checks the SQLite header. The SQLite engine — sql.js, about 340 KB compressed — is fetched only after that check passes, so opening the page costs nothing extra and a wrong file never triggers the download. The full file is then passed to SQLite as an in-memory database. Table structure comes from pragma_table_info and pragma_index_list, and every table and column name is quoted, so names with spaces, quotes or non-Latin characters work.
Scope
This tool opens one SQLite 3 file up to 100 MB and reads it. It does not save changes back to the file, does not read -wal or -journal sidecar files, and does not open encrypted databases. Extension-backed virtual tables such as SpatiaLite geometry tables, FTS5 full-text indexes and R-Tree indexes show their SQLite error instead of rows. For any of those cases, the sqlite3 command-line shell or DB Browser for SQLite on your own machine is the right tool.
FAQ
Is my database file uploaded?
No. The file is read with the browser File API and opened by SQLite compiled to WebAssembly (sql.js) inside the page. There is no server step, and this page loads no analytics or ad scripts. That is the point of the tool: a database is usually full of user records, tokens or production data that should never be pasted into a chat window or sent to someone else's server.
If I run UPDATE or DELETE, does it change my file?
No. The browser has no write access to the file you picked. SQLite runs on an in-memory copy, so INSERT, UPDATE, DELETE and CREATE work and the table list refreshes, but the changes disappear when you reload or open another file. The tool does not offer a download of the edited copy. To change a file on disk, use the sqlite3 command-line shell or DB Browser for SQLite.
How large a database can I open?
Up to 100 MB. The whole file is held in memory twice while it is open — once as the file buffer and once inside the SQLite engine — so larger files make browser tabs unstable. For bigger databases run sqlite3 app.db locally.
Why does it say my file is not a SQLite database?
Every SQLite 3 file starts with the 16-byte header SQLite format 3. If that header is missing, the file is something else — or it is encrypted. SQLCipher and the SQLite Encryption Extension encrypt the header too, so encrypted databases cannot be opened here. Decrypt them with sqlcipher or open them in DB Browser for SQLite, which supports SQLCipher.
Recent rows are missing. Why?
The database is probably in WAL mode and the newest writes still sit in the app.db-wal file next to it. Only the main file is read. Close the application that writes to it, or run sqlite3 app.db "PRAGMA wal_checkpoint(TRUNCATE);", and open the file again.