{"rid":"databases-kv/cloudflare-kv","card":{"rid":"databases-kv/cloudflare-kv","eid":"cloudflare","topic":"databases-kv","slug":"cloudflare-kv","provider":"Cloudflare Workers KV","url":"https://developers.cloudflare.com/kv/platform/limits/","domain":"cloudflare.com","category":"edge key-value store","tier":null,"verdict":"qualifies-with-caveat","vorder":1,"grp":"usable","confidence":"documented","binding":"request-rate","identity_kind":"email","identity_basis":"stated","needs_card":0,"needs_phone":0,"needs_id":0,"needs_institution":0,"country":null,"crypto":null,"interfaces":"rest,cli","egress_metered":0,"per_object_bytes":null,"retention_days":null,"verified_at":"2026-10-22T03:05:00.000Z","verified_basis":"live","checked_on":"2026-10-23","stale_on":"2026-11-22","n_evidence":1,"usd_month":null,"usd_per_tb_month":null,"summary":"100,000 reads per day; 1,000 writes per day; 1 GB per account; 1,000 namespaces","duplicate_of":null,"n_unknown":1},"record":{"topic":"databases-kv","slug":"cloudflare-kv","provider":"Cloudflare Workers KV","url":"https://developers.cloudflare.com/kv/platform/limits/","category":"edge key-value store","free_tier":{"stated":"100,000 reads per day; 1,000 writes per day; 1 GB per account; 1,000 namespaces","unit":"requests","source_url":"https://developers.cloudflare.com/kv/platform/limits/","read_on":"2026-10-22","metered_on":"request-count"},"per_object_cap":{"stated":"25 MiB per value; 512 bytes per key","bytes":null,"source_url":"https://developers.cloudflare.com/kv/platform/limits/","notes":"keys per namespace are unlimited, so the value size is the object cap"},"retention":{"stated":"no expiry on a stored key unless the write sets one; the free tier does not delete","days":null,"source_url":"https://developers.cloudflare.com/kv/platform/limits/"},"egress":{"terms":"reads are counted, not metered by byte; no egress charge on any plan","metered":false,"free_allowance":null,"price_per_tb":null,"source_url":"https://developers.cloudflare.com/kv/platform/limits/"},"interface":["rest","cli"],"interface_detail":"a REST API and a Worker binding; access through wrangler","tooling":"wrangler kv; the Cloudflare API; a Worker binding in code","chaining":"a read cache in front of a free database: 100,000 reads a day is 100 times the write budget, which is the ratio that makes it a cache and not a store","limits":[{"kind":"request-rate","value":"1,000 writes per day to different keys","source":"https://developers.cloudflare.com/kv/platform/limits/"},{"kind":"request-rate","value":"1 write per second to the same key","source":"https://developers.cloudflare.com/kv/platform/limits/"},{"kind":"per-object-cap","value":"25 MiB per value; 1 GB per account","source":"https://developers.cloudflare.com/kv/platform/limits/"}],"limits_note":"100,000 reads per day are unlimited on the paid plan; the minimum cacheTtl is 30 seconds","binding":"request-rate","identity_cost":{"kind":"email","detail":"a Cloudflare account","country":null},"reliability_note":"no reliability event recorded","confidence":"documented","confidence_note":"the limits page was read today; no namespace was created.","evidence":[{"url":"https://developers.cloudflare.com/kv/platform/limits/","date":"2026-10-22","proved":"Free column: 100,000 reads/day, 1,000 writes/day to different keys, 1 write/second to the same key, 1,000 namespaces, 1 GB/account, 1 GB/namespace, 512-byte keys, 25 MiB values, 30-second minimum cacheTtl"}],"verdict":"qualifies-with-caveat","verified_at":"2026-10-22T03:05:00.000Z","price_per_tb_month":null,"notes":"The asymmetry is the finding: reads are plentiful and writes are not, by two orders of magnitude. Any design that treats KV as the store hits 1,000 writes a day and stops."},"claims":[{"path":"$.free_tier.stated","kind":"free-quota","num":1,"unit":"GB","per":null,"currency":null,"usd":null,"fx_date":null,"parse":"ok"},{"path":"$.limits[0].value","kind":"limit:request-rate","num":null,"unit":null,"per":null,"currency":null,"usd":null,"fx_date":null,"parse":"unparsed"},{"path":"$.limits[1].value","kind":"limit:request-rate","num":null,"unit":null,"per":null,"currency":null,"usd":null,"fx_date":null,"parse":"unparsed"},{"path":"$.limits[2].value","kind":"limit:per-object-cap","num":25,"unit":"MiB","per":null,"currency":null,"usd":null,"fx_date":null,"parse":"ok"}],"unknown":[["$.reliability_note","none-observed"]],"history":[],"drift":[]}