Cloudflare explains how D1 handles millions of databases without query slowdown
Cloudflare details D1's control plane architecture: one SQLite Durable Object per database, Hyperdrive and Workers KV to avoid bottlenecks.
UptimeMag editorial team · 14 October 2026 · 2 min read

On 13 October 2026, Cloudflare published a technical deep-dive into how it redesigned the control plane for D1, its managed database service built on SQLite, to support platforms that create one database per user, tenant, or development environment. The topic concerns anyone managing multi-tenant infrastructure or SaaS: the "one database per customer" model is becoming standard with vibe coding platforms and AI agents that generate apps on demand, and hosting providers will need to contend with this pattern.
Cloudflare provided some growth figures: active, non-deleted databases on D1 increased 15-fold in the past year and 65-fold over the past two years, with data current as of 8 October 2026; daily active databases—those with at least one query executed—grew 18-fold in the past year.
How the control plane works
Each D1 database is backed by a single Durable Object running SQLite, the same storage primitive Cloudflare offers to developers. To prevent every query from hitting a central database, Cloudflare uses Workers KV as a distributed cache for routing metadata, so cache-hit requests never touch Postgres. For CRUD operations (create, delete, list) that must query the central Postgres cluster, Hyperdrive is used with connection pooling, routing reads to dedicated replicas and writes to the primary.
A create command via Wrangler (wrangler d1 create) takes approximately 1.6 seconds end-to-end, according to Cloudflare's example: in that interval the system verifies account limits, generates a unique ID for the Durable Object, initialises it, writes the metadata row to Postgres, and updates the mapping in Workers KV.
The numbers that matter to paying customers
The D1 free tier remains, as of 13 October 2026, at 5 million rows read per day, 100,000 rows written per day, and 5 GB total storage, with reset at 00:00 UTC.
| Item | Free Plan | Paid Plan |
|---|---|---|
| Rows read | 5 million / day | 25 billion / month included, then $0.001 / million |
| Rows written | 100,000 / day | 50 million / month included, then $1.00 / million |
| Storage | 5 GB total | 5 GB included, then $0.75 / GB-month |
Source: Cloudflare's official D1 pricing page (developers.cloudflare.com/d1/platform/pricing).
On the structural limits front, a single account can host up to 50,000 separate databases, each up to 10 GB in size, according to Cloudflare's official product page. There are no data egress charges or premiums for global read replicas.
Written with the help of artificial intelligence and checked by the editors (EU AI Act, art. 50).