One file, byte-stable since 2004
A SQLite database is a single file with a well-defined, stable, cross-platform binary format. The format has been stable since version 3.0.0 (2004) and is committed by the SQLite team to remain compatible through at least 2050. A file created on macOS opens identically on Windows, Linux, a Raspberry Pi, or an Android phone — byte for byte.
Common extensions are .db, .sqlite, .sqlite3 — but any extension works. SQLite does not care about filenames; it inspects the file header to identify itself.
When you turn on WAL (Write-Ahead Logging) mode — which you almost always should for any concurrent workload — you'll see two side-files alongside your database:
myapp.db-wal— the Write-Ahead Log, containing recent changes not yet checkpointed into the main file.myapp.db-shm— a shared memory file used to coordinate concurrent readers.
These files are managed automatically by SQLite. When the last connection closes cleanly they are typically removed. Always copy all three files together when backing up a WAL-mode database, or use the official .backup command which serializes a consistent snapshot.
cp of a WAL-mode database while writers are active can produce a corrupt copy. Use sqlite3 source.db ".backup target.db" or the C-level sqlite3_backup API. Cron + cp is a classic source of "my backups silently corrupted for two years" stories.