Loading...


Updated 22 Oct 2026 • 7 mins read

Cloudflare R2 prices storage 35 percent below S3 Standard and charges nothing for egress, which makes it far cheaper for data served to the internet and no cheaper for data read inside AWS or archived. This comparison gives both rate cards, three worked examples, where S3 still wins, and R2's own hidden costs.
Cloudflare R2 has one pricing feature that reorganizes the whole comparison with Amazon S3: it charges nothing to send data out. S3 charges $0.09 a gigabyte for the first ten terabytes a month to the internet, which means a terabyte that costs $23 to store costs $90 each time it is served, and for anything public, images, video, downloads, model weights, the egress is the bill and the storage is a footnote. R2 removes that line. It does not remove every line, and the comparison is not a landslide in R2's favor once you ask where the data is actually read.
This guide puts both rate cards side by side, works three examples that show zero egress saving everything, nothing, and something in between, lists where S3 remains the better choice, and names R2's own costs, which exist. Rates are from Cloudflare's R2 pricing documentation and the S3 pricing page as of October 2026; for how S3 compares with the other hyperscalers' storage, see our cloud storage pricing comparison.
The short answer: Cloudflare R2 charges $0.015 per GB-month for Standard storage, $4.50 per million Class A operations (writes and lists), $0.36 per million Class B operations (reads), and nothing for egress at any volume, with a permanent free tier of 10 GB, 1 million Class A, and 10 million Class B operations a month; Infrequent Access storage is $0.01 per GB-month with doubled operation rates, a $0.01 per GB retrieval fee, and a 30-day minimum. Amazon S3 Standard charges $0.023 per GB-month, about $5.00 per million writes and $0.40 per million reads, and $0.09 per GB of internet egress after 100 GB free, with cold classes down to $0.00099 per GB-month. For data served to the internet, R2 is dramatically cheaper: a terabyte served five times a month is about $470 on S3 and about $20 on R2. For data read inside AWS, S3 is cheaper, since intra-region reads are free and R2 would add transfer. For archives, S3 Glacier beats R2's $0.01 floor by ten times. Decide by where the data is read.
October 2026. S3 in US East; R2 has no regional pricing.
| Meter | Cloudflare R2 Standard | Cloudflare R2 Infrequent Access | Amazon S3 Standard | Amazon S3 cold classes |
|---|---|---|---|---|
| Storage per GB-month | $0.015 | $0.01 | $0.023 (first 50 TB) | Standard-IA $0.0125; Glacier Instant $0.004; Deep Archive $0.00099 |
| Writes and lists | $4.50 per million | $9.00 per million | About $5.00 per million (PUT, COPY, POST, LIST) | Same, plus transition requests |
| Reads | $0.36 per million | $0.90 per million | About $0.40 per million (GET) | Same |
| Retrieval per GB | None | $0.01 | None | $0.01 to $0.03, with delays on Glacier |
| Egress to internet | Free | Free | $0.09 per GB after 100 GB (first 10 TB); down to $0.05 | Same |
| Minimum duration | None | 30 days | None | 30 to 180 days |
| Free tier | 10 GB + 1M Class A + 10M Class B, permanent | None | 5 GB, 12 months (legacy accounts); 100 GB egress monthly | n/a |
| Storage classes | 2 | 7 |
One terabyte each, monthly.
<table id="s3-r2-workload-comparison"> <thead> <tr> <th><strong>Workload</strong></th> <th><strong>Amazon S3</strong></th> <th><strong>Cloudflare R2</strong></th> <th><strong>Winner</strong></th> </tr> </thead> <tbody> <tr> <td><strong>Public assets served to the internet 5 TB a month</strong></td> <td>$23.55 storage + about $5 requests + about $441 egress = about $470</td> <td>$15 storage + about $5 operations + $0 egress = about $20</td> <td>R2, by 23x</td> </tr> <tr> <td><strong>Data lake read by Athena, Glue, and EC2 in the same AWS region</strong></td> <td>$23.55 storage + requests; intra-region reads free = about $30</td> <td>$15 storage + cross-provider transfer and latency into AWS; about $15 plus whatever the trip costs</td> <td>S3; R2 adds cost and latency for no egress saving</td> </tr> <tr> <td><strong>Compliance archive, never read</strong></td> <td>$1.01 in Glacier Deep Archive</td> <td>$10 in Infrequent Access (the cheapest R2 class)</td> <td>S3, by 10x</td> </tr> </tbody> </table>
The first row is why R2 exists and the reason it has taken the public-content market: zero egress turns a $470 bill into $20. The second and third rows are the cases the R2 pitch skips. Data that is read inside AWS pays no egress on S3 anyway, so R2's advantage vanishes and its disadvantage, being outside AWS, appears. Data that is archived finds S3's deep classes a tenth of R2's floor.
The storage classes and the levers for using them well are in our S3 cost optimization guide; the egress map that makes the first row of the table so lopsided is in our AWS data transfer fees guide.
Zero egress is not a zero bill, and three costs sit around R2 that the headline omits.
Organizations that adopt R2 for public content rarely leave S3, so storage cost ends up on two invoices in two formats, and the question of what a product's storage costs across both is one neither provider answers. Opslyft shows S3 cost by bucket, class, and team beside the rest of the AWS bill and brings non-AWS platforms into the same view, which is the multi-provider picture our cloud storage pricing comparison starts from.
Cloudflare R2 pricing is a real advance for one kind of data, the kind that leaves: 35 percent cheaper to store than S3 Standard and free to serve, against S3's $0.09 a gigabyte, which for public content is the whole bill. For data that stays inside AWS, S3's free intra-region reads and deeper integration win; for data that sleeps, S3's Glacier classes win by an order of magnitude. Ask where each dataset is read, put it with the provider that makes that read cheapest, and count the CDN, operations, and cross-provider costs that the zero-egress headline leaves out. The three-way comparison with Azure Blob and Google Cloud Storage is in our cloud storage pricing guide; S3's own rate card, class by class, is in our S3 pricing per GB breakdown.
R2 Standard storage is $0.015 per GB-month, Class A operations (writes and lists) are $4.50 per million, Class B operations (reads) are $0.36 per million, and egress to the internet is free at any volume. Infrequent Access storage is $0.01 per GB-month with doubled operation rates, a $0.01 per GB retrieval fee, and a 30-day minimum. Every account gets a permanent free tier of 10 GB of Standard storage, 1 million Class A and 10 million Class B operations a month.
For storage and for anything served to the internet, yes: R2's $0.015 per GB-month is 35 percent below S3 Standard's $0.023, and R2's zero egress against S3's $0.09 per GB is the decisive difference for public content. For cold data, no: S3's Glacier classes run from $0.004 down to $0.00099 per GB-month, far below R2's $0.01 Infrequent Access floor. Request pricing is close ($4.50 versus $5.00 per million writes, $0.36 versus $0.40 per million reads).
It depends entirely on how much you serve. A terabyte stored and served to the internet five times a month costs about $470 on S3 (about $23 storage, $441 egress) and about $20 on R2 (storage and operations). A terabyte stored and never read costs $23 on S3, $15 on R2, and about $1 in S3 Glacier Deep Archive. Zero egress saves nothing on data that stays put and almost everything on data that leaves.
When data sits inside AWS and is read by EC2, Lambda, Athena, or Glue in the same region, where egress is free anyway and R2 would add cross-provider transfer; when you need S3's seven storage classes, especially Glacier for archives; when you depend on S3-specific features such as S3 Select, Object Lambda, event notifications into AWS services, or Storage Lens; or when compliance ties the data to AWS. Most AWS-native applications fall into the first case.
Largely. R2 exposes an S3-compatible API, so most SDKs, CLIs, and tools that speak S3 work against R2 with a different endpoint and credentials, and migration tools can copy buckets. Compatibility is not complete; some S3 features and API operations are absent, and application code that relies on them needs changes.
The CDN and compute around it: R2 egress is free, but serving public content well usually means Cloudflare's CDN and sometimes Workers, which have their own plans, and Cache Reserve is priced like R2 with no free tier. Operations at scale: a workload writing hundreds of millions of small objects pays Class A at $4.50 per million, close to S3. And the cost of being outside AWS: any AWS service reading from R2 pays for the trip, and data residency choices are limited to location hints.
By where the data is read. If it is served to the internet, R2's zero egress wins decisively and the storage saving is a bonus. If it is read inside AWS, S3 wins because intra-region reads are free and R2 would add transfer and latency. If it is archived, S3 Glacier wins on price. Many organizations run both, R2 for public assets and S3 for AWS-internal data, which makes attributing storage cost across two providers the next problem.