SQLite Is Deployed in Over a Trillion Databases
Ask most developers which database engine runs on the most machines and you will hear PostgreSQL, MySQL, or whatever the cloud provider sells this quarter. The answer is SQLite, and it is not close. SQLite's own deployment page argues that the library is likely used more than all other database engines combined, with billions of copies in the wild and a reasonable estimate of over one trillion database files in active use today. The arithmetic behind that number is blunt: more than four billion smartphones are in service, and each one holds hundreds of SQLite files, which puts the count past one trillion before desktop machines, browsers, cars, and televisions are even considered.
The inventory on that page reads like a tour of everything with a chip inside it. SQLite is in every Android device, every iPhone and iPad, every Mac, and every Windows 10 and 11 installation. It is in Firefox, Chrome, and Safari, in Skype, in iTunes, in the Dropbox client, in TurboTax and QuickBooks, in PHP and Python, in most televisions and set top cable boxes, and in most automotive multimedia systems. None of those vendors advertise it, which is exactly why the number surprises people.
The technical choices that produced this footprint are the interesting part. SQLite is serverless and zero configuration: there is no daemon to start, no port to open, no connection string to negotiate, and no administrator to hire. The database is a single cross platform file that the application opens like any other file, and the engine runs inside the process that uses it. The project is also dedicated to the public domain rather than distributed under a traditional open source license, which means companies can embed it in shipped products without attribution or license compatibility work. Zero operational cost plus zero legal friction is a combination that spreads on its own.
Stability is the other half of the story, and it applies to your own code. SQLite has kept its on disk format stable for years, so a database file created more than a decade ago still opens in current builds. That guarantee is what makes it defensible to use SQLite as an application file format rather than just a scratch cache. If you build a desktop tool that stores projects in SQLite, you are signing up for a format that will outlive several rounds of framework churn, which is more than most serialization schemes can promise.
Counting devices understates the deployment as well. SQLite's page notes that the library is usually linked statically, so a single machine can carry dozens or hundreds of separate copies, one per application, while competitor libraries such as zlib tend to be shared once per system. On that basis the project's own guess is that it is the second most widely deployed software library in the world, behind zlib, and possibly the single most widely deployed software component of any kind once per process instances are counted. Nobody can measure this precisely, and the page says so, but the order of magnitude is not in dispute.
For working developers, that footprint creates an obligation that is easy to miss: the version of SQLite you get depends on who shipped it. On Android the bundled version changes with the operating system release, and older devices in the field can be years behind, so a query that relies on the newest window function syntax may pass on your test phone and fail on a user's. Browser vendors and operating system vendors all embed their own builds, so testing against the sqlite3 command line on your development machine proves very little about production. Write SQL that targets the oldest version you have to support, and check the version at runtime when a feature matters.
Most of the operational advice for SQLite follows from the same embedded design. Only one writer can hold the write lock at a time, so enable write ahead logging to let readers proceed during writes, set a busy timeout so short lived contention does not raise errors, wrap bulk inserts in a transaction instead of committing per row, and never leave a transaction open while waiting on a user interface event. These habits are boring, and they are the reason the engine stays reliable at the scale of trillions of files.
The trillion databases are mostly invisible, and that invisibility is the point. The most widely deployed database engine on earth opens no network port, speaks no wire protocol, and runs inside the process that needs it, one small file at a time.