IBRAVRA Media Network
Comparisons • 13 min read

Cloudflare R2 vs AWS S3 vs Backblaze B2: Object Storage Pricing, Worked at Three Volumes

R2, S3, and B2 sell the same bytes on three different meters, and the storage rate is the smallest line on the bill. This guide prices all three at 1 TB and 10 TB with stated egress, and names the 3.8-times egress ratio where the winner changes.

By Enow A. Jovial • Published 2026-11-05

The meter that decides the bill is not the one on the pricing page

Ask three vendors what a terabyte of storage costs and you get three answers that look comparable: 15 dollars, 23 dollars, and 7 dollars a month. Ask what a terabyte costs after the data is actually used — stored, read, and downloaded by real customers — and the answers diverge by a factor of fifty. The storage meter is the smallest line on the bill. The egress meter decides the month: 16 dollars or 3,000.

Cloudflare R2, Amazon S3, and Backblaze B2 sell the same product — S3-compatible object storage — on three different meters. R2 charges for storage and operations and nothing for egress. S3 charges the highest storage rate and 9 cents for every gigabyte that leaves. B2 charges the lowest storage rate and gives away egress up to three times the volume stored, then charges a penny a gigabyte beyond it.

> [!KEY TAKEAWAY]

> At 1 TB stored and 1 TB downloaded a month, B2 costs 7.12 dollars, R2 costs 16.17 dollars, and S3 costs 116.61 dollars — and 92.16 dollars of the S3 bill is egress alone. Choose the vendor by how much data leaves, not by how much data sits.

!Cloudflare R2 pricing, last updated October 30, 2026: Standard storage at 0.015 dollars per GB-month, Class A operations at 4.50 dollars per million, Class B at 0.36 dollars per million, and egress free

Who this guide is for, and who should stop here

This guide is for a founder or engineering lead choosing object storage for an application that serves files to the public — product images, user uploads, video, software downloads, backups that get restored. It assumes the reader will store at least a terabyte and will serve a meaningful share of it every month.

It is not for a cold archive that is written once and never read. An archive workload has no egress, so the decision collapses to the storage rate alone, and B2 at 6.95 dollars per terabyte a month wins that comparison without a worked example. It is also not for a workload already locked into the AWS ecosystem by compliance, IAM, or a data pipeline that cannot move — that buyer is paying the ecosystem price, and the math below tells them what it costs.

The three meters, stated plainly

Cloudflare R2 prices storage at 0.015 dollars per GB-month for Standard storage and 0.01 dollars per GB-month for Infrequent Access storage, on its pricing page last updated October 30, 2026. Class A operations — writes, lists, and other state-mutating calls — cost 4.50 dollars per million requests on Standard and 9.00 dollars per million on Infrequent Access. Class B operations — reads — cost 0.36 dollars per million on Standard and 0.90 dollars per million on Infrequent Access. Egress is free on both storage classes. The free tier covers 10 GB-months of Standard storage, 1 million Class A operations, and 10 million Class B operations a month. Cloudflare rounds billable usage up to the next billing unit, so 1.1 GB-months is billed as 2 GB-months.

Amazon S3 Standard, in US East (N. Virginia), prices storage at 0.023 dollars per GB for the first 50 TB a month, 0.022 dollars for the next 450 TB, and 0.021 dollars beyond 500 TB, per the AWS Price List published November 4, 2026. Requests cost 0.005 dollars per 1,000 PUT, COPY, POST, or LIST requests and 0.0004 dollars per 1,000 GET and all other requests. Data transfer out to the internet costs 0.09 dollars per GB — the figure AWS own pricing page works in its example, where 20 GB transferred out costs 1.80 dollars.

Backblaze B2 prices storage at 6.95 dollars per TB per month — 0.00695 dollars per GB-month — with no minimum file size and no minimum storage duration fees, on its pricing page fetched this cycle. Egress is free up to three times the average monthly data stored, then 0.01 dollars per GB for additional egress. Transactions are free. B2 Overdrive, the high-throughput tier for AI, machine learning, and high-performance workloads, starts at 15 dollars per TB per month with unlimited free egress, and requires a multi-petabyte commitment.

| Meter | Cloudflare R2 Standard | Amazon S3 Standard | Backblaze B2 | Authority |

| :--- | :--- | :--- | :--- | :--- |

| Storage, per GB-month | 0.015 dollars | 0.023 dollars, first 50 TB | 0.00695 dollars | Vendor pricing pages |

| Egress, per GB | 0 dollars | 0.09 dollars | 0 dollars to 3x stored, then 0.01 dollars | Vendor pricing pages |

| Write operations, per 1,000 | 0.0045 dollars | 0.005 dollars | 0 dollars | Vendor pricing pages |

| Read operations, per 1,000 | 0.00036 dollars | 0.0004 dollars | 0 dollars | Vendor pricing pages |

| Free tier | 10 GB-months, 1M Class A, 10M Class B | None beyond new-account free tier | Egress free to 3x stored; transactions free | Vendor pricing pages |

| Infrequent-access storage | 0.01 dollars per GB-month, retrieval 0.01 dollars per GB | 0.0125 dollars per GB-month | Not offered as a separate class | R2 and S3 pricing pages |

Worked math, profile one: 1 TB stored, 1 TB downloaded

Scenario: a small application stores 1 TB of user uploads and serves 1 TB of downloads a month, with 1 million reads and 100,000 writes.

Cloudflare R2:

$

\text{R2} = (1{,}024 \times \$0.015) + (0.1 \times \$4.50) + (1 \times \$0.36) + \$0 = \$15.36 + \$0.45 + \$0.36 = \$16.17

$

Amazon S3:

$

\text{S3} = (1{,}024 \times \$0.023) + (100 \times \$0.005) + (1{,}000 \times \$0.0004) + (1{,}024 \times \$0.09) = \$23.55 + \$0.50 + \$0.40 + \$92.16 = \$116.61

$

Backblaze B2:

$

\text{B2} = (1{,}024 \times \$0.00695) + \$0 + \$0 = \$7.12

$

B2 egress is free because 1 TB downloaded is inside the free allowance of three times the 1 TB stored. S3 egress alone, 92.16 dollars, is nearly six times the entire R2 bill.

Worked math, profile two: 10 TB stored, 30 TB downloaded

Scenario: a media application stores 10 TB and serves 30 TB a month — three times the stored volume, the exact edge of the B2 free egress allowance. Reads are 10 million, writes 1 million.

Cloudflare R2:

$

\text{R2} = (10{,}240 \times \$0.015) + (1 \times \$4.50) + (10 \times \$0.36) + \$0 = \$153.60 + \$4.50 + \$3.60 = \$161.70

$

Amazon S3:

$

\text{S3} = (10{,}240 \times \$0.023) + (1{,}000 \times \$0.005) + (10{,}000 \times \$0.0004) + (30{,}720 \times \$0.09) = \$235.52 + \$5.00 + \$4.00 + \$2{,}764.80 = \$3{,}009.32

$

Backblaze B2:

$

\text{B2} = (10{,}240 \times \$0.00695) + \$0 = \$71.17

$

At this profile B2 egress is still free, because 30 TB downloaded equals exactly three times the 10 TB stored. B2 costs less than half of R2.

Worked math, profile three: 10 TB stored, 100 TB downloaded

Scenario: the same 10 TB store, now serving 100 TB a month — ten times the stored volume, a viral video month or a popular download.

Cloudflare R2 is unchanged: 161.70 dollars, because egress is free at any volume.

Amazon S3:

$

\text{S3} = \$235.52 + \$5.00 + \$4.00 + (102{,}400 \times \$0.09) = \$9{,}460.52

$

Backblaze B2: storage is 71.17 dollars. Egress is free for the first 30 TB and charged at 0.01 dollars per GB for the remaining 70 TB, which is 71,680 GB:

$

\text{B2} = \$71.17 + (71{,}680 \times \$0.01) = \$71.17 + \$716.80 = \$787.97

$

The crossover between B2 and R2 is derivable from the two meters: B2 total equals R2 total when the billable egress charge equals the storage saving, which happens when egress is about 3.8 times the stored volume:

$

\text{Egress}_{\text{crossover}} \approx 3.8 \times \text{Stored}

$

Below about 3.8 times stored, B2 is cheaper. Above it, R2 is cheaper, because R2 egress is free at any volume while B2 charges a penny a gigabyte past the free allowance. S3 never wins on price at any of these profiles. S3 is bought for its ecosystem, not its meter — and the price of the ecosystem is 9,460.52 dollars a month against 161.70 dollars for the same bytes on R2.

!Backblaze B2 pricing: storage starts at 6.95 dollars per TB per month, with free egress up to three times the volume stored and free transactions

| Profile | R2 | S3 | B2 | Winner | Authority |

| :--- | :--- | :--- | :--- | :--- | :--- |

| 1 TB stored, 1 TB egress | 16.17 dollars | 116.61 dollars | 7.12 dollars | B2 | Vendor pricing pages |

| 10 TB stored, 30 TB egress | 161.70 dollars | 3,009.32 dollars | 71.17 dollars | B2 | Vendor pricing pages |

| 10 TB stored, 100 TB egress | 161.70 dollars | 9,460.52 dollars | 787.97 dollars | R2 | Vendor pricing pages |

| Archive, no egress | 15.36 dollars per TB | 23.55 dollars per TB | 7.12 dollars per TB | B2 | Vendor pricing pages |

| Egress ratio where B2 stops winning | — | — | about 3.8x stored | R2 beyond the crossover | Derived from the two vendor meters |

What the meter cannot tell you

Price is not the decision. Three factors outside the meter change the answer.

First, ecosystem. S3 is the default storage of the AWS platform: IAM policies, event notifications, lifecycle rules, replication, and a compliance surface that auditors already understand. R2 and B2 are S3-compatible, which means existing tools mostly work, but compatibility is not identity — a feature that exists only on S3 is a reason to pay the S3 price, and the profiles above state what that reason costs.

Second, throughput and latency. B2 Overdrive exists because standard B2 is not the fastest tier for intensive read workloads; it starts at 15 dollars per TB per month with unlimited free egress, still cheaper than S3 Standard storage alone at 23.55 dollars per TB before any egress. R2 is a Cloudflare product served from its global network, so its egress advantage is also a latency advantage. Our Cloudflare vs Fastly vs AWS CloudFront CDN pricing guide prices the delivery layer that sits in front of whichever store you choose.

Third, minimums and rounding. R2 rounds billable usage up to the next billing unit, so a workload of 1.1 GB-months is billed as 2 GB-months. B2 charges no minimum file size or storage duration fees, which matters for workloads with many small files. S3 charges per request, which matters for workloads with millions of tiny reads: at 100 million GET requests a month, S3 request charges alone are 40 dollars, R2 charges 36 dollars, and B2 charges nothing.

> [!WARNING]

> The S3 egress figure in older comparisons is often quoted as a storage price. It is not. A buyer who moves a download-heavy application to S3 on the strength of a 0.023 dollar storage rate will receive a first bill dominated by a 0.09 dollar egress rate they never priced, and the bill arrives after the migration, when the data is already there. The same warning applies in reverse to B2: the free egress allowance is three times stored, not unlimited, and a viral month that pushes downloads past 3.8 times stored flips the winner to R2.

> [!FOUNDER]

> "Every storage decision I have watched go wrong was made by comparing the storage rate and ignoring the egress rate. The storage rate is the price of sitting still. The egress rate is the price of doing business. An application that serves its files pays the egress rate a hundred times for every once it pays the storage rate. Price the workload, not the warehouse."

> — Enow A. Jovial, Founder & Chief Executive Officer

The migration sequence

Moving between these vendors is a copy operation, not a rewrite, because all three speak the S3 API. The risk in a storage migration is not the copy, it is the cutover.

Step 1: Measure the real workload for 30 days. Record stored gigabytes, egress gigabytes, GET requests, and PUT requests from the current vendor bill. Do not estimate. The egress ratio — egress divided by stored — is the single number that picks the vendor, and the crossover sits at about 3.8.

Step 2: Price the measured workload on all three meters. Run the same four numbers through the formulas in this guide. If the current bill is more than 20 percent above the cheapest meter, the migration pays for itself in the first month.

Step 3: Copy with rclone or the vendor migration tool, keeping the old bucket live. Do not delete the source until the destination has served production traffic for a full billing cycle. The copy is cheap; the rollback is what costs money.

Step 4: Cut over DNS or the application endpoint, then watch the first invoice. Compare the first invoice line by line against the priced workload. The two lines that diverge are usually requests — a chatty application makes more calls than the estimate — and the fix is a cache, not a vendor change. Our CDN stale-while-revalidate and edge purge guide covers the caching layer that cuts both the request count and the egress volume at once.

Step 5: Set the billing alert at the priced total. A storage bill that doubles without a traffic doubling is a bug, a leak, or a misconfiguration — never a price change.

  • [x] Measure stored, egress, GET, and PUT for 30 days — the egress ratio picks the vendor.
  • [x] Price the measured workload on all three meters — same numbers, three bills, one winner.
  • [x] Copy first, cut over second, delete last — the old bucket stays live for a full billing cycle.
  • [x] Compare the first invoice against the priced workload — divergence means a cache problem.
  • [x] Set a billing alert at the priced total — a doubling bill without doubling traffic is a defect.
  • > [!TIP]

    > Run the three profiles through the Product and Service Profit Margin Pricing Calculator with your own stored and egress volumes before signing anything: the calculator holds the arithmetic steady while you change the inputs, and the input that flips the winner is the one to measure hardest.

    When the cheapest meter is the wrong choice

    A workload with a compliance requirement that only S3 satisfies should stay on S3, and the profiles above are the price of that requirement. A workload with millions of tiny files and a hard latency budget should test B2 Overdrive or R2 before committing. A workload with egress below the free allowance on all three vendors should choose on storage rate alone, and B2 wins that comparison.