Workers KV opens up with a free tier and bigger values
Since Workers KV launched in May 2019, developers have used it to store key-value data and make that data globally accessible from Workers running across Cloudflare's network. Today, Cloudflare is making that storage tier available to everyone on the Workers platform at no cost, while also raising the maximum size for stored values from 10 MB to 25 MB.
The larger values open the door to serving bigger static files and JSON blobs directly from KV. Larger Workers Sites assets are also supported, since Workers Sites serves content from Workers KV.
Free tier details
Developers on the free tier get 100,000 read operations per day, plus 1,000 write, list, and delete operations each day. The quota resets daily at UTC 00:00, and requests beyond those limits fail with an error. Storage is limited to 1 GB total.
For workloads that go further, pricing is $0.50 per million read operations, $5.00 per million write, list, and delete operations, and $0.50 per GB of stored data. Those limits reflect the workloads where KV is a good fit: data that is updated infrequently but read often around the world.
How KV works
Workers KV stores key-value pairs and keeps hot keys cached in Cloudflare data centers. When a Worker accesses a recently used pair, it comes from the local cache with low latency. This makes KV a practical way to attach persistent state to stateless Workers code, whether for serving files or distributing configuration across Worker invocations.
A typical setup starts with binding a KV namespace to Worker code through Wrangler:
wrangler kv:namespace create "BUCKET"
The namespace ID is then referenced in wrangler.toml:
kv_namespaces = [
{binding = “BUCKET", id = <insert-id-here>}
]
Files can be uploaded from the command line with Wrangler:
$ wrangler kv:key put --binding=BUCKET "my-file" value.txt --path
Workers scripts can then serve that data from any Cloudflare point of presence:
addEventListener('fetch', event => {
event.respondWith(handleEvent(event))
})
async function handleEvent(event) {
let txt = await BUCKET.get("my-file")
return new Response(txt, {
headers: {
"content-type": "text/plain"
}
})
}
Beyond file hosting, developers have built a variety of applications on Workers KV:
- Mass redirects, handling billions of HTTP redirects.
- Access control rules that validate API requests.
- Translation keys for dynamically localizing pages.
- Configuration data for managing origin access.
Choosing between KV and Durable Objects
KV is designed for globally low-latency reads, but it may not serve the latest value when keys are updated more than once a minute or when writes come from multiple locations at the same time. Applications that can't accept stale data should instead use Durable Objects, which entered limited beta last month. Together, the two storage options are moving the Workers platform toward supporting globally deployed applications as easily as a single data center app.
The free tier and increased value size are live now, and developers can start using them in the Cloudflare dashboard. A tutorial in the Workers documentation shows a full KV example.



