Cloudflare R2 vs AWS S3: real-world cost comparison including egress and CDN delivery
Edge Security & CDN

Cloudflare R2 vs AWS S3: real-world cost comparison including egress and CDN delivery

10 min read

Most teams comparing object storage costs today are not just asking “How many gigabytes can I store for how many dollars?” The real question is: “What will I actually pay once I add egress, CDN delivery, and multi-cloud workflows into the mix?” That’s where Cloudflare R2 and AWS S3 diverge sharply.

Quick Answer: Cloudflare R2 is designed to eliminate egress lock‑in and make public, Internet-facing workloads cheaper—especially when combined with Cloudflare’s CDN and connectivity cloud. AWS S3 is deeply integrated into the AWS ecosystem but can become significantly more expensive once you factor in egress, cross‑region traffic, and CDN delivery at scale.

The Quick Overview

  • What It Is: A side‑by‑side, real‑world cost comparison of Cloudflare R2 vs. AWS S3, including storage, egress, API calls, and CDN delivery.
  • Who It Is For: Engineering, infra, and finance leaders evaluating where to host assets for websites, apps, APIs, AI workloads, and large file delivery, especially at Internet scale.
  • Core Problem Solved: Understanding the all‑in cost of object storage—including egress and CDN—not just the headline “per‑GB storage” price.

How Cloudflare R2 and AWS S3 Work at a High Level

Both R2 and S3 are object storage services that let you store blobs (files, assets, backups, training data) and access them via HTTP APIs. You pay for:

  • Data stored (GB per month)
  • Requests (PUT, GET, LIST, etc.)
  • Data transferred out (egress to the public Internet, other regions, or other clouds)
  • Optional CDN delivery

The difference is in how they treat egress and interconnect:

  • AWS S3: Optimized for workloads kept “inside AWS.” As soon as you serve at scale to the open Internet or other clouds, egress and data transfer charges can dominate your bill.
  • Cloudflare R2: Optimized for Internet-facing workloads and multi-cloud architectures. R2 removes standard egress fees and lives on the same global network as Cloudflare’s CDN, Workers, and connectivity cloud. You connect, protect, and build on a single platform without paying a premium to get data out.

From a network architect’s point of view: S3 is a storage service with add‑on delivery; R2 is storage embedded into a global edge and security platform.


Baseline Pricing Comparison (Conceptual)

Exact prices change, so always check vendor calculators. Conceptually, here’s how they compare in common dimensions:

1. Storage (per GB per month)

  • AWS S3 Standard: Typically higher than R2 for frequently accessed data.
  • Cloudflare R2: Competitively priced for hot or warm data, with pricing designed to be predictable when used in front of the Internet via Cloudflare’s network.

If you’re just storing data and never reading it, S3 and R2 may be close. The moment you start reading and serving globally, economics diverge.

2. Egress to the Public Internet

  • AWS S3: You pay per GB to move data out of AWS to the Internet or to other providers. At scale, this is often the largest line item on the storage bill.
  • Cloudflare R2: Standard egress fees are eliminated. You don’t pay per‑GB egress charges to deliver R2 content out to the Internet via Cloudflare’s network.

This is the single biggest factor in “real‑world cost,” especially for public assets.

3. Requests (API Operations)

Both platforms charge per 1,000 or million requests, with different pricing tiers for PUT/LIST vs. GET/SELECT. For most real‑world web workloads:

  • Storage + egress dominate.
  • Request charges matter primarily for highly chatty or analytics-heavy patterns (frequent small reads/writes, query-heavy workloads).

R2 and S3 are broadly comparable here; the big difference is still egress and CDN.


Real-World Scenarios: R2 vs S3 with Egress and CDN

Let’s walk through concrete usage patterns you’re likely to care about.

Scenario 1: Public Website / Web App Static Assets

Workload:

  • 1 TB of static assets (images, JS, CSS, fonts)
  • 50 TB of traffic per month to global end users
  • Assets served via CDN

On AWS:

  • Store in S3.
  • Front with Amazon CloudFront (or some other CDN).
  • Pay:
    • S3 storage.
    • S3 egress to CloudFront (often cheaper than Internet egress, but still non‑trivial).
    • Egress from CloudFront to the Internet.
    • S3 and CloudFront request fees.

On Cloudflare:

  • Store in R2.
  • Serve via Cloudflare CDN (part of the same connectivity cloud).
  • Pay:
    • R2 storage.
    • R2 request fees.
    • CDN plan/bandwidth where applicable, but no standard R2 egress charges.

Cost impact:

  • In AWS, the 50 TB/month mostly shows up as egress from AWS.
  • With R2 + Cloudflare CDN, you’re not paying per‑GB egress out of storage, and Cloudflare’s global network is already optimized for caching, DDoS protection, and WAF for those assets.

For a high‑traffic app, this can mean egress savings significant enough to fund other infra or security initiatives.

Scenario 2: AI/ML Training Data and Model Artifacts

Workload:

  • 20 TB of training data.
  • Periodic large reads from compute in another cloud (e.g., GPU clusters in GCP/Azure).
  • Model artifacts (hundreds of GBs) downloaded by build pipelines, workers, or partner infrastructure.

On AWS S3:

  • Hosting data in S3 and training in AWS is cost‑efficient.
  • Training or inference outside AWS incurs S3 egress charges, plus any cross‑cloud transfer fees.
  • Multi-cloud flexibility is effectively “taxed” via egress.

On Cloudflare R2:

  • Training clusters in other clouds (or on‑prem) pull data over the Internet without per‑GB R2 egress charges.
  • Model artifacts can be distributed via Cloudflare’s global edge with the same economics as web assets.
  • If you build AI agents and pipelines on Cloudflare Workers or the developer platform, they read from R2 at the edge, close to where inference requests originate.

Cost impact:

  • For AI workflows that span multiple clouds or on‑prem, R2 removes a major variable cost: cross‑cloud egress.
  • Architecturally, you’re not forced into “all‑in on one hyperscaler” just to avoid egress fees on your own data.

Scenario 3: Software Distribution / Large File Download Service

Workload:

  • 5 TB of binaries/archives.
  • 100 TB/month download volume.
  • Global user base; downloads must be fast and reliable.

On AWS S3 + CloudFront:

  • Pay S3 storage + S3→CloudFront transfer + CloudFront → Internet.
  • You may negotiate discounts, but the fundamental billing model charges for every GB pushed out.

On Cloudflare R2 + Cloudflare CDN:

  • Pay R2 storage + Cloudflare CDN delivery (depending on plan).
  • No R2 egress line item for the 100 TB leaving storage to end users.
  • You can layer in DDoS protection, WAF, bot management for your download endpoints on the same network.

Cost impact:

  • At 100 TB/month, small differences in per‑GB egress add up quickly.
  • R2’s no‑egress model is intentionally designed for this “high‑volume public delivery” pattern.

Scenario 4: Hybrid Backups with Occasional Restores

Workload:

  • 200 TB of backup data stored.
  • Low read frequency; occasional restores, sometimes to another cloud/on‑prem.
  • RPO/RTO requirements but not constant traffic.

On AWS S3 / Glacier tiers:

  • You can optimize storage costs with Glacier tiers, but:
    • Retrieves and egress still incur fees, especially to non‑AWS locations.
    • Restore times and tiering complexity can be a factor.

On Cloudflare R2:

  • Simple hot/warm object storage—no complex tiering structures.
  • When you do restore, especially to non‑Cloudflare environments, you avoid per‑GB egress from storage.
  • If your restore workflows run on Workers or services behind Cloudflare One, data flows across the same connectivity cloud.

Cost impact:

  • For heavy storage but infrequent restore, S3 archive tiers may be cheaper purely on $/GB storage.
  • However, if restores are cross‑cloud or time‑sensitive, R2’s no‑egress and edge proximity can make your “bad day” cheaper and simpler.

CDN Delivery Differences in Practice

When you factor in CDN, ask two questions:

  1. Where is the edge?

    • AWS: CloudFront is the CDN; S3 is in AWS regions.
    • Cloudflare: The CDN and R2 both sit on Cloudflare’s global network (hundreds of cities in 125+ countries), within ~50 ms of most Internet users.
  2. Where are policies and security enforced?

    • AWS: You typically stitch together IAM, S3 bucket policies, CloudFront behaviors, WAF rules, etc.
    • Cloudflare: You can apply WAF, DDoS protection, bot management, and Zero Trust access (via Cloudflare One) at the edge, with R2 as the storage backing.

From a cost and operational standpoint:

  • Fewer hops: R2 + Cloudflare CDN compresses the path between storage, security, and users.
  • Fewer line items: Storage, CDN, security, and Zero Trust access live in one connectivity cloud, which simplifies both billing and routing.

When AWS S3 May Still Be the Better Fit

There are situations where S3 remains compelling:

  • Deep AWS lock‑in by design: If your workloads live entirely inside AWS (EC2, Lambda, ECS, EKS) and rarely serve to the public Internet, S3’s internal traffic pricing can be attractive.
  • Heavy use of S3‑native services: If you rely on tight integrations with Amazon Athena, EMR, Redshift Spectrum, or S3‑triggered Lambda workflows, S3 remains the path of least resistance.
  • Compliance or data residency constraints bound to AWS regions only: If your org has standardized exclusively around AWS’s compliance frameworks and regions, that governance decision may point you to S3, at least for specific datasets.

Even in those cases, many teams still offload high‑egress workloads (public assets, multi‑cloud datasets) to R2 to break out of egress lock‑in while keeping “AWS‑internal” data in S3.


Architecture Considerations: Connect, Protect, and Build Everywhere

If you’re deciding between R2 and S3, it’s not just a billing comparison—it’s an architecture choice:

  • Connect:

    • R2 sits inside Cloudflare’s connectivity cloud, alongside Cloudflare One (SASE/Zero Trust), Magic Transit, and application services.
    • You can connect users, apps, AI agents, and networks to R2-backed content with outbound-only tunnels (Argo Tunnel) and avoid exposing storage directly.
  • Protect:

    • Use Cloudflare WAF, DDoS mitigation, bot management, and API Gateway in front of your R2-backed endpoints.
    • Enforce identity and context-based access to internal tools (e.g., admin consoles, dashboards that read from R2) using Cloudflare Access, evaluating every request at the edge.
  • Build:

    • Build applications and AI agents on Cloudflare Workers and the developer platform, reading and writing directly to R2 at the edge.
    • Because egress isn’t penalized, you can design data flows for latency and simplicity instead of tip‑toeing around cross‑service bandwidth bills.

With S3, you can approximate some of this by stitching together AWS services, CloudFront, and third‑party security. With R2 in Cloudflare’s connectivity cloud, the “edge is the control plane” by default.


Summary: How to Think About “Real-World Cost”

When you see “cloudflare-r2-vs-aws-s3-real-world-cost-comparison-including-egress-and-cdn-deli” in your planning docs, make sure your evaluation covers:

  • Storage price per GB: Important, but almost never the full story.
  • Egress to the Internet or other clouds: Often the largest cost driver and the biggest lock‑in lever.
  • CDN delivery and caching: Where is content cached? How many networks and bills are involved?
  • Security and Zero Trust controls: Are you paying separately (and operationally) to protect what you store?
  • Multi-cloud and AI workloads: Can you move data and traffic where it makes the most sense without being punished by egress fees?

For Internet-facing, high‑egress workloads—websites, APIs, AI agents, software distribution, large media—Cloudflare R2 plus Cloudflare’s global network is generally more cost‑efficient and operationally simpler than S3 plus traditional egress and CDN pricing. For workloads kept entirely inside AWS, S3 still fits well.

If you’re planning a migration or a greenfield deployment and want predictable economics with built‑in performance and security, R2’s no‑egress model within Cloudflare’s connectivity cloud is designed exactly for that use case.

Next Step

Get Started