Cloudflare Docs
Workers
Workers
Visit Workers on GitHub
Set theme to dark (⇧+D)

Storage options guide

The Cloudflare Workers platform provides multiple storage options. This guide will inform you on which storage option is appropriate based on your project’s use case.

​​ KV

Workers KV is an eventually consistent key-value data store that caches on the edge.

It is ideal for projects that require:

  • High volumes of reads and/or repeated reads to the same keys.
  • Per-object time-to-live (TTL).
  • Asset storage for websites.

To get started with KV:

​​ R2

R2 is S3-compatible blob storage that allows developers to store large amounts of unstructured data without egress fees associated with typical cloud storage services.

It is ideal for projects that require:

  • Storage for files which are infrequently accessed.
  • Large object storage.
  • Strong consistency per object.

To get started with R2:

​​ Durable Objects

Durable Objects provide low-latency coordination and consistent storage for the Workers platform through global uniqueness and a transactional storage API.

  • Global Uniqueness guarantees that there will be a single instance of a Durable Object class with a given ID running at once, across the world. Requests for a Durable Object ID are routed by the Workers runtime to the Cloudflare data center that owns the Durable Object.

  • The transactional storage API provides strongly consistent key-value storage to the Durable Object. Each Object can only read and modify keys associated with that Object. Execution of a Durable Object is single-threaded, but multiple request events may still be processed out-of-order from how they arrived at the Object.

It is ideal for projects that require:

  • Real-time collaboration (such as a chat application or a game server).
  • Consistent storage.
  • Data locality.

To get started with Durable Objects:

​​ Comparison

Feature KV R2 DO
Maximum storage per account Unlimited1 Unlimited 50 GiB
Storage grouping name2 Namespace Bucket Durable Object
Groups per account 100 1,000 Unlimited
Maximum keys per grouping Unlimited Unlimited Unlimited
Maximum key size 512 bytes 1,024 bytes 2,048 bytes
Maximum metadata per key 1,024 bytes 2,048 bytes N/A
Maximum size per value 25 MiB 5 TiB 128 KiB per value
Consistency model Eventual Strong Transactional for multiple keys in a single DO
Cached Always Programatically using the Worker Cache API or configure a custom public bucket domain. Possible when using Cache API
S3-compatible API No Yes No
TTL expiration Object-level Not currently available Not automatic, but possible using alarms
Maximum operations per second Unlimited cached reads 10,000+ reads/s per bucket, 1,000+ writes/s per bucket3 150 requests/second per DO3

1Free accounts are limited to 1GiB. 2A Durable Object namespace is a logical container for as many Durable Objects as you need and is backed by a class implementing the logic all those Durable Objects will share. 3Performance may depend on the specific data access patterns of your application and may be lower or higher depending on your specific application.

You can request adjustments to limits that conflict with your project goals by contacting Cloudflare. To increase a limit, complete the Limit Increase Request form.