# Cloudflare R2 vs Amazon S3

Canonical: https://inetgeek.com/compare/cloudflare-r2-vs-amazon-s3/

Every value below is read from Cloudflare R2's and Amazon S3's own documentation. See https://inetgeek.com/methodology/ for how.

## At a glance

| Criterion | Cloudflare R2 | Amazon S3 |
| --- | --- | --- |
| 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. |
| 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 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. ([source](https://developers.cloudflare.com/r2/pricing/))
- 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. ([source](https://pricing.us-east-1.amazonaws.com/offers/v1.0/aws/AWSDataTransfer/current/us-east-1/index.json))

### Storage (entry plan)

- Cloudflare R2: 10 GB-month free each month, plus 1 million Class A and 10 million Class B operations ([source](https://developers.cloudflare.com/r2/pricing/))
- 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. ([source](https://aws.amazon.com/s3/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. ([source](https://developers.cloudflare.com/r2/pricing/))
- 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. ([source](https://pricing.us-east-1.amazonaws.com/offers/v1.0/aws/AmazonS3/current/us-east-1/index.json))

### 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. ([source](https://developers.cloudflare.com/r2/pricing/))
- 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. ([source](https://pricing.us-east-1.amazonaws.com/offers/v1.0/aws/AmazonS3/current/us-east-1/index.json))

### 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. ([source](https://developers.cloudflare.com/r2/pricing/))
- 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. ([source](https://aws.amazon.com/s3/pricing/))

## Which should you choose?

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.

Consider something else: 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.

Consider something else: 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

- Pricing model: Amazon S3: Per region and per storage class, with storage, requests, retrievals, data transfer and management features each metered separately. AWS states there is no minimum charge, and bills storage in binary gigabytes — 1 GB is 2^30 bytes, not 10^9.

## 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.
