SQLite
| License | FOSS problems | Maintenance | SSO | Users | Tested |
|---|---|---|---|---|---|
| Public DomainPublic domain license. No rights reserved — copyright is waived entirely. No conditions, no attribution required, use it however you want. | — | Active | — | Unlimited | ❌ |
Evaluation
What it is
SQLite is a self-contained, serverless, file-based database — the entire engine is a library linked into the application, and the whole database is one file rather than something separate that needs to be run and pointed at. It's the most widely deployed database engine in the world by unit count, embedded in browsers, phones, and a huge share of software that never advertises using a database at all.
Why it could be useful
For anything with one process writing to it, it's dramatically simpler than running Postgres or MySQL alongside a service — no separate container, no connection string, no network hop, just a file sitting next to the app's other data. It's also public domain, not merely permissively licensed — there's no license to comply with at all.
It's caught up on the concerns that used to rule it out beyond a toy, too. WAL mode gives real concurrent-read performance, STRICT tables (3.37+) added genuine type enforcement instead of SQLite's historically loose typing, and tools like Litestream and LiteFS turn "a file on disk" into continuously replicated, restorable state without a database server to manage. Forks like Turso's libSQL push further into multi-writer, edge-replicated territory that used to be exactly the thing SQLite couldn't do.
Why not to go for it
Still fundamentally one-writer-at-a-time under the hood — WAL mode helps concurrent reads a lot and takes the edge off light concurrent writes, but it's not a real substitute for Postgres under genuine multi-writer load. And being a file next to the app ties its backup story to wherever that file happens to live; it doesn't have Postgres's decades of tooling around replication, connection pooling, and point-in-time recovery at real scale. The right choice for anything genuinely single-writer, not the default once multiple services need to hit the same data at once.