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 $24.92 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 |
That is why comparing only the entry price misleads: what matters is what grows with your usage. The table summarizes the model differences; the prices are those on each provider's official pages, read on October 17, 2026.
Go deeperSupabase 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 | $4.99 a month | Unlimited | 9 GB (+$0.75/GB) | 2.5 billion (+$1 per billion) | 25 million (+$1 per million) | 10 days |
| Scaler | $24.92 a month | Unlimited | 24 GB (+$0.50/GB) | 100 billion (+$0.80 per billion) | 100 million (+$0.80 per million) | 30 days |
| Pro | $416.58 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.
Go deeperManaged database prices in 2026: Neon, Supabase, PlanetScale, Turso and Cloudflare D1
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": (4.99, 9, 2_500, 25, 0.75, 1.00, 1.00),
"Scaler": (24.92, 24, 100_000, 100, 0.50, 0.80, 0.80),
"Pro": (416.58, 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 · $24.92 | $25.50 (Micro) |
| Large | 40 GB | 30,000 million | 300 million | Scaler · $192.92 | $79 (Medium) |
With small workloads, Turso Free costs nothing and Supabase needs Pro because 2 GB exceeds Free's 500 MB. On the medium workload the prices almost coincide. On the large one, Turso's write billing dominates ($160 of the $192.92) 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.
Go deeperPostgreSQL: Find the Right Index with EXPLAIN
Documentation: SQLite: official documentation ↗
6. Keep your numbers current#
Plans and quotas change. The figures in this guide are those on the official pages on October 17, 2026; confirm the conditions 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.
Sources and scope
Documentation checked on October 17, 2026. Examples and decision criteria are editorial proposals; adapt them to your application's contract and validate them in an authorized test environment.