.sqlite ยท .sqlite .sqlite3 .db

What Metadata Is Inside a SQLite Database (.sqlite, .sqlite3, .db)

SQLite is the quiet workhorse behind phones and apps - it backs browser history, cookies, WhatsApp's message store, iOS Messages and the Photos library. What makes it distinctive is that it does not erase deleted rows: a database that shows nothing in the app can still hand back everything that was removed from it, straight out of the raw file.

Scan a SQLite file

What a .sqlite file reveals

The single most important thing a scan surfaces is recoverable deleted data. SQLite never wipes a deleted row - it just unlinks it and marks the page free, leaving the original bytes in place until something happens to overwrite them. The scan reads the header's free-page count and reports roughly how many kilobytes of deleted content are still sitting in the file. Only running VACUUM actually clears it, so a database that looks empty in the app is very often not.

It goes one step further with the AUTOINCREMENT counter. SQLite keeps a high-water mark in the hidden sqlite_sequence table - the largest row id it ever handed out - and never decrements it. By comparing that number against the rows still present, the scan counts how many records were deleted from a given table, for example "142 of 512 records removed". That count survives even a full VACUUM, after every other trace of the deletion is gone.

The scan recognises famous app schemas by their table names: Chrome/Chromium and Firefox browsing history, browser cookies, iOS Messages (sms.db), the WhatsApp message store, iOS cached locations, and the iOS Photos library. When it matches one, it tells you the database holds detailed personal activity - contacts, timestamps, URLs, coordinates - rather than making you infer it from the schema. It also flags individual tables whose column names suggest location, email, phone or credentials, with a live row count so empty tables are not false alarms.

From the fixed 100-byte header, readable without opening the database, it also reports the exact SQLite library version that last wrote the file, an Application ID some apps stamp to claim the file (GeoPackage, MBTiles, Fossil and others are named), reserved-page space that betrays an encryption or checksum extension, and whether the file uses write-ahead logging - which means the newest writes live in a separate -wal companion file that leaks independently. Saved views and triggers are dumped verbatim, because their hand-written SQL routinely embeds an address, share path or filter that appears in no table.

Key fields

Recoverable Deleted Data
Free-page count from the header, reported as an approximate KB of deleted rows still readable in the raw file until VACUUM clears them.
Deleted Rows (per table)
Compares a table's AUTOINCREMENT high-water mark against its surviving rows to count deletions - a figure that survives a full VACUUM.
Recognized Database
Matches known schemas: Chrome/Firefox history, browser cookies, iOS Messages, WhatsApp, iOS cached locations, and the iOS Photos library.
Sensitive Table
A table whose column names suggest location, email, phone or credentials, flagged only when it actually holds at least one row.
Journal Mode (WAL)
Write-ahead logging means recent writes sit in a separate -wal file that must be handled alongside the main database.
Written By
The exact SQLite library version that last wrote the file, narrowing down the source platform and its age.
Application ID
A four-byte tag some apps stamp into the header (GeoPackage, MBTiles, Fossil and others) naming the software that created it.
Reserved Page Space
Bytes reserved per page for an extension under SQLite (8 = checksum VFS; 4/12/32 = consistent with the Encryption Extension).
View / Trigger Definition
The verbatim SQL of a saved view or trigger, which often embeds a literal email, path or share that an author typed in.
Write Transactions / Schema Changes
The header's change counter and schema cookie, showing how heavily the file has been used and how often its structure was migrated.

This is a selection. The full field manual documents the fields read from each format.

Questions about SQLite metadata

Can deleted records really be recovered from a SQLite file?

Often, yes. Deleting a row in SQLite only marks its page as free; the bytes stay in the file until later writes happen to overwrite them. The scan reads the free-page count from the header and estimates how much deleted data remains. Running VACUUM on the database is what actually removes it - deleting inside the app does not.

What does the "deleted rows" count mean and why does it survive VACUUM?

Tables with AUTOINCREMENT record the highest id ever issued in a hidden table called sqlite_sequence, and that number is never lowered. Subtracting the rows that remain gives the number deleted. Because that counter is stored separately from the row data, a full VACUUM - which erases the free pages - leaves it untouched, so the deletion count remains after every other trace is gone.

Is opening a .db or .sqlite file here private?

Yes. The database is opened read-only by a WebAssembly build of SQLite that runs entirely inside your browser tab. The file is never uploaded, and the roughly 640 KB engine only loads when you actually open a database.

Why does it say a -wal file may be missing?

If the header shows write-ahead logging (WAL) mode, the most recent changes are kept in a companion file ending in -wal, not in the main database. If you were only handed the main .db, the newest writes are in a second file left behind - and that file is a separate copy of the data that leaks on its own.

It recognised my file as browser history or Messages - how?

The scan matches the set of table names against known app schemas (Chrome/Chromium urls and visits, Firefox moz_places, iOS Messages, WhatsApp msgstore, iOS Photos and others). A match just means the structure fits; you can open the database in any SQLite viewer to read the rows directly.

File X-Ray reads SQLite files entirely in your browser - the file never leaves your device. This format is inspected, not modified. Scan a file now.

All supported formats