D1 PRICING · OFFICIAL RATES

Cloudflare D1 Pricing (2026) — Rows Read, Rows Written, Storage

D1 is billed on rows scanned, rows written, and storage — not on queries, requests, or compute hours. The read allowance is enormous (25 billion rows/month included), which makes D1 effectively free at almost any indie scale. The cost risks are unindexed full-table scans and write-heavy workloads, not query volume.

Rates verified against Cloudflare's official docs · last checked April 2026

Cloudflare D1 pricing table

Workers FreeWorkers Paid ($5/mo)
Rows read5 million / day25 billion / month included, then $0.001 per million
Rows written100,000 / day50 million / month included, then $1.00 per million
Storage5 GB total5 GB included, then $0.75 / GB-month
Compute / idle cost$0$0 (scale to zero — no query, no bill)

// Rows read counts every row a query scans, not just what it returns — a full table scan of 50,000 rows bills 50,000 rows read even if the query returns one. Indexes cut rows read but each indexed write touches an extra written row.

What actually matters

25 billion included reads is effectively unlimited at indie scale

$0.001 per million overage means you'd need 25 billion+ rows scanned monthly — roughly 9,600 rows scanned every second, all month — before paying a cent of read overage.

Unindexed queries are the real cost driver

A SELECT filtering on an unindexed column scans the whole table. At scale this burns both your read allowance and your latency. Defining an index on a filtered column is the single highest-leverage thing you can do.

Writes cost 1,000x reads per row

$1.00 vs $0.001 per million. The included 50M writes/month cover most apps, but high-churn write paths (per-event audit logs, counters, analytics) should batch or denormalize.

Example: typical SaaS (2M rows read, 200K rows written / month)

Workers Paid base$5.00
Reads: 2M ≪ 25B included$0.00
Writes: 200K ≪ 50M included$0.00
Storage: < 5 GB$0.00
Total$5.00 / month (D1 usage fully covered)

What people miss

  • Row size doesn't matter: a 100 KB row and a 100 byte row each count as one row. Wide blobs belong in R2 with a pointer in D1.
  • DDL (CREATE, ALTER, DROP) can bill as a mix of reads and writes.
  • Indexes add one extra written row per indexed-column write — usually worth it for the scan reduction, but worth knowing on write-heavy tables.
  • Free-tier limits reset daily at 00:00 UTC; exceeding them makes further queries fail until reset.

Model your own bill

Plug your monthly volumes into the free calculator and see the total across Workers, KV, R2, D1, and Queues. Then let FlareLog watch the real thing: real-time cost burn alerts fire the moment a loop or spike starts inflating your bill — hours before Cloudflare's 15–60 minute dashboards catch up.

FAQ

How much does Cloudflare D1 cost?

On Workers Paid: 25 billion rows read and 50 million rows written per month are included, then $0.001 per million rows read and $1.00 per million rows written. Storage is $0.75 per GB-month after 5 GB. There is no compute or idle charge — D1 scales to zero. The Workers Free plan includes 5M rows read/day and 100K rows written/day.

What counts as a 'row read' in D1?

Every row a query scans, regardless of what it returns. A full table scan over 10,000 rows bills 10,000 rows read even if the WHERE clause matches one row. Queries that filter on an indexed column scan only the matching subset, which is why indexing directly reduces your bill (and your latency).

Is D1 cheaper than KV?

Per operation, D1 is far cheaper: rows read at $0.001/M vs KV reads at $0.50/M, and rows written at $1.00/M vs KV writes at $5.00/M. But D1 is a relational database with SQLite semantics, while KV is a globally replicated key-value store with sub-millisecond edge reads. Use D1 for queryable application data; use KV for low-latency global lookups of small values.

How do I see my D1 usage?

Cloudflare's dashboard shows row metrics per database (Metrics → Row Metrics), via the meta object on query results, or through the GraphQL Analytics API. The dashboard lags real traffic by 15–60 minutes; FlareLog's Tail Worker correlates every Worker invocation's D1 costs in real time and alerts on spend anomalies.

More Cloudflare pricing guides