Cloudflare R2 Pricing (2026) — Storage, Class A/B Ops, Zero Egress
R2's pitch is simple: S3-compatible object storage with no egress fees, priced on storage plus two classes of operations. Class A (writes, lists, uploads) costs 12.5x what Class B (reads, heads) does. For most apps the free tier — 10 GB, 1M Class A, 10M Class B per month — covers hobby scale entirely.
Rates verified against Cloudflare's official docs · last checked August 2026
Cloudflare R2 pricing table
| Standard storage | Infrequent Access (IA) | |
|---|---|---|
| Storage | $0.015 / GB-month | $0.01 / GB-month |
| Class A operations (writes, lists, uploads) | $4.50 / million | $9.00 / million |
| Class B operations (reads, heads) | $0.36 / million | $0.90 / million |
| Data retrieval | — | $0.01 / GB |
| Egress (internet transfer) | Free | Free |
// Free tier (Standard storage only): 10 GB-month storage, 1M Class A ops, 10M Class B ops per month. Usage is rounded up to the next billing unit — 1.1 GB-month bills as 2 GB-month.
What actually matters
Egress is $0. Always.
This is R2's whole reason to exist. Serving user-uploaded files, images, or media from R2 costs nothing in transfer, where S3 + CloudFront can easily bill more for egress than for storage. There is no free-tier trick — egress is free on every tier, including Infrequent Access.
Class A is 12.5x Class B
$4.50 vs $0.36 per million. Multipart upload assembly, copies, and list calls are all Class A — an S3-sync tool that lists a huge bucket on every run can quietly burn Class A ops. Batch and cache listings.
IA trades operation cost for storage cost
Infrequent Access halves storage ($0.01/GB) but doubles Class A ($9.00/M), triples Class B ($0.90/M), and adds $0.01/GB retrieval with a minimum storage duration. Right for archives, wrong for anything read often.
Example: image-heavy app (100 GB stored, 5M reads, 200K writes / mo)
What people miss
- ▸Billing units round up: 1,000,001 Class A ops in a month bills as 2M. Spiky workloads should track their position relative to the rounding boundary.
- ▸The free tier applies only to Standard storage — objects in IA always bill.
- ▸LifecycleStorageTierTransition (moving objects to IA) is itself a Class A operation.
- ▸Storage bills on average daily peak: a 3 GB spike for 10 days of a 30-day month bills as 1 GB-day-weighted, not 3 GB flat — check the GB-month formula before panic-deleting.
Model your own bill
Plug your monthly volumes into the free calculator and see the total across Workers, KV, R2, D1, and Queues. Then let FlareLog watch the real thing: real-time cost burn alerts fire the moment a loop or spike starts inflating your bill — hours before Cloudflare's 15–60 minute dashboards catch up.
FAQ
How much does Cloudflare R2 cost per GB?
Standard storage is $0.015 per GB-month with a 10 GB free allowance. Infrequent Access is $0.01 per GB-month plus retrieval fees. Operations bill separately: Class A (writes/lists) $4.50 per million and Class B (reads) $0.36 per million, with 1M and 10M per month included free respectively.
Does R2 really have no egress fees?
Yes — data transfer to the internet is free on every storage class and every tier, with no fine print. This is R2's core differentiator versus Amazon S3, where egress typically runs $0.09/GB and often exceeds the storage bill for media-heavy apps.
What's the difference between Class A and Class B operations?
Class A operations mutate state or create listings: PutObject, CopyObject, ListObjects, CreateMultipartUpload, and lifecycle transitions. Class B operations read existing state: GetObject, HeadObject, and similar. A typical read-heavy app (users fetching files) burns mostly Class B at $0.36/M; upload pipelines and sync jobs burn Class A at $4.50/M.
Is R2 cheaper than AWS S3?
For storage, roughly comparable ($0.015 vs $0.023 per GB-month). For read-heavy and especially download-heavy workloads, R2 is dramatically cheaper because of free egress — an app serving 1 TB/month from S3 pays ~$90 in egress alone, while R2 charges $0. Operation costs differ by class: R2 Class B ($0.36/M) undercuts S3 GET pricing, while S3 PUTs can be cheaper than R2's Class A depending on tier.