Cloudflare R2 vs Amazon S3 for WordPress Media
For most WordPress media libraries, Cloudflare R2 is the cheaper choice once your site has real traffic, because it has no fee for data visitors download. Amazon S3 makes sense if you already run on AWS, or need a specific region. Both work well for this job, so compare them using your own numbers.
How do their prices compare?
| Cloudflare R2 | Amazon S3 (US East) | |
|---|---|---|
| Storage | $0.015 per GB a month | $0.023 per GB a month |
| Data to visitors | No fee | First 100 GB a month free across AWS, then $0.09 per GB for the next 10 TB |
| Minimum storage time | None | None for S3 Standard |
| Free amounts | 10 GB of storage, 1 million write and 10 million read operations a month | Up to $200 in credits for new customers |
Checked 2026-11-06 on Cloudflare's and AWS's pricing pages. Both also charge for operations. Confirm the current numbers before you decide.
A worked example
Say you store 100 GB and send 500 GB to visitors each month, leaving out operations and free storage allowances.
- R2: 100 × $0.015 = $1.50 a month.
- S3: storage is 100 × $0.023 = $2.30. Data out is (500 − 100) × $0.09 = $36. In total, $38.30 a month.
These are example figures, not a quote. With little traffic, the gap is small. With a lot, it's most of the bill.
Where does S3 have the edge?
- Choice of region. You pick exactly where your files live, which can matter for compliance or for visitors in one area.
- Your existing AWS account. If your billing, permissions and tools are there, one more bucket is simple.
- Wide support. Almost everything that talks to object storage knows S3.
Where does R2 have the edge?
- Predictable download costs. A traffic spike doesn't turn into a data bill.
- A domain and CDN in one place, if your site's domain is already on Cloudflare.
What setup differences matter?
R2 needs a custom domain on the same Cloudflare account for a live site, because the r2.dev address is rate-limited. S3 needs you to turn off Block Public Access for the bucket and add a bucket policy.
Can you switch later?
Yes, in two steps: bring everything back to your server, connect the new bucket, and offload again. There's no one-step move between providers in Offloft.