# Cloudflare R2 vs Azure Blob Storage

Canonical: https://inetgeek.com/compare/cloudflare-r2-vs-azure-blob/

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

## At a glance

| Criterion | Cloudflare R2 | Azure Blob Storage |
| --- | --- | --- |
| 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. | First 100 GB a month free, then $0.087 per GB over Microsoft's global network, falling to $0.083 above ~10 TB, $0.07 above ~50 TB and $0.05 above ~150 TB. Routing over the public internet instead is $0.08 at the first tier. This is Azure-wide bandwidth rather than a Blob-specific charge. |
| Storage (entry plan) | 10 GB-month free each month, plus 1 million Class A and 10 million Class B operations | None. Azure Blob has no plans and no free storage band: the Hot LRS storage meter's cheapest tier begins at tierMinimumUnits 0 and charges $0.0208 per GB-month from the first gigabyte, with volume tiers only above 50 TB. Azure's free account offer sits outside the rate card and is time-limited, so it is not an allowance this criterion can record. |
| Storage price | $0.015 per GB-month for Standard, $0.01 for Infrequent Access. Billed rounded up to the whole GB-month. | $0.0208 per GB-month for Hot LRS in East US, falling to $0.019968 above 50 TB and $0.019136 above 500 TB. Azure prices vary by region and redundancy; this and every Azure figure on the site is East US, locally redundant. |
| 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.05 per 10,000 write operations and $0.004 per 10,000 reads on Hot LRS — $5.00 and $0.40 per million. Listing and creating containers is $0.05 per 10,000; all other operations $0.004. |
| 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 Hot. Cool carries a 30-day minimum, Cold 90 days and Archive 180 days — the longest early-deletion window of any provider here, and three times S3's 90-day Glacier figure. |

## 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/))
- Azure Blob Storage: First 100 GB a month free, then $0.087 per GB over Microsoft's global network, falling to $0.083 above ~10 TB, $0.07 above ~50 TB and $0.05 above ~150 TB. Routing over the public internet instead is $0.08 at the first tier. This is Azure-wide bandwidth rather than a Blob-specific charge. ([source](https://prices.azure.com/api/retail/prices))

### 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/))
- Azure Blob Storage: None. Azure Blob has no plans and no free storage band: the Hot LRS storage meter's cheapest tier begins at tierMinimumUnits 0 and charges $0.0208 per GB-month from the first gigabyte, with volume tiers only above 50 TB. Azure's free account offer sits outside the rate card and is time-limited, so it is not an allowance this criterion can record. ([source](https://prices.azure.com/api/retail/prices))

### 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/))
- Azure Blob Storage: $0.0208 per GB-month for Hot LRS in East US, falling to $0.019968 above 50 TB and $0.019136 above 500 TB. Azure prices vary by region and redundancy; this and every Azure figure on the site is East US, locally redundant. ([source](https://prices.azure.com/api/retail/prices))

### 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/))
- Azure Blob Storage: $0.05 per 10,000 write operations and $0.004 per 10,000 reads on Hot LRS — $5.00 and $0.40 per million. Listing and creating containers is $0.05 per 10,000; all other operations $0.004. ([source](https://prices.azure.com/api/retail/prices))

### 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/))
- Azure Blob Storage: None on Hot. Cool carries a 30-day minimum, Cold 90 days and Archive 180 days — the longest early-deletion window of any provider here, and three times S3's 90-day Glacier figure. ([source](https://learn.microsoft.com/en-us/azure/storage/blobs/access-tiers-overview))

## 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 Azure Blob Storage if Workloads already on Azure, where keeping storage in the same region as the compute avoids the bandwidth charge that dominates 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: Azure Blob Storage — Egress is charged beyond the first 100 GB a month, where R2, Wasabi and Tigris charge nothing — and Azure's rates vary by region and redundancy, so a quoted figure only holds for the combination it was read for.

## Documented by only one

- Free tier: Cloudflare R2: Yes
- Pricing model: Azure Blob Storage: Per region, per redundancy and per access tier, with storage, operations and bandwidth metered separately. Rates are published in Azure's public Retail Prices API rather than only on a pricing page, so a figure can be re-verified exactly rather than re-read.
- S3-compatible API: Cloudflare R2: Supported

## Questions this comparison answers

**Egress over allowance: Cloudflare R2 or Azure Blob Storage?**

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.
Azure Blob Storage: First 100 GB a month free, then $0.087 per GB over Microsoft's global network, falling to $0.083 above ~10 TB, $0.07 above ~50 TB and $0.05 above ~150 TB. Routing over the public internet instead is $0.08 at the first tier. This is Azure-wide bandwidth rather than a Blob-specific charge.

**Storage (entry plan): Cloudflare R2 or Azure Blob Storage?**

Cloudflare R2: 10 GB-month free each month, plus 1 million Class A and 10 million Class B operations
Azure Blob Storage: None. Azure Blob has no plans and no free storage band: the Hot LRS storage meter's cheapest tier begins at tierMinimumUnits 0 and charges $0.0208 per GB-month from the first gigabyte, with volume tiers only above 50 TB. Azure's free account offer sits outside the rate card and is time-limited, so it is not an allowance this criterion can record.

**Should I choose Cloudflare R2 or Azure Blob Storage?**

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 Azure Blob Storage if Workloads already on Azure, where keeping storage in the same region as the compute avoids the bandwidth charge that dominates an object storage bill.
