Educational — Cloud egress & data-transfer cost guides. FinOps-lite estimators. Not a quote, broker, or savings guarantee. Launching soon where incomplete.
object-storage · Educational

Cloud egress: AWS S3 vs Cloudflare R2 path matrix

S3 versus R2 egress depends on who pulls and which network path fires—not marketing slides. Public GET, CDN origin fill, and same-region compute pulls meter differently. Compare path classes first; leave $/GB Unknown until verified on dated provider pricing pages. R2 “$0 egress” marketing is not an AWS free-tier cliff twin and not S3 CRR; miss-driven CDN fill still belongs in Mode C.

Updated

Path matrix: AWS S3 vs Cloudflare R2 egress path classes (educational)
Path classS3 (typical)R2 (typical)Verify
Internet egress (GET to public client)Tiered $/GB after free allowanceOften $0 egress to Internet (confirm current)Provider pricing pages + region
Same-region to computeOften free/reduced; check AZ/VPC endpointsWorker/R2 same-account patterns differArchitecture diagram
Cross-region / multi-cloud pullInter-region + Internet may stackPull-from-origin or copy fees may applyTransfer method
CDN origin pullCloudFront/other CDN may shift billR2+CDN pairing changes who paysCDN bill vs storage bill
DELETE / LIST / API request chargesRequest SKUs separate from egressOps/request pricing separateBill line items

Provider source footnotes

  1. AWS S3 pricing — as-of Unknown until verified
  2. Cloudflare R2 pricing — as-of Unknown until verified
  3. AWS CloudFront pricing (origin context) — as-of Unknown until verified

Dated starting points only — Unknown until verified means no invented $/GB. PipeToll does not scrape private consoles or guarantee figures.

Path-class vocabulary: path template, Unknown until verified. This spoke is a path matrix, not a price clone. Egress depends on who pulls, which network path, and which SKU fires. Titles lead with Cloud egress so readers are not hunting American pipe-toll brands.

Path templates to model

Common traps

Pasting a single “egress $/GB” from a blog ignores free-tier cliffs, Class A/B ops, and CDN origin bills. Assuming R2 $0 covers every destination (multi-cloud pulls, excluded regions) is unsafe. Treating DELETE/LIST as free because bytes look small undercounts chatty workloads. Blending S3 Internet GET with CRR inter-region replication or with CDN edge delivery into one cell. No scorecrowns — Unknown cells stay Unknown until dated.

FinOps checklist

  1. Inventory top prefixes by GET volume and bytes.
  2. Separate cacheable CDN traffic from one-shot downloads.
  3. Model free-tier cliffs and request SKUs as separate lines.
  4. Re-price after architecture change; open calculator (?mode=gb&path=s3-r2) for GB×$/GB sensitivity only.
  5. Cite provider pages per methodology; link egress vocabulary.
  6. If CloudFront or Cloudflare sits in front, estimate miss-driven fill with Mode C (?path=cf-cloudflare) and read CDN origin fill — separately from S3/R2 Internet GET.
  7. Durability replication on AWS stays on S3 CRR; object download caps on R2/B2-class products stay on R2 vs B2.

Related vocabulary: egress / DT-out, path template, free-tier cliff, origin fill, S3 CRR, Unknown until verified, FinOps-lite.

FinOps-lite Unknown until verified

Worked example (educational): 5 TB public GET / month

  1. Path: client ← Internet ← object store. Inventory 5,000 GB public GET on S3 and the same shape on R2 as separate path templates.
  2. Enter 5,000 GB in Mode A via ?path=s3-r2&gb=5000; paste a verified $/GB or leave placeholders Unknown.
  3. For S3, remember free-tier cliffs and request SKUs sit outside GB×rate — see the free-tier cliff spoke.
  4. For R2, confirm whether your destination is included in any $0 egress marketing claim; ops/request SKUs stay separate lines.

Second educational stack (CDN origin fill twin): same 5 TB client downloads behind a CDN at 0.80 CHR → origin fill ≈ 1,000 GB. Price Internet GET (Mode A / S3 or R2) separately from miss-driven fill in Mode C (?path=cf-cloudflare). Enabling a CDN is not a guaranteed savings claim versus direct S3/R2 GET.

Worked-estimate sensitivity (educational)

Hold 5,000 GB client downloads and walk three path runs. Every $/GB stays Unknown until dated S3/R2/CDN cites — literacy only, not a quote or savings guarantee.

  1. Run A — direct public GET: client ← Internet ← S3 (and the same shape on R2) as separate Mode A templates via ?path=s3-r2&gb=5000. Apply free-tier cliff literacy only on the S3 Internet line.
  2. Run B — CDN at 0.80 CHR: 5,000 GB edge → ≈ 1,000 GB origin fill. Keep Mode A edge/GET narrative apart from Mode C fill (?path=cf-cloudflare). Who bills the miss depends on pairing — see CloudFront vs Cloudflare.
  3. Run C — CDN at 0.95 CHR + ops: same 5,000 GB edge → ≈ 250 GB fill; add Class A/B (or R2 Class A/B) request SKUs as their own rows. Chatty LIST prefixes can dominate quiet-byte months.
Sensitivity runs — Unknown rates (educational)
RunClient GBOrigin / GET GB to priceExtra linesUnit rates
A5,0005,000 direct GET (S3 and R2 separately)S3 free-tier cliff remainder; request SKUsUnknown
B5,000 @ CHR 0.80≈ 1,000 origin fillMode A narrative vs Mode C fillUnknown
C5,000 @ CHR 0.95≈ 250 origin fillClass A/B ops; optional CRR if DR copies existUnknown

Do not blend S3 CRR into public GET. Object-download siblings on R2/B2-class products stay on R2 vs B2. Badge unverified rates Unknown until verified; cite via methodology.

Open calculator Mode A (s3-r2 · 5 TB) Mode C · CDN origin fill CloudFront vs Cloudflare R2 vs B2

FAQ on this path

Is R2 always zero egress?

Marketing often highlights $0 Internet egress, but ops/request pricing, excluded destinations, and pairing rules still matter. Verify the current pricing page.

Does a CDN remove S3 egress?

A CDN can shift who bills which bytes. Origin fill may still bill storage egress or CDN origin fees — see the origin-fill spoke.

What should I compare first?

Path class (who pulls, which network) before any $/GB. Request SKUs and free-tier cliffs next.

How does CDN origin fill change the matrix?

A CDN can shift who bills which bytes. Client GB at the edge ≠ origin fill GB. Estimate fill with Mode C and keep S3/R2 Internet GET as its own Mode A line — see CloudFront vs Cloudflare CDN.

Is R2 free egress the same as an AWS free-tier cliff or S3 CRR?

No. R2 marketing often highlights $0 Internet egress (with exceptions). AWS free-tier cliffs are complimentary allotments that end. S3 CRR is inter-region bucket replication. Keep the three path classes separate.

Trademarks: Amazon Web Services, AWS, Microsoft Azure, Google Cloud Platform, GCP, and Cloudflare are trademarks of their respective owners. PipeToll (Ameti One LLC) is not affiliated with, endorsed by, or sponsored by those companies. Educational comparisons may be outdated — verify current rates with each provider.