Turso
A hosted SQLite platform billed by rows read and written, built for running many small databases.
What it actually does
Turso hosts SQLite (via its libSQL fork) as a managed service and bills primarily by rows read and rows written rather than by compute time. It is designed to run thousands of small databases, which makes a database-per-customer pattern practical.
For a solo founder it is the cheapest paid entry in this category at $4.99/mo, and the free tier's 5 GB of storage and 500M monthly row reads suit read-heavy apps like content sites. Embedded replicas let you keep a local copy at the edge for low-latency reads.
The limits are the SQLite dialect and the billing asymmetry. There are no Postgres extensions or stored procedures, and auth, file storage, and functions all need separate services. Reads bill per billion but writes bill per million, so write-heavy workloads such as analytics or logging get expensive, and a missing index that forces a full-table scan directly inflates the read count.
Turso vs its main rivals
The tools people actually weigh against Turso: Cloudflare D1, Neon, PlanetScale. Same criteria for every column, including where Turso loses.
Pricing & access | ||||
| Free tier | Unknown5 GB, 500M reads | Unknown5 GB, 150M reads | Unknown100 CU-h | UnknownNone |
| Starting price | $4.99/mo | $5/mo Workers | $0.106/CU-h | $5/mo |
| Billing model | Per row | Per row | Per CU-h | Per node |
Database engine | ||||
| SQLite / libSQL | YesYes | YesYes | NoPostgres | NoPG/MySQL |
| Extensions / stored procedures | NoNo | NoNo | YesYes | YesYes |
Scaling & limits | ||||
| Database-per-tenant at scale | YesUnlimited | UnknownCapped | UnknownPer-project | NoNo |
| Embedded / edge replicas | YesYes | YesEdge | NoNo | UnknownReplicas |
| Free storage | 5 GB | 5 GB | 0.5 GB | None |
Bundled services | ||||
| Bundled auth | NoNo | NoNo | UnknownBeta | NoNo |
Developer & API | ||||
| CLI | Free | Free | Free | Free |
Portability | ||||
| Self-host / open source | YeslibSQL OSS | NoNo | YesYes | NoNo |
- Cheapest paid entry in the category at $4.99/mo, and the free tier's 5 GB storage is unusually large
- Database-per-user patterns are practical: 100 free databases, unlimited on paid plans
- Row-based billing is predictable for read-heavy apps, with 500M free row reads on the free tier
- Writes bill per million rows while reads bill per billion, so write-heavy workloads like analytics get expensive fast
- SQLite dialect means no Postgres extensions and no stored procedures
- A missing index that forces a full-table scan inflates the row-read count directly
Pay less for it
5 ways found5 GB storage and 500M monthly row reads cover a lot of read-heavy traffic before you pay anything
Proper indexes stop full-table scans that would otherwise multiply your billed row reads
libSQL is open source, so you can run it on your own server and drop the hosted bill entirely
At $4.99/mo Developer covers most early apps; the next tier jumps to $24.92/mo
Cloudflare D1 — If your app already runs on Cloudflare Workers, D1 folds SQLite into the $5 Workers plan with no separate database bill
StackTracker tracks what you actually pay for Turso and every other tool, flags overpayment, and shows the dollars you would save by switching.
Is it the right tool for you
- Your app is read-heavy, like a content site or catalog
- You want a database-per-customer architecture without per-database cost
- You want the lowest possible monthly bill and are comfortable with SQLite
- Your workload is write-heavy, such as analytics or logging → use Neon
- You need Postgres extensions or stored procedures → use PlanetScale
Track what Turso and the rest of your stack cost
StackTracker adds up every subscription, plus your hours, so you see the real number.
Prices and limits last verified 2026-07-20.