Cloudflare R2 vs Amazon S3
A comparison of Cloudflare R2 and Amazon S3 built from values read directly from each provider's own documentation, with the source recorded against every figure.
The short answer
- Pick Cloudflare R2 if
- Serving files to the public, where egress is the bill everyone underestimates. Nothing to pay for bandwidth out, on any storage class, so a busy bucket costs what it costs to store rather than what it costs to read.
- Pick Amazon S3 if
- Workloads already inside AWS, where keeping data in the same region as the compute avoids the transfer charges that dominate an object storage bill.
5 sourced criteria separate them:
- Egress over allowance
- Cloudflare R2: Free. Cloudflare charges nothing for egress to the internet on any storage class; Infrequent Access adds a $0.01/GB retrieval fee instead.
- Amazon S3: $0.09 per GB for the first 10 TB a month out to the internet, after a free 100 GB aggregated globally. It falls to $0.085 above 10 TB, $0.07 above 50 TB and $0.05 above 150 TB. This is AWS's outbound data transfer rate rather than an S3-specific one — the charge that R2, Wasabi and Tigris do not levy at all.
- Storage (entry plan)
- Cloudflare R2: 10 GB-month free each month, plus 1 million Class A and 10 million Class B operations
- Amazon S3: None. S3 has no plans and no included storage — AWS states there is no minimum charge and you pay only for what you use, billed per GB-month from the first byte. New accounts get AWS Free Tier credits ($100 immediately, up to $200 over six months) which are spendable credit rather than a standing storage allowance.
- Storage price
- Cloudflare R2: $0.015 per GB-month for Standard, $0.01 for Infrequent Access. Billed rounded up to the whole GB-month.
- Amazon S3: $0.023 per GB-month for S3 Standard, first 50 TB, in us-east-1. S3 prices vary by region; this and every other S3 figure on the site is that region.
- Operations price
- Cloudflare R2: $4.50 per million Class A operations (writes and listings) and $0.36 per million Class B (reads) on Standard; $9.00 and $0.90 on Infrequent Access. Rounded up to the whole million.
- Amazon S3: $0.005 per 1,000 PUT, COPY, POST and LIST requests, and $0.004 per 10,000 GET and all other requests, in us-east-1. DELETE and CANCEL are free.
- Minimum storage duration
- Cloudflare R2: None on Standard storage — billing averages peak storage per day, so an object deleted after five days is charged for five days. Infrequent Access carries a 30-day minimum, billed even if the object is deleted, moved or replaced sooner.
- Amazon S3: None on S3 Standard. 30 days on Standard-IA and One Zone-IA, 90 days on Glacier Instant and Flexible Retrieval, 180 days on Glacier Deep Archive, each with a pro-rated charge for early deletion.
Pick the criteria you care about. The chart counts how many of them lean toward each provider — the same read as scanning the bars below, just totalled for the ones you chose.
Cloudflare R2 0
Amazon S3 0
At a glance.
| Criterion | Cloudflare R2 | Amazon S3 |
|---|---|---|
| Pricing | ||
| Free tier | Yes | Yes |
| Egress over allowance | Free. Cloudflare charges nothing for egress to the internet on any storage class; Infrequent Access adds a $0.01/GB retrieval fee instead. | $0.09 per GB for the first 10 TB a month out to the internet, after a free 100 GB aggregated globally. It falls to $0.085 above 10 TB, $0.07 above 50 TB and $0.05 above 150 TB. This is AWS's outbound data transfer rate rather than an S3-specific one — the charge that R2, Wasabi and Tigris do not levy at all. |
| Limits | ||
| Storage (entry plan) | 10 GB-month free each month, plus 1 million Class A and 10 million Class B operations | None. S3 has no plans and no included storage — AWS states there is no minimum charge and you pay only for what you use, billed per GB-month from the first byte. New accounts get AWS Free Tier credits ($100 immediately, up to $200 over six months) which are spendable credit rather than a standing storage allowance. |
| Storage | ||
| Storage price | $0.015 per GB-month for Standard, $0.01 for Infrequent Access. Billed rounded up to the whole GB-month. | $0.023 per GB-month for S3 Standard, first 50 TB, in us-east-1. S3 prices vary by region; this and every other S3 figure on the site is that region. |
| Operations price | $4.50 per million Class A operations (writes and listings) and $0.36 per million Class B (reads) on Standard; $9.00 and $0.90 on Infrequent Access. Rounded up to the whole million. | $0.005 per 1,000 PUT, COPY, POST and LIST requests, and $0.004 per 10,000 GET and all other requests, in us-east-1. DELETE and CANCEL are free. |
| Minimum storage duration | None on Standard storage — billing averages peak storage per day, so an object deleted after five days is charged for five days. Infrequent Access carries a 30-day minimum, billed even if the object is deleted, moved or replaced sooner. | None on S3 Standard. 30 days on Standard-IA and One Zone-IA, 90 days on Glacier Instant and Flexible Retrieval, 180 days on Glacier Deep Archive, each with a pro-rated charge for early deletion. |
| S3-compatible API | Supported | Supported |
Where they differ.
Egress over allowance
- Cloudflare R2
- Free. Cloudflare charges nothing for egress to the internet on any storage class; Infrequent Access adds a $0.01/GB retrieval fee instead.
- Amazon S3
- $0.09 per GB for the first 10 TB a month out to the internet, after a free 100 GB aggregated globally. It falls to $0.085 above 10 TB, $0.07 above 50 TB and $0.05 above 150 TB. This is AWS's outbound data transfer rate rather than an S3-specific one — the charge that R2, Wasabi and Tigris do not levy at all.
Sources (2) →Sources ↓
- R2 pricing — Cloudflare Docs ↗
“For the Infrequent Access storage class, data retrieval fees apply. There are no charges for egress bandwidth for any storage class. [...] Egress (data transfer to Internet) Free Free”
Read 2026-09-06 · official pricing
- AWS Price List API — AWSDataTransfer, us-east-1 ↗
“"$0 for 100GB of data transfer out to the internet, aggregated globally" [...] "$0.090 per GB - first 10 TB / month data transfer out beyond the global free tier" [...] "$0.085 per GB - next 40 TB / month" [...] "$0.070 per GB - next 100 TB / month" [...] "$0.050 per GB - greater than 150 TB / month"”
Read 2026-09-06 · official pricing
Storage (entry plan)
10 GB-month free each month, plus 1 million Class A and 10 million Class B operations
None. S3 has no plans and no included storage — AWS states there is no minimum charge and you pay only for what you use, billed per GB-month from the first byte. New accounts get AWS Free Tier credits ($100 immediately, up to $200 over six months) which are spendable credit rather than a standing storage allowance.
Sources (2) →Sources ↓
- R2 pricing — Cloudflare Docs ↗
“You can use the following amount of storage and operations each month for free. [...] Storage 10 GB-month / month Class A Operations 1 million requests / month Class B Operations 10 million requests / month”
Read 2026-09-06 · official pricing
- Amazon S3 Pricing ↗
“Pay only for what you use. There is no minimum charge. Amazon S3 cost components are storage pricing, request and data retrieval pricing, data transfer and transfer acceleration pricing”
Read 2026-09-07 · official pricing
Storage price
- Cloudflare R2
- $0.015 per GB-month for Standard, $0.01 for Infrequent Access. Billed rounded up to the whole GB-month.
- Amazon S3
- $0.023 per GB-month for S3 Standard, first 50 TB, in us-east-1. S3 prices vary by region; this and every other S3 figure on the site is that region.
Sources (2) →Sources ↓
- R2 pricing — Cloudflare Docs ↗
“Storage $0.015 / GB-month $0.01 / GB-month [...] If you have used 1.1 GB-month, you will be billed for 2 GB-month.”
Read 2026-09-06 · official pricing
- AWS Price List API — AmazonS3, us-east-1 ↗
“"description": "$0.023 per GB - first 50 TB / month of storage used", "pricePerUnit": {"USD": "0.0230000000"}, "unit": "GB-Mo", "beginRange": "0", "endRange": "51200"”
Read 2026-09-06 · official pricing
Operations price
- Cloudflare R2
- $4.50 per million Class A operations (writes and listings) and $0.36 per million Class B (reads) on Standard; $9.00 and $0.90 on Infrequent Access. Rounded up to the whole million.
- Amazon S3
- $0.005 per 1,000 PUT, COPY, POST and LIST requests, and $0.004 per 10,000 GET and all other requests, in us-east-1. DELETE and CANCEL are free.
Sources (2) →Sources ↓
- R2 pricing — Cloudflare Docs ↗
“Class A Operations $4.50 / million requests $9.00 / million requests Class B Operations $0.36 / million requests $0.90 / million requests [...] If you have performed one million and one operations, you will be billed for two million operations.”
Read 2026-09-06 · official pricing
- AWS Price List API — AmazonS3, us-east-1 ↗
“"description": "$0.005 per 1,000 PUT, COPY, POST, or LIST requests" [...] "description": "$0.004 per 10,000 GET and all other requests" [...] DELETE and CANCEL requests are free.”
Read 2026-09-06 · official pricing
Minimum storage duration
- Cloudflare R2
- None on Standard storage — billing averages peak storage per day, so an object deleted after five days is charged for five days. Infrequent Access carries a 30-day minimum, billed even if the object is deleted, moved or replaced sooner.
- Amazon S3
- None on S3 Standard. 30 days on Standard-IA and One Zone-IA, 90 days on Glacier Instant and Flexible Retrieval, 180 days on Glacier Deep Archive, each with a pro-rated charge for early deletion.
Sources (2) →Sources ↓
- Pricing — Cloudflare R2 docs ↗
“Storage class Minimum storage duration Standard storage None Infrequent Access storage 30 days [...] you will be charged for the object for the minimum storage duration even if the object was deleted or moved before the duration specified”
Read 2026-09-07 · official docs
- S3 Pricing — AWS ↗
“S3 Standard-IA, and S3 One Zone-IA storage are charged for a minimum storage duration of 30 days [...] Objects that are archived to S3 Glacier Instant Retrieval and S3 Glacier Flexible Retrieval are charged for a minimum storage duration of 90 days, and S3 Glacier Deep Archive has a minimum storage duration of 180 days.”
Read 2026-09-06 · official docs
When these numbers change, hear about it. Sources are re-checked monthly; a repricing goes out as a short note.
Which should you choose?
Choose Cloudflare R2 if…
Serving files to the public, where egress is the bill everyone underestimates. Nothing to pay for bandwidth out, on any storage class, so a busy bucket costs what it costs to store rather than what it costs to read.
Editorial · Palash Bagchi · approved
Choose Amazon S3 if…
Workloads already inside AWS, where keeping data in the same region as the compute avoids the transfer charges that dominate an object storage bill.
Editorial · Palash Bagchi · approved
Consider something else if…
- Cloudflare R2: Operations are charged and rounded up to the whole million, so a workload of many tiny reads and writes pays here instead. The saving is on bandwidth, not on request volume.
- Amazon S3: Egress is the cost that decides this category and S3 charges for it, where R2, Wasabi and Tigris do not. Prices also vary by region, so a figure quoted anywhere is only true for the region it was read in.
Documented by only one.
These criteria are published by one provider and not the other. An absence here means we have not found a source, not that the feature is missing.
Questions this comparison answers.
Egress over allowance: Cloudflare R2 or Amazon S3?
Cloudflare R2: Free. Cloudflare charges nothing for egress to the internet on any storage class; Infrequent Access adds a $0.01/GB retrieval fee instead.
Amazon S3: $0.09 per GB for the first 10 TB a month out to the internet, after a free 100 GB aggregated globally. It falls to $0.085 above 10 TB, $0.07 above 50 TB and $0.05 above 150 TB. This is AWS's outbound data transfer rate rather than an S3-specific one — the charge that R2, Wasabi and Tigris do not levy at all.
Storage (entry plan): Cloudflare R2 or Amazon S3?
Cloudflare R2: 10 GB-month free each month, plus 1 million Class A and 10 million Class B operations
Amazon S3: None. S3 has no plans and no included storage — AWS states there is no minimum charge and you pay only for what you use, billed per GB-month from the first byte. New accounts get AWS Free Tier credits ($100 immediately, up to $200 over six months) which are spendable credit rather than a standing storage allowance.
Should I choose Cloudflare R2 or Amazon S3?
Pick Cloudflare R2 if Serving files to the public, where egress is the bill everyone underestimates. Nothing to pay for bandwidth out, on any storage class, so a busy bucket costs what it costs to store rather than what it costs to read.
Pick Amazon S3 if Workloads already inside AWS, where keeping data in the same region as the compute avoids the transfer charges that dominate an object storage bill.
