Cloudflare R2 Architecture and Zero-Egress Trade-Offs
Zero egress fundamentally reshapes the math for bandwidth-heavy workloads and AI pipelines.

Cloudflare R2 charges nothing to move data out, a result of Cloudflare treating bandwidth as a fixed network cost absorbed at the infrastructure level rather than a per-byte revenue line. It is a direct result of how Cloudflare accounts for bandwidth: as a fixed cost the network already absorbs.
Egress was never an afterthought for them. It was a line in the original spreadsheet. Traditional cloud providers took the opposite path from the start: AWS, Azure, and GCP each charge per gigabyte served to the internet, at rates the sources peg as of September 2026 per egresscost.com.
Cloudflare's position is different because its starting point is different. It already runs one of the largest networks on the planet, and R2 sits inside that network rather than bolted onto the side of it. Data leaving R2 doesn't cross some metered gate the way it does leaving AWS or GCP, because there's no gate to cross. The 2021 announcement blog post says R2 builds on Cloudflare's Bandwidth Alliance commitment, offering zero-cost egress "no matter your request rate". That phrase, no matter your request rate, is the tell. The zero is architectural, built into the foundation rather than conditional on staying small or promising to behave. It's architectural, baked into the foundation rather than sitting on top as a promo code with an expiration date. For any workload where bandwidth is the biggest number on the invoice, that distinction rewrites the whole equation, not just one column of it.
What R2 charges: storage, operations, and the Infrequent Access trade-off
Free egress doesn't mean free, full stop. R2 still charges for storage and for operations, and at serious volume, those operation charges stop being background noise and become their own line item on the bill.
On the Standard tier, per Cloudflare's own pricing page and confirmed by independent sources tracking rates, storage runs at a low per-gigabyte-month rate. Class A operations, the writes, uploads, copies, multipart completions, and bucket listings, cost a few dollars per million calls, while Class B operations, mostly reads and metadata fetches, cost a fraction of that. Egress across every storage class is zero. There's also a free tier that recurs every month rather than expiring after a year like the typical cloud trial, and it's generous enough to cover a lot of small projects without anyone touching a credit card.
Then there's Infrequent Access, added in 2024, which flips the math around. Storage costs less per gigabyte than Standard. But Class A operations cost double the Standard rate, Class B operations run higher too, and for the first time in R2's history, there's an actual retrieval fee charged per gigabyte pulled. Objects also have to sit for a 30-day minimum before you're done paying for them, whether you touch them again or not. Infrequent Access rewards data that gets stored in bulk and left alone, and it punishes anyone who keeps poking at it.
Worked examples make the shape of this clearer than any rate card can. A cold backup archive sitting on Infrequent Access, rarely opened, costs very little per month, which is exactly the scenario that tier was built for.
At hundreds of millions of requests a month, Class A and B charges become a real line item, and R2's pricing is not uniformly cheaper than S3 at every scale. Cloudflare's own documentation contains a second caveat. A busy media site storing hundreds of gigabytes, handling millions of uploads, tens of millions of reads, and serving several terabytes a month lands on a modest monthly bill, while the same egress volume on S3 adds a substantial sum on its own. Egress is free leaving R2 directly, but if other metered services sit downstream of the bucket, those services can still bill for their part of the trip. Model the whole pipeline, including everything downstream of the R2 leg. A concrete illustration comes from S2 worked examples, which carry the exact figures from the source.
How R2 compares to S3 and Backblaze B2 across the workloads that matter
Nobody wins this one outright. R2 dominates when egress is the dominant cost, Backblaze B2 wins when data just sits there gathering digital dust, and S3 justifies its price tag through sheer ecosystem depth rather than through being cheap.
Lining up the numbers as of 2026 reveals a pattern. Write and read operations run at roughly comparable rates between R2 and S3, while B2 keeps those largely free or nearly so. Edge delivery is where the architecture shows: R2 gets it built in through Cloudflare's network of more than 300 points of presence, S3 needs CloudFront bolted on as a separate paid service, and B2 leans on CDN partners to do the same job.
So where does each one actually earn its keep? R2 wins any workload where users are pulling data straight out of storage: media libraries, download services, AI training sets, CDN origins, anything with user-generated content, because zero egress knocks out the biggest cost line before the rest of the bill even shows up. Backblaze B2 wins on raw storage economics, priced at $6.95 per terabyte, making it the obvious pick for data that's mostly just sitting there, and its own free egress through the Bandwidth Alliance chips away at what would otherwise be R2's clearest advantage. S3 wins on depth, not price: eight storage classes (Standard, Standard-IA, One Zone-IA, Glacier Instant Retrieval, Glacier Flexible Retrieval, Glacier Deep Archive, Intelligent-Tiering, and Express One Zone), plus Object Lambda, S3 Batch Operations, and native triggers into Lambda, Athena, SageMaker, and EventBridge, none of which have R2 equivalents.
A crossover stands out here. R2's storage rate runs meaningfully above Backblaze B2's, so for a cold archive that never gets touched, and therefore never triggers an egress charge either, R2 ends up the costlier option. It's charging a premium for a benefit that workload never uses. A mid-sized video-processing SaaS running several terabytes of assets and tens of millions of reads a month found this out the practical way: hundreds of dollars a month in S3 egress alone, gone entirely after moving the read path to R2, at the cost of about two weeks spent re-wiring Lambda triggers and rebuilding lifecycle rules in Cloudflare Workers. Free means the meter stops running only once the migration work is done. It means the meter stops running once the migration work is done. All three providers offer eleven-nines durability.
R2 as a cloud-agnostic data layer for AI training and multi-cloud compute
For AI training pipelines and multi-cloud inference setups, zero egress does something bigger than trim a bill. It turns R2 into a neutral home base for data, a place training sets and model checkpoints can live while compute gets sourced from whichever provider happens to have GPUs available that week, without a transfer fee attached to any of it.
That matters because GPU capacity is scarce and unevenly distributed across clouds, which pushes AI companies to shift training and inference jobs across providers and regions on a regular basis. If the underlying data lives in one cloud's object storage, every one of those shifts drags an egress charge behind it.
This isn't a hypothetical case study. Leonardo.ai, Lexica.art, and SiteGPT.ai are named among the other companies building on the same pattern. Separately, R2's integration with Databricks through Delta Sharing lets data teams share live datasets and models across organizations without duplicating data or standing up a custom transfer pipeline. MosaicML CEO Naveen Rao said, per S1: "With the MosaicML training platform, customers can efficiently use Cloudflare R2 as the durable storage backend for training LLMs on any compute provider with zero egress fees".
Cloudflare Workers add a second layer to this that's worth a beat of attention. Workers can read and write R2 objects inside the same request, at no egress cost, which supports resizing, transcoding, and URL-signing right at the edge, a setup with no real analog in the S3 plus Lambda plus CloudFront stack, where charges tend to stack up at every hop. There's also a filesystem angle gaining traction for agent workloads: since frontier models are trained heavily on bash and file-manipulation patterns, mounting cloud object storage as a POSIX filesystem lets agents and training pipelines interact with R2-backed data through the file interface those models already know, without code rewrites or ETL. R2's zero-egress model means training datasets and model checkpoints remain in one place while compute can be sourced freely from any provider, with no transfer fee on reads regardless of where the GPU cluster is running. Myle Ott, Founding Researcher, said: "We are now able to store our training and production data in R2 for access by any cloud, without egress fees, and get the best prices and performance across multiple cloud providers".
R2's 2025-2026 evolution toward an analytics-capable data platform
R2 stopped being just a bucket somewhere around 2025. Cloudflare's additions of R2 Data Catalog and R2 SQL are an attempt to close the gap between object storage and a queryable data platform, and they change the calculus for analytics workloads that previously required a separate query engine or export step.
R2 Data Catalog is a managed Apache Iceberg catalog built straight into the bucket itself, no separate service to stand up. Iceberg tables bring ACID transactions and schema evolution along with efficient querying, without the overhead of running an external catalog on the side. The catalog talks to the tools people already use for this kind of work, including DuckDB, Spark, Trino, and Snowflake. R2 SQL, meanwhile, is a serverless query engine that runs SQL directly against those Iceberg tables where the data already sits, cutting out the step of spinning up a separate query engine just to ask a question of the data.
One detail signals real operational maturity rather than a feature checkbox: automatic snapshot expiration for Iceberg tables, which clears out old snapshots on a configured retention schedule. That sounds minor until you consider what happens without it. Iceberg tables left unmaintained pile up small files and stale snapshots, which slows down queries, inflates storage costs, and adds metadata overhead to every query plan. Automating that cleanup takes a recurring chore off a team's plate rather than just adding a new button to click.
There's no rigorous, apples-to-apples latency benchmark across R2, S3, and the rest published for 2025 through 2026. Developer reports describe R2 as roughly on par with S3 for most workloads when accessed through Cloudflare's edge network, though raw origin-to-origin latency swings around in synthetic tests depending on how they're run. That's an honest gap in the record, a number left quietly unrounded to look better. And it matters for the bigger picture here: R2's move into analytics narrows the distance to S3, but it doesn't yet replicate the sprawling depth of AWS's native analytics tooling, built up over roughly two decades of Athena, Glue, and SageMaker integrations that didn't appear overnight.
Where R2's feature gaps and operational immaturity create real constraints
None of this is really about price at the end of the day. The gaps that matter most are ecosystem depth, compliance track record, and the switching cost teams eat when their infrastructure already assumes AWS is the answer to everything.
S3's eight storage classes and its native triggers into Lambda, Athena, SageMaker, and EventBridge were built out since its 2006 launch, and R2 launched into general availability only in 2022. Catching up on breadth isn't something Cloudflare can compress into a single product cycle, no matter how good the egress pricing looks on a slide. A team with years of Lambda triggers, Glacier lifecycle policies, and SageMaker pipelines wired together is weighing something bigger than a monthly bill when it looks at R2. It's weighing the cost of unwinding infrastructure that works today against savings that only materialize once the rewiring is finished, and that math doesn't always come out in R2's favor, especially for shops where egress was never the biggest number on the invoice to begin with.
Sources
- Cloudflare R2 Pricing 2026: What You Actually Pay
- Cloudflare R2 vs S3 vs Backblaze B2: $0 Egress [2026]
- Cloudflare R2 vs AWS S3 in 2026: Zero-Egress Finally Wins?
- Announcing Cloudflare R2 Storage: Rapid and Reliable Object Storage, minus the egress fees | Cloudflare Blog
- Cloudflare R2 - Egress-Free Object Storage
- R2 Data Catalog: Managed Apache Iceberg tables with zero egress fees | Cloudflare Blog
- Cloudflare’s R2 Is the Infrastructure Powering Leading AI Companies | Cloudflare
- Cloudflare R2 vs AWS S3: Complete 2025 Comparison Guide


