Skip to main content
Develop Tools
← Return to usage guide

How to View SQLite Database Files Without Installing Software

The `.db` extension alone does not prove a file is SQLite. Check the leading header, and if it is standard SQLite 3, inspect the schema and rows sequentially with the browser's read-only engine.

Flow for checking a SQLite DB file Header, then proceeding to Tables, Schema, and Rows
Flow for checking a SQLite DB file Header, then proceeding to Tables, Schema, and Rows

Inspect SQLite 3 files in read-only mode

Select one standard SQLite 3 Main DB and inspect Tables, Schema, and Rows in Browser Memory. DB Binaries and displayed content are not sent to or stored on the DevelopTools Server.

Open SQLite DB files in the browser

Conclusion: Determine file format and tool support before opening it

Load one copy of the original file and inspect the SQLite 3 header, table count, view count, schema, and rows. Supported files are standard SQLite 3; this is not a tool for opening every `.db` file or server-type DB.

WAL Sidecar, SQLCipher, and corruption repair are unsupported. Only information available from the Main DB alone is displayed.

Check with a minimal example

example.db
SQLite format 3\0
  ├─ users
  ├─ orders
  └─ user_summary (view)

After the header matches, read the table and view list, select the target object, and proceed to schema and rows.

Fastest steps to open a SQLite DB

  • Prepare a copy for investigation
  • Select or drop a file
  • Check successful loading and the number of tables and views.
  • View column definitions in the Schema Tab.
  • Search, sort, and paginate in the Data tab

Check the SQLite 3 file header rather than the extension

Offset 0, 16 bytes
SQLite format 3\0

Hex
53 51 4C 69 74 65 20 66 6F 72 6D 61 74 20 33 00

`.db` is a generic extension. The current viewer checks the first 16 bytes rather than the file name and passes only files matching the standard SQLite 3 header to sql.js. It does not open 0-byte files, text files renamed to `.db`, or encrypted files whose headers are not plaintext as standard SQLite.

FilejudgmentNext check
SQLite format 3 Header presentStandard SQLite 3 candidatesOpen with the engine and read the schema
No headerPossibilities such as non-SQLite format, encryption, or corruptionCheck the source, format, and encryption
dump.sqlSQL Text ScriptCheck as Text with SQL Formatter or similar tools.
MySQL/PostgreSQL BackupA format other than SQLiteUse the tool for the supported database product

Check Table, Schema, and Rows in sequence

  • After loading a file, check the file name, file size, number of tables, and number of views.
  • Select a table or view on the left, then first use the Schema tab to inspect column names, declared types, NOT NULL, defaults, primary keys, and CREATE SQL.
  • Use full-column search, column-header sorting, and paging from 25 to 200 rows in the Data tab, displaying only the rows needed.
  • To examine indexes and foreign keys, individually run PRAGMA index_list(table), PRAGMA index_info(index), and PRAGMA foreign_key_list(table) in the read-only SQL field.
  • To examine indexes, triggers, and views together, SELECT from sqlite_schema. Do not state that a dedicated object tree exists.
SELECT type, name, tbl_name, sql
FROM sqlite_schema
WHERE type IN ('table', 'index', 'view', 'trigger')
ORDER BY type, name;

Table names, column names, and values are rendered as Text on the screen. Even if `<script>` is included as a Database Value, it is not executed as HTML.

Consider the WAL Mode Main DB, -wal, and -shm separately

In WAL Mode, uncheckpointed changes may remain in `app.db-wal`. `-wal` may be part of the Database State, not an old Backup. `-shm` is the Shared-memory File for the WAL Index. Copying only the Main DB from a running Application may make the latest Rows unavailable or result in an inconsistent Snapshot.

app.db       Main database
app.db-wal   Write-ahead log
app.db-shm   Shared-memory / WAL index
  • The current viewer loads only one main DB and does not apply -wal or -shm.
  • The viewer does not restore missing rows or merge -wal into the main DB.
  • Safely stop the source application, or create a consistent copy using SQLite's backup mechanism.
  • We do not provide instructions for deleting -wal alone. Preserve the original file and verify the originating system's operation.

Do not confuse declared types, storage classes, and BLOBs

Storage ClassmeaningHow it appears in the current viewer
NULLvalue does not existExplicitly indicate NULL.
INTEGERSigned IntegerDisplay as a numeric string
REALFloating-point NumberDisplay as a numeric string
TEXTText in database encodingDisplay as Text
BLOBInput binary dataDisplay only the length as [BLOB n bytes].
Value stateSQL exampleHow it appears in the current viewer
NULLNULLExplicitly indicate NULL. No value exists.
Empty string''An empty TEXT cell. This is different from NULL.
0byte BLOBX''[BLOB 0 bytes]. This is different from NULL.
BLOB with contentsX'89504E47'[BLOB 4 bytes]. Display only the binary length.

The “type” in the Schema Tab is the Declared Type. The current Viewer does not display `typeof(value)` or Affinity for each Value, so explicitly use `typeof(column)` in Read-only SQL when the Actual Storage Class is needed. Empty strings, NULL, and 0-byte BLOBs are not the same kind of “empty.” There are also no dedicated Boolean or Date Storage Classes; interpret values such as 0/1, TEXT, Unix Timestamp, and Julian Day from the Schema and Application specification.

SELECT
  value,
  typeof(value) AS storage_class,
  length(value) AS value_length,
  quote(value) AS sql_literal
FROM sample
LIMIT 100;

Do not conclude a BLOB is garbled TEXT. The current viewer shows only byte length and does not identify images, generate hex dumps, or download data.

What you can check with the current SQL DB file viewer

CategoryFeaturesCurrent boundary
InputSelect one .db, .sqlite, or .sqlite3 file, or drag and drop it.SQL Scripts, server-type DBs, multiple Files, and URL retrieval are not supported.
Format detectionCheck for SQLite format 3\0 in the first 16 bytesHeader fields such as Page Size and Text Encoding are not displayed separately.
EngineLoad into Memory using sql.js and WebAssembly placed within the site.SQLCipher, DuckDB, Access, and MySQL/PostgreSQL Data Files are not supported.
ObjectList and search User Tables and Views by nameThere is no dedicated list for indexes and triggers. If needed, inspect sqlite_schema with read-only SQL
SchemaColumn names, Declared Type, NOT NULL, Default, Primary Key from PRAGMA table_info, and CREATE SQLThere are no dedicated Tabs for Type Affinity, Actual Storage Class, or Foreign Key / Index
RowsSearch all columns, database-side sorting, pagination of 25, 50, 100, or 200 rows, and column width adjustmentColumn filtering, virtual scrolling, and export are not supported
ValuesDisplay NULL as NULL, empty strings as blank, and BLOBs as [BLOB n bytes] with their Byte Length.Hex, image preview, BLOB download, and actual typeof display are unsupported
SQLSELECT, WITH, EXPLAIN, permitted Read-only PRAGMA, and a maximum of 1,000 result rowsINSERT, UPDATE, DELETE, DROP, ALTER, quick_check, and integrity_check cannot be executed
SidecarLoad only the main SQLite fileSimultaneous loading or merging of -wal and -shm is not supported.

Do not conclusively identify causes based on features absent from the screen. The current viewer cannot apply WAL, decrypt data, repair corruption, preview BLOBs, or perform integrity checks.

Boundaries of Read-only, Browser processing, and Privacy

File binary, file names, tables, columns, rows, BLOBs, search terms, and SQL queries are processed in browser memory, and the viewer itself has no fetch, sendBeacon, or localStorage persistence. sql.js JavaScript and WASM are also loaded from the same origin within the site. Database content is not restored after reloading the page.

Set `PRAGMA query_only = ON` immediately after opening a database, and allow only SELECT, WITH, EXPLAIN, and limited PRAGMA statements in the UI. However, avoid claiming that there is absolutely no network traffic, including browser, extension, site-wide advertising or analytics, and organizational networks. Databases may contain tokens, sessions, and personal information, so prioritize organizational policy.

The Viewer does not repair, update, or Export the original File. Use a Copy for investigation and preserve the original File.

For large databases, measure file loading, queries, and DOM rendering separately

sql.js loads a Database File as a Uint8Array into Browser Memory and also handles it in WebAssembly. Screen Paging adds LIMIT/OFFSET to SELECT to limit DOM rows, but it does not stream-read the entire File. Even without a fixed File Size limit in the UI, Browser, device Memory, and WASM have practical limits.

  • Open copies of the original file starting with small sizes such as 1 MB and 10 MB, and measure load time and memory.
  • First inspect only tables and schemas, then page data in 25–200 rows.
  • Searching all columns casts each column to TEXT and uses LIKE, which can be costly for large tables.
  • Column sorting and read-only SQL are executed by SQLite. Check the indexes, query plan, and data types.
  • Do not state that files of several GB or millions of rows will always open comfortably.

Troubleshooting when it cannot be opened or appears corrupted

SymptomMain candidatesWhat the current viewer can do
Not SQLite 3 formatDifferent format, encryption, 0-byte file, or damaged headerUp to rejection by magic header
file is not a databaseDifferent format, SQLCipher, wrong file, or corruptionCheck the source and header. Do not decrypt it
database disk image is malformedCorruption of pages, B-trees, or similar structuresDo not repair automatically. Inspect the copy in an external SQLite environment
The latest row is missingWAL not applied, inconsistent Copy, different FileDisplay only the contents of the main database
database is lockedRunning processes, transactions, and retrieval methodsThe Memory Copy viewer itself does not operate the original file lock
Appears blankEmpty string, NULL, and 0-byte BLOBDisplay NULL and BLOB explicitly, and distinguish them from empty strings.
Cannot read BLOBBinary DataDisplay byte length

The current UI does not allow `PRAGMA quick_check` or `PRAGMA integrity_check`. If corruption is suspected, do not write to the original file; make a copy and inspect it in a managed environment such as the official SQLite CLI. Output repair results to a separate file and retain the original.

Proceed to the next check in DevelopTools

Viewing CSV data, formatting SQL text, converting Unix time, comparing binary equality, and diffing schema text serve different purposes. This does not claim to compare SQLite database contents or perform backup or repair.

Check primary SQLite, sql.js, and SQLCipher sources.

Prioritize official SQLite documentation for database headers, schema tables, storage classes, WAL, and PRAGMA; official sql.js documentation for the browser engine actually in use; and the SQLCipher provider's documentation for encrypted databases. Use community articles only to supplement search intent and practical examples.

Summary

  • Check the SQLite format 3 Header.
  • Review in the order of Table, Schema, and Rows
  • Treat it as read-only in browser memory without changing the original file

Check file signature, schema, rows, sidecars, and storage classes in order, and treat standard SQLite viewing, encryption, corruption, backup, and repair as separate tasks to avoid speculative file operations.

Example: Check how to open an SQLite .db file and view its contents

Without overwriting the original file, create an investigation copy and inspect: "example.db / SQLite format 3\0 / ├─ users / ├─ orders / └─ user_summary (view)".

After the header matches, read the table and view list, select the target object, and proceed to schema and rows. Compare the viewer result with the source application and the official SQLite specification to determine the cause.

  1. Record the source, File name, File Size, acquisition date and time, and whether same-named -wal and -shm files exist.
  2. Preserve the original File and load one Copy of the standard SQLite 3 Main DB.
  3. First check the Table/View count, Schema, CREATE SQL, NULL, and BLOB.
  4. Open data with a small page size first, then use search, sorting, and read-only SQL only as needed.
  5. Separate encryption, corruption, WAL, and large-capacity issues from unsupported viewer scenarios before deciding the next work.

Do not perform Repair or deletion based only on Viewer results. Preserve the original File and Sidecar, and perform changes on a separate Copy in a managed SQLite environment.

Frequently asked questions

Can all .db files be opened?
Cannot open. The current Viewer supports only standard SQLite 3 files with a SQLite format 3 header at the beginning. SQLCipher, Access, DuckDB, MySQL/PostgreSQL data files, and proprietary Formats are not supported.
Can -wal and -shm also be loaded together?
It cannot be loaded. Only one Main DB is handled. For a Database in WAL Mode, safely stop the source or prepare a consistent Snapshot using SQLite's Backup mechanism.
Can the database be repaired or BLOBs saved as images?
No. quick_check, integrity_check, automatic Repair, and BLOB Preview, Hex, and Download are unsupported. BLOBs display only Byte Length.