Cloudflare has recently introduced Local Uploads for R2 in open beta. The new feature optimizes write performance for globally distributed users without changing bucket location, reducing cross-region write latency.
With Local Uploads, object data is written close to the client and then copied to the bucket’s region by a Cloudflare job running in the background, a so-called replication task. According to the documentation, the file remains immediately available and consistent throughout this process. Frank Chen and Rahul Suresh, systems engineers at Cloudflare, and Anni Wang, product manager at Cloudflare, write:
Local Uploads makes upload requests (i.e. PutObject, UploadPart) faster. In both our private beta tests with customers and our synthetic benchmarks, we saw up to 75% reduction in Time to Last Byte (TTLB) when upload requests are made in a different region than the bucket. In these results, TTLB is measured from when R2 receives the upload request to when R2 returns a 200 response.
Source: Cloudflare documentation
If the client and the bucket are in different regions and the new local storage option is enabled, R2 writes to the storage infrastructure in the client region while still publishing object metadata to the bucket’s region. Cloudflare handles the background replication.

Source: Cloudflare blog
The system manages the behind-the-scenes copying with queued tasks and automatic retries to keep data safe and reliable. Chen, Suresh, and Wang add:
Importantly, the object is immediately accessible after the initial write completes. It remains accessible throughout the entire replication process — there’s no waiting period for background replication to finish before the object can be read.
R2 achieves this by decoupling physical storage from logical metadata and building a global metadata service on Durable Objects, a feature of Cloudflare Workers that lets applications store and manage data in a single, consistent place, even as the app runs across many locations worldwide.
The new feature targets workloads where users are located around the world, fast and reliable uploads are important, and better upload performance is needed without changing the bucket’s main location. Customers can see the geographic distribution of read and write requests by monitoring the request distribution by region graph on the R2 bucket’s metrics page. Sri Chavali, principal engineer at Oracle, summarizes on LinkedIn:
Uploading a 1GB file from one region to a bucket in another region is dominated by RTT. Cloudflare’s R2 Local Uploads fixes the “distance problem” by terminating uploads at the nearest PoP and decoupling ingest from replication using Durable Objects, atomic commits, and a pull-based replication pipeline.
Cloudflare is not the only hyperscaler trying to optimize uploads to a central bucket from around the world and reduce cross-region write latency, and AWS offers S3 Transfer Acceleration. While R2 Local Uploads perform local writes with asynchronous replication, S3 Transfer Acceleration uses globally distributed edge locations to optimize routing and reduce internet variability, uploading to the nearest CloudFront edge location and then traversing AWS’s network to the bucket. Google Cloud Storage and Azure Blob Storage do not expose an upload layer that accepts local writes globally.
There is no additional cost to enable Local Uploads on Cloudflare R2; upload requests incur the standard Class A operation costs, as they do without Local Uploads. A demo is available to test local uploads from different locations.
