Cloudflare KV Pricing (2026) — The Write Trap Explained
Workers KV is billed per operation, and the pricing is deliberately lopsided: writes cost 10x what reads do. That asymmetry is fine for read-heavy config and feature-flag workloads — and brutal for anyone who accidentally builds a write-heavy cache on KV. These are the exact rates and the traps.
Rates verified against Cloudflare's official docs · last checked April 2026
Cloudflare Workers KV pricing table
| Free plan | Paid plan ($5/mo Workers) | |
|---|---|---|
| Keys read | 100,000 / day | 10M / month included, then $0.50 per million |
| Keys written | 1,000 / day | 1M / month included, then $5.00 per million |
| Keys deleted | 1,000 / day | 1M / month included, then $5.00 per million |
| List requests | 1,000 / day | 1M / month included, then $5.00 per million |
| Stored data | 1 GB | 1 GB included, then $0.50 / GB-month |
// Free-tier limits reset daily at 00:00 UTC and are hard caps — exceeding them makes further operations of that type fail. There is no KV-only plan: KV is included in Workers Free/Paid.
What actually matters
Writes are 10x the price of reads
$5.00 vs $0.50 per million. KV is eventually consistent, so every write propagates globally — that's what you're paying for. Read-heavy workloads (config, flags, sessions) are what KV is priced for; write-heavy caching is not.
Deletes and lists cost the same as writes
$5.00 per million each. A job that writes a key, lists it, then deletes it pays three write-class operations. Batching and TTL expiry (which avoids explicit deletes) keep this down.
A KV loop is the #1 cause of Cloudflare bill shock
A misconfigured per-request write at 100K requests/day = 3M extra writes/month ≈ $10/month per loop — and loops rarely stop at 100K/day. This is exactly what FlareLog's cost burn alerts watch for.
Example: read-heavy config store (5M reads, 50K writes / month)
What people miss
- ▸Operations via the Cloudflare dashboard or wrangler count as billable usage — cleaning up keys manually isn't free.
- ▸Reads of non-existent keys (404/null) are still billed: the lookup traverses KV's infrastructure either way.
- ▸Bulk REST writes bill per key: one PUT with 5,000 pairs = 5,000 writes.
- ▸KV has no per-request cache-control — if you re-read the same hot key thousands of times per minute, cache it in the Worker's global scope or use the Cache API.
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 KV cost?
On the Paid plan: 10M reads/month included, then $0.50 per million reads. 1M writes/month included, then $5.00 per million writes (deletes and lists bill at the write rate). Storage is $0.50 per GB-month after the first 1 GB. The Free plan includes 100K reads/day and 1K writes/day with hard daily caps.
Why are KV writes so much more expensive than reads?
KV is an eventually consistent, globally replicated store. Every write propagates to Cloudflare's full edge network, while reads are served locally. The $5.00/M write price reflects that replication work. If your workload writes on most requests, D1 ($1.00/M rows written) or R2 may be a better fit.
Is KV more expensive than D1?
For reads, KV ($0.50/M) is much more expensive than D1 ($0.001/M rows read). For writes, KV ($5/M) is 5x D1 ($1/M rows written). But they solve different problems: KV gives sub-millisecond global edge reads with eventual consistency; D1 is a relational SQLite database with stronger consistency. Read-heavy, latency-sensitive lookups favor KV; queryable, write-heavy data favors D1.
How do I catch a runaway KV cost spike?
Cloudflare's usage dashboard lags 15–60 minutes, which is enough time for a loop to burn real money. A Tail Worker-based monitor like FlareLog sees every invocation's operations in real time and alerts you (Slack, Discord, email) the moment write rates exceed a threshold you set — before the invoice does.