Workers KV Instant is a new mode for Workers KV that replicates writes globally for immediate availability without cold read penalties. It keeps the Workers KV API but is backed by Quicksilver, Cloudflare's internal key-value store. The result: p99 reads more than 100 times faster than classic mode and updates that appear without waiting on a TTL.
Workers KV has been on the Developer Platform since 2018, and Quicksilver was introduced in 2020; every Cloudflare request looks up at least one Quicksilver key, but the store has never been exposed to customers until now. KV Instant targets data written occasionally and read frequently — flags and application configuration that must be available globally moments after a write. According to Cloudflare, reads resolve in under two milliseconds at p99, with p95 latencies in microseconds, and 99% of writes replicate in roughly 250ms, over 20 times faster than classic mode.
Mode | p99 reads (cached) | p99 reads (all) | median write replication | p95 write replication | p99 write replication |
Instant | N/A | 1.62 ms | 107 ms (1) | 181ms (1) | 256 ms (1) |
Classic | 160 ms | 287 ms | < 1 s (2, 3) | < 1 s (2, 3) | 4.38 s (2) |
Quicksilver v2 underpins KV Instant, providing the global replication and low-latency access properties the mode depends on.
API and behavioral differences
KV Instant accepts the same get(), put(), list() and delete() binding operations as classic Workers KV, so existing Workers code largely carries over. A typical use case is a homepage switch flipped during a keynote — a key read on every request at near-zero latency, updated the instant it changes.
async fetch(request, env, ctx) {
// Read the launch flag from KV Instant on every request
const launched = (await env.APP_CONFIG.get("new-product-launched")) === "true";
if (launched) {
// Serve the launch homepage
return new Response({...});
}
return new Response({...});
},
Three differences apply:
- A namespace must be created in Instant mode by passing
”mode”:“instant”. - Metadata is unsupported:
getWithMetadataalways returnsnull, andputcannot accept metadata. listreturns all matching keys in the namespace in a single page; there is no pagination.
Pricing trade-offs
Read pricing is 60% lower than classic Workers KV, because data is propagated to every Cloudflare location through the same Quicksilver store Cloudflare operates on its own hot path. Storage and Class A operations, by contrast, cost significantly more than classic mode, so large or frequently updated datasets remain a better fit for classic Workers KV. Billing has three dimensions: storage, Class A operations and Class B operations.
Class B operations (reads) | Class A operations (put, delete, list) | Storage | |
Workers KV Instant | $0.20 per million | $0.10 per operation | $100 per MB, per month |
Workers KV | $0.50 per million | $5.00 per million | $0.50 per GB, per month |
Storage costs $100 per MB per month. A key can be up to 300 bytes and a value can be any size as long as the namespace stays under one megabyte in total; namespaces hold up to 10,000 key-value pairs.
Class A operations (put, delete, list) cost $0.10 each. Every key written or deleted counts as one operation, and each list request counts as one operation regardless of how many keys come back — a single call can return the entire namespace. Because writes pass through one system of record, write frequency is limited to one write per namespace per second, echoing the classic per-key limit and making update ordering easier to reason about.
Class B operations (get) cost $0.20 per million keys requested, 60% below default-mode Workers KV. Requesting multiple keys in one call bills each key separately; the two approaches below are equivalent from a billing standpoint, both incurring three Class B operations.
// Requesting keys via three individual get operations
// incurs three Class B operations.
let routeAPAC = await APP_CONFIG.get("route_APAC");
let routeEUR = await APP_CONFIG.get("route_EUR");
let routeNAMER = await APP_CONFIG.get("route_NAMER");
// Requesting three keys in a single get operation
// also incurs three Class B operations.
let routes = await APP_CONFIG.get(["route_APAC", "route_EUR", "route_NAMER"]);
KV Instant is available today in private beta, and Cloudflare is accepting sign-ups as it works toward a wider release.



