/FOLIO ARD-083
AUDITED: 2026年10月·编辑部复核共识
DEEP MATRIX INSPECTION//DATABASE-STORAGE

Turso vs Cloudflare D1

Vector: Portable libSQL Fleet with Local Replicas vs Workers-Native Serverless SQLite
The 30-second verdict//FOLIO ARD-083
DEPLOYMENT ARCHETYPE
VERDICT

Choose Turso when you need thousands of mostly-idle databases, deployment inside your own cloud, or microsecond local reads at the edge. Choose Cloudflare D1 when you already run on Workers and want zero-ops SQLite with global read replication and no egress charges.

Turso rebuilt SQLite in Rust as libSQL and runs a platform where a single server manages millions of databases, loading them on demand and suspending them when idle — a shape built for per-tenant and per-agent fleets, optionally in the customer's own cloud. Cloudflare D1 is a managed serverless SQLite database reached from Workers or over an HTTP API, with read-only replicas placed globally and billing that stops when queries stop. The binding constraints differ: Turso is priced around fleet storage and sync volume, D1 is bounded by a 10 GB per-database ceiling that cannot be raised and by single-threaded execution inside each database.

TursoDistributed libSQL (SQLite fork) Platform

Ideal For: Per-tenant or per-agent database fleets, local-first reads on VMs/VPS/mobile, and teams that must deploy inside their own cloud.

Cloudflare D1Managed Serverless SQLite on Cloudflare Workers

Ideal For: Applications already on Workers that want zero-ops SQLite, global read replicas, and billing that stops when traffic stops.

Interactive Constraint Matcher

NORMALIZED WEIGHT: 100%

Calibrate your operational trade-offs below. Sliders automatically normalize to 100% to reflect strict zero-sum engineering tradeoffs.

Archetype Presets
Deployment Topology & Architectural Control35%

Portable fleet you can host yourself vs platform-managed serverless with hard per-database caps

Cost Model & Idle Economics35%

What a large fleet of mostly-idle databases costs, and how write volume is priced

Recovery & Durability Envelope15%

How far back you can restore, and whether recovery is throttled

Per-Database Concurrency & Operational Friction15%

Where each design stops scaling, and what the operator has to remember

DYNAMIC CONSTRAINTS VERDICTOPTIMAL RECOMMENDATION
Turso (Recommended)

Based on your allocated weights, Turso offers superior durability. Cloudflare D1 remains applicable for alternative secondary constraints.

Turso94%FIT
vs
Cloudflare D160%FIT
Evidence & trade-offs
Editorial review
Evaluation Pillar / FocusTurso (Qualitative Assessment)Cloudflare D1 (Qualitative Assessment)
Deployment Topology & Architectural Control

Portable fleet you can host yourself vs platform-managed serverless with hard per-database caps

Baseline Weight:30%
Can it run outside the vendor, and what is the single-database ceiling?:Structural difference
TursoRecommended

Turso rebuilt SQLite in Rust as libSQL and runs a platform where one server manages millions of databases, loading them on demand and suspending them when idle; databases can run on Turso Cloud or in the customer's own cloud (BYOC). Embedded replicas put a local read replica inside the application, so reads resolve from a local file.

Cloudflare D1Conditional

D1 is reachable both from Workers and over an HTTP API, and global read replication places read-only replicas across regions to cut read latency — so it is not Workers-only. But query execution and result serialization run inside the Workers platform CPU and memory limits, and each database is capped at 10 GB on the paid plan, a limit Cloudflare states cannot be further increased.

Cost Model & Idle Economics

What a large fleet of mostly-idle databases costs, and how write volume is priced

Baseline Weight:25%
Many idle databases vs sustained write throughput:Cost asymmetry
TursoRecommended

Idle databases cost only storage, so a large fleet of mostly-idle databases stays cheap; point-in-time restore and database branching add no usage cost, and per-unit overage rates drop as you scale. Paid tiers start at $4.99/month (Developer) with unlimited databases.

Cloudflare D1Conditional

D1 bills only on rows read, rows written and storage — there is no charge for idle compute and no data transfer or egress charge, and the paid plan includes 25 billion rows read per month. But writes are priced at $1.00 per million rows against $0.001 per million rows read, a roughly thousand-fold gap that makes write-heavy workloads expensive.

Recovery & Durability Envelope

How far back you can restore, and whether recovery is throttled

Baseline Weight:25%
Retention depth and restore throughput:Plan-dependent
TursoRecommended

Point-in-time restore depth scales with the plan — 1 day on Free, 3-day retention on Developer, 14-day on Scaler and 30-day on Pro — and restoring deleted databases is retained 10, 30 or 90 days. Restore operations are not billed as usage, so practising recovery does not raise the bill.

Cloudflare D1Conditional

D1 includes built-in disaster recovery and 30 days of Time Travel point-in-time recovery on the paid plan (7 days on Free), which is deeper than Turso's lower tiers. The constraint is throughput: at most 10 Time Travel restore operations per 10 minutes per database, which throttles fleet-wide recovery.

Per-Database Concurrency & Operational Friction

Where each design stops scaling, and what the operator has to remember

Baseline Weight:20%
Single-database throughput ceiling and known footguns:Documented limits
TursoConditional

Embedded replicas serve reads locally in microseconds and guarantee read-your-writes, but they cannot be used at all in serverless environments without a filesystem, and opening the local database while the replica is syncing can corrupt it. Sync volume is billed at 4 kB page-frame granularity, so a 1-byte row write counts as a 4 kB write.

Cloudflare D1Conditional

Each D1 database is inherently single-threaded and processes queries one at a time, so throughput tracks query duration — about 1,000 queries per second at 1 ms, about 10 per second at 100 ms. Additional ceilings: 1,000 queries per Worker invocation on the paid plan (50 on Free), 30 seconds maximum query duration, 2 MB maximum row or BLOB size, and 100 columns per table.

When NOT to choose it
Irreversible Architectural Risk

When You Should NOT Adopt Either System

Every architectural choice introduces structural compromises. If your team matches these trigger conditions, adoption will create engineering debt rather than leverage.

Do Not Choose TursoDisqualified
Trigger Condition: Procurement or compliance review requires a settled vendor structure and cannot accept a supplier that is mid-acquisition.
Systemic Failure State:Supabase announced on 2026-10-02 that it is acquiring Turso. The official statement says nothing changes for existing users — Supabase stays on Postgres and Turso stays on SQLite, and Turso continues operating — but the platform's long-term roadmap is now tied to Supabase's.
Recommended Alternative: Cloudflare D1 for a Workers-native fleet, or Neon if you want Postgres with branching (see the Supabase vs Neon matrix).
Do Not Choose Cloudflare D1Disqualified
Trigger Condition: A single database must absorb high write throughput or grow beyond 10 GB, and the workload cannot be sharded per tenant.
Systemic Failure State:The 10 GB per-database ceiling cannot be raised, every database is single-threaded (roughly 10 queries per second once queries take 100 ms), and writes cost $1.00 per million rows against $0.001 per million reads — so write-heavy traffic both stalls and gets expensive.
Recommended Alternative: Shard per user or per tenant, which is the pattern D1 itself is designed for; otherwise Turso, where the ceiling is a plan-level storage allowance rather than a per-database hard cap.
Verify Data Integrity Locally
npm run verify