Backend & data
Turso vs Supabase: pricing, billing model and which to choose
Turso and Supabase compared by billing model, monthly rates reviewed in November 2026 and three calculated workloads with reproducible code.
In this article
They do not charge the same way: Turso bills rows read and written, Supabase bills plan, compute and disk; for a 12 GB workload with 4,000 million reads, Turso Scaler costs $29 and Supabase Pro about $25.50.
1. Two different models, not two comparable prices#
Turso and Supabase solve the managed database problem with different ideas. Turso offers SQLite-compatible databases and charges per rows read and written plus storage. Supabase offers PostgreSQL with authentication, files and functions, and charges a monthly plan plus project compute, disk and egress.
| Aspect | Turso | Supabase |
|---|---|---|
| Engine | SQLite-compatible | PostgreSQL |
| How it charges | Monthly plan plus rows read and written and storage | Monthly plan plus project compute, disk and egress |
| Unit that grows with your use | Rows read and written | Instance size, disk and egress |
| Several databases | 100 on Free; unlimited on paid plans | One project per database; Free allows 2 active |
| Also includes | Lightweight databases and reads close to the user | Authentication, file storage and functions |
| Restore | PITR of 1 to 90 days depending on the plan | Daily backups on Pro; PITR as a paid add-on |
The table compares what grows with usage, using rates checked on November 4, 2026. Turso amounts use monthly billing; annual equivalents are explained separately.
Supabase Free vs Pro: differences, limits and when to upgrade
Documentation: Turso: pricing · Supabase: pricing and plans
2. Turso's plans#
Turso has four plans with included quotas and an overage price per unit. Paid plans allow an unlimited number of databases. Prices are in dollars per month.
| Plan | Price | Databases | Storage | Rows read | Rows written | Restore (PITR) |
|---|---|---|---|---|---|---|
| Free | $0 | 100 | 5 GB | 500 million | 10 million | 1 day |
| Developer | $5.99 a month | Unlimited | 9 GB (+$0.75/GB) | 2.5 billion (+$1 per billion) | 25 million (+$1 per million) | 10 days |
| Scaler | $29 a month | Unlimited | 24 GB (+$0.50/GB) | 100 billion (+$0.80 per billion) | 100 million (+$0.80 per million) | 30 days |
| Pro | $499 a month | Unlimited | 50 GB (+$0.45/GB) | 250 billion (+$0.75 per billion) | 250 million (+$0.75 per million) | 90 days |
Supabase prices are in the Supabase pricing guide and in the Free vs Pro comparison. In short: Free costs nothing with 500 MB and 2 active projects; Pro starts at $25 a month with $10 of compute credits and 8 GB included.
Managed database prices in 2026: Neon, Supabase, PlanetScale, Turso, Cloudflare D1 and Layerbase
Documentation: Turso: pricing
3. Three calculated workloads#
To see how each model behaves, the code calculates the best Turso plan and the Supabase Pro cost for three workloads. It is an estimate: Supabase does not bill per row but its capacity depends on compute, and Turso does not reserve compute. The large example includes $50 extra compute (a Medium instance).
TURSO = { # plan: (base, GB incl., reads incl. in M, writes incl. in M, USD/GB extra, USD per 1,000 M extra reads, USD per M extra writes)
"Free": (0.00, 5, 500, 10, None, None, None),
"Developer": (5.99, 9, 2_500, 25, 0.75, 1.00, 1.00),
"Scaler": (29, 24, 100_000, 100, 0.50, 0.80, 0.80),
"Pro": (499, 50, 250_000, 250, 0.45, 0.75, 0.75),
}
def turso_cost(gb, reads_m, writes_m):
best = None
for plan, (base, gb_inc, read_inc, write_inc, r_gb, r_read, r_write) in TURSO.items():
if r_gb is None: # Free: only if it fits within what is included
if gb > gb_inc or reads_m > read_inc or writes_m > write_inc:
continue
total = base
else:
total = (base + max(0, gb - gb_inc) * r_gb
+ max(0, reads_m - read_inc) / 1_000 * r_read
+ max(0, writes_m - write_inc) * r_write)
if best is None or total < best[1]:
best = (plan, total)
return best
def supabase_pro_cost(gb, extra_compute=0.0):
return 25.0 + extra_compute + max(0, gb - 8) * 0.125
workloads = [("Small", 2, 200, 5, 0.0), ("Medium", 12, 4_000, 60, 0.0), ("Large", 40, 30_000, 300, 50.0)]
for name, gb, reads_m, writes_m, extra_compute in workloads:
plan, total = turso_cost(gb, reads_m, writes_m)
print(f"{name}: Turso {plan} {total:,.2f} | Supabase Pro {supabase_pro_cost(gb, extra_compute):,.2f}")| Workload | Storage | Reads per month | Writes per month | Turso (best plan) | Supabase Pro |
|---|---|---|---|---|---|
| Small | 2 GB | 200 million | 5 million | Free · $0 | $25 (Micro) |
| Medium | 12 GB | 4,000 million | 60 million | Scaler · $29 | $25.50 (Micro) |
| Large | 40 GB | 30,000 million | 300 million | Scaler · $197 | $79 (Medium) |
With small workloads, Turso Free costs nothing and Supabase needs Pro because 2 GB exceeds Free's 500 MB. For the medium workload, Turso costs $29 versus $25.50 for Supabase. On the large one, Turso's write billing dominates ($160 of the $197) while Supabase Pro with Medium compute comes to $79: there, the capacity you need weighs more than the per-row price.
4. Which to choose for your case#
There is no overall winner. The table turns the criteria into decisions.
| If your case is… | Look first at | Usually fits |
|---|---|---|
| You need PostgreSQL, extensions or built-in authentication | The engine and what comes included | Supabase |
| Many small databases (per customer or per tenant) | The database limit and per-row billing | Turso |
| Very high reads with moderate writes | The price per billion rows read | Turso |
| Predictable load and advanced SQL | A fixed plan with reserved compute | Supabase |
| Zero-cost prototype | The free plan's limits for each | Either one; compare 500 MB and 5 GB |
Before deciding, estimate your rows read and written per month: it is the figure that changes Turso's cost the most. For Supabase, estimate disk size and compute.
5. If you migrate between them#
Moving from SQLite to PostgreSQL (or the reverse) is not just changing the connection string.
- Data types: PostgreSQL is strict about types; SQLite is more flexible. Review dates, booleans and large integers.
- Functions and extensions: anything that depends on PostgreSQL extensions does not exist in SQLite.
- Concurrency and transactions: locking models differ; test your concurrent writes.
- Tools and ORM: confirm your ORM supports both dialects and test migrations in a staging environment.
PostgreSQL: Find the Right Index with EXPLAIN
Documentation: SQLite: official documentation
6. Keep your numbers current#
Monthly rates were checked on November 4, 2026. Confirm your account’s conditions and size compute for your workload before deciding.
- Note the date you read each rate.
- Measure your real rows read and written for a month before choosing a Turso plan.
- Compare more options in Codifly's database comparator.
Monthly billing versus annual equivalent#
Turso defaults to annual billing: Developer is equivalent to $4.99/month and Scaler to $24.92/month with that commitment. Monthly billing is $5.99 and $29; monthly Pro is $499. This guide’s tables and scenario code use monthly billing to compare it with other monthly plans.
Documentation: Turso · pricing and billing period