AWS S3vsCloudflare R2

AWS S3 vs Cloudflare R2: Object Storage Comparison 2026

Compare AWS S3 and Cloudflare R2 object storage on pricing, egress fees, performance, and features to decide which fits your team's storage needs.

Updated 2026-10 · 2026

AWS S3

AWS S3

Industry-standard object storage with the deepest AWS ecosystem integration

Pay as you go$0.023/GB storage + egress fees

Strengths

  • +Deepest ecosystem integration with Lambda, CloudFront, Athena, and 200+ AWS services
  • +Mature storage classes (Standard, Infrequent Access, Glacier) for tiered cost optimization
  • +Extremely high durability (11 nines) and global multi-region replication options

Weaknesses

  • -Egress (data transfer out) fees add up fast, especially for public-facing content
  • -Pricing structure is complex with dozens of line items (requests, storage class, transfer tiers)
  • -Requires AWS account setup and IAM knowledge, steeper learning curve for small teams

Best for

Teams already running infrastructure on AWS who need deep service integration and don't serve large volumes of public content

Cloudflare R2

Cloudflare R2

S3-compatible object storage with zero egress fees

Free tier, then usage-based$0.015/GB storage, $0 egress

Strengths

  • +Zero egress fees — the single biggest cost difference vs S3 for public content delivery
  • +S3-compatible API makes migration mostly a config change, not a rewrite
  • +Generous free tier: 10GB storage, 1M Class A and 10M Class B operations/month

Weaknesses

  • -Smaller ecosystem than AWS — fewer native integrations outside Cloudflare's own stack
  • -No storage class tiering (no Glacier-equivalent for cold archival)
  • -Newer product (GA since 2022) with less third-party tooling maturity

Best for

Teams serving public content, media, or static assets where egress costs dominate the bill, and teams wanting predictable flat pricing

Feature Comparison

Feature
AWS S3AWS S3
Cloudflare R2Cloudflare R2
Storage cost (per GB/month)$0.023 (Standard tier)$0.015
Egress / data transfer out$0.09/GB after 100GB free tierFree, no egress charges
Free tier5GB storage for 12 months only10GB storage + 1M/10M ops, ongoing
API compatibilityNative S3 APIS3-compatible API
Cold storage / archival tierYes (Glacier, Glacier Deep Archive)No
CDN integrationVia CloudFront (extra cost)Native with Cloudflare CDN (included)
Compute integrationLambda, extensive AWS service meshCloudflare Workers
Durability99.999999999% (11 nines)Not independently published, built on Cloudflare's infra
Multi-region replicationYes, cross-region replication built-inLimited, single global namespace
Request pricing$0.005/1,000 PUT, $0.0004/1,000 GET$4.50/million Class A, $0.36/million Class B
Console/UI maturityMature, feature-rich AWS consoleSimpler, newer Cloudflare dashboard
Setup complexity for small teamsHigher (IAM, bucket policies)Lower (simpler access tokens)

The Verdict

If your app serves a lot of public content — images, video, downloads — R2's zero egress fees will beat S3 on total cost almost every time, often dramatically. Stick with S3 if you're deep in the AWS ecosystem and need storage tiering like Glacier for compliance archival; otherwise R2's S3-compatible API makes switching low-risk and worth trying.

How to switch from AWS S3 to Cloudflare R2

  1. 1Export your S3 bucket contents using `aws s3 sync s3://your-bucket ./local-backup` to pull files locally, or run an S3 Batch Operations job with a manifest CSV for very large buckets to copy objects directly to another destination.
  2. 2Create a Cloudflare R2 bucket in the Cloudflare dashboard and generate an S3-compatible API token (Account ID, Access Key ID, Secret Access Key) from the R2 settings page.
  3. 3Use `rclone` or the AWS CLI pointed at R2's S3-compatible endpoint (`https://<account_id>.r2.cloudflarestorage.com`) to sync your local backup or directly transfer bucket-to-bucket.
  4. 4Update application code and environment variables to point at the new R2 endpoint and credentials, keeping the same S3 SDK calls since the API is compatible.
  5. 5Recreate any lifecycle rules, CORS policies, and public access settings manually in R2's dashboard since these don't transfer automatically from S3.
  6. 6Run both buckets in parallel for a short period, verify object counts and checksums match, then update DNS/CDN configs to route traffic to R2 and decommission the S3 bucket.

AWS S3 vs Cloudflare R2: common questions

How do I export my data out of AWS S3?+

Use the AWS CLI `aws s3 sync` command to copy entire buckets to local disk or directly to another S3-compatible endpoint, or use S3 Batch Operations for large-scale exports with a manifest file (CSV or JSON). Files keep their original format and folder structure, so no conversion is needed since R2 reads standard S3 objects.

What do I lose moving from S3 to Cloudflare R2?+

You lose Glacier-style cold storage tiers for cheap long-term archival, so if you rely on lifecycle policies to move old data to deep archive, you'll need to handle that manually or keep a cold-archive bucket in S3. You also lose some AWS-native integrations like Athena querying directly over S3 data and tight IAM policy granularity.

Is Cloudflare R2's free tier enough for a small team?+

For most small teams serving a website's images, documents, or app assets, yes — 10GB storage and 10 million Class B (read) operations per month covers moderate traffic. If you're storing large media libraries or running high-volume batch processing, you'll exceed the free tier and move to R2's pay-as-you-go pricing, which is still cheaper than S3 for egress-heavy workloads.

Can I keep using my existing S3 SDK and tools with R2?+

Yes, R2 implements the S3 API, so most S3 SDKs (boto3, aws-sdk-js, etc.) work by just changing the endpoint URL and credentials. Tools that rely on AWS-specific features like S3 Select, Glacier transitions, or IAM-based bucket policies won't work and need to be reconfigured or dropped.

Does switching to R2 actually save money over time?+

If your workload has significant data egress (public downloads, media streaming, API responses with file attachments), R2 will almost always cost less over time because egress is the line item that scales fastest on S3 bills. If your usage is mostly internal storage with minimal public transfer, the savings are smaller since R2's storage rate ($0.015/GB) is only modestly cheaper than S3's ($0.023/GB).