Google Cloud Storage (GCS) ranks as the #2 service in our customers’ Google Cloud spend, accounting for 13% of costs. It is convenient because it easily fits into your Google Cloud environment, however, services like Cloudflare R2 can be much cheaper while still integrating seamlessly into your architecture. R2, designed as a competitor to Amazon S3, with S3 compatible APIs, stands out with its free egress model, making it particularly cost-effective for workloads with high outbound data. Recently, Cloudflare expanded its migration capabilities to include GCS, making it a good time to go over when it makes sense to migrate or choose R2 for your storage needs.

Google Cloud Storage Pricing Breakdown

GCS has four storage classes designed for different data access patterns: Standard, for frequently accessed data, and Nearline, Coldline, and Archive for progressively less frequently accessed data at lower storage costs but higher operation costs. It also has a wide range of features, some of which come with additional charges, including automatic object lifecycle management, dual-region buckets for high availability, and advanced security configurations.

The pricing dimensions are data storage (which varies based on region and storage class), operations pricing (which depends on the type of API requests and storage class), and network usage (both within Google Cloud and when transferring data out of Google Cloud).

For the us-east1 region, the pricing breakdown is as follows:

GCS Storage Cost

GCS Storage Class Cost per GB
Standard Storage $0.020
Nearline Storage $0.010
Coldline Storage $0.004
Archive Storage $0.0012

Cost to store data in Google Cloud Storage

GCS Operation Cost

GCS Storage Class Cost per 1,000 Class A (e.g., PUT, POST) Operations Cost per 1,000 Class B (e.g., GET) Operations
Standard Storage $0.0050 $0.0040
Nearline Storage $0.0100 $0.0010
Coldline Storage $0.0200 $0.0100
Archive Storage $0.0500 $0.0500

Cost to make API requests to Google Cloud Storage

GCS Data Transfer Cost

For data transfer within Google Cloud, you are charged based on your bucket location and destination location. For example, transfers between regions in North America cost $0.02 per GB, which is the lowest price point (though you are not charged for data transferred within Google within the same region). The highest rate is a staggering $0.14 per GB, and an example of that would be data transferred from North America to Latin America.

Data egress to external destinations, such as the internet, and other general network usage, is tiered at the following rates (note—China and Australia have higher rates).

GCS Monthly Usage per TB Cost per GB
0-1 $0.12
1-10 $0.11
10+ $0.08

Cost to transfer data out of Google Cloud Storage

Also note—if you decide to use network services, such as VPC peering or Cloud Interconnect, they are billed separately based on the service.

Cloudflare R2 Pricing Breakdown

R2 is newer than GCS, however, it is growing quickly and has a solid set of features, such as undiscoverable bucket names and event notifications. A big stride in growth was the recent beta of the Infrequent Access storage class, which similar to GCS’s Nearline storage, is intended for lower access patterns at a lower storage cost, with the tradeoff of higher cost per operation and a retrieval fee.

R2’s standout differentiator is its lack of egress fees—there are no costs for data transfer out, regardless of destination or volume, making it highly cost-effective for workloads with large amounts of data transfer.

Another difference between GCS and R2 is that R2’s pricing is globally uniform, meaning you pay the same rate regardless of where your data is stored or accessed from. This can yield massive savings compared to GCS if your data is located in a more expensive region.

Pricing for all regions is as follows:

R2 Storage Cost

R2 Storage Class Cost per GB
Standard Storage $0.015
Infrequent Access Storage $0.01

Cost to store data for Cloudflare R2

R2 Operation Cost

R2 Storage Class Cost per 1,000 Class A (e.g., PUT, POST) Operations Cost per 1,000 Class B (e.g., GET) Operations Data Retrieval per GB
Standard Storage $0.0045 $0.00036 N/A
Infrequent Access Storage $0.009 $0.0009 $0.01

Cost to make API requests for Cloudflare R2

GCS vs R2 Free Tiers

Both GCS and R2 offer fairly generous free tiers. Listed below:

Dimension Monthly Free Usage
Standard Storage 5 GB
Class A Operations 5,000
Class B Operations 50,000
Data transfer 100 GB from North America to Google Cloud regions (except Australia and China)

GCS free tier aggregated across us-west1, us-central1, and us-east1 regions

Dimension Monthly Free Usage
Standard storage 10 GB
Class A Operations 1 million requests
Class B Operations 10 million requests

R2 free tier

While both are generous, R2 takes the cake with double the amount of free storage per month, 200 times the amount of Class A and B operations, and, of course, no egress fees.

Example Scenarios R2 vs GCS

It may already be clear when R2 will be cheaper than GCS and vice versa. For Standard storage, R2 is always less expensive. Storage costs $0.005 less per GB, Class A operations are $0.0005 less, and Class B operations are $0.00364 less. R2 also has a significant advantage when it comes to large amounts of egress, as there are no egress fees at all, unlike GCS.

When comparing GCS’s Nearline to R2’s Infrequent Access, the two services are priced similarly, with differences in operational and retrieval costs. While R2 also offers a more generous free tier, GCS has storage class options where the cost per GB can be much lower than R2, particularly for infrequently accessed data. Additionally, GCS has a wider range of features and native integration within the Google Cloud ecosystem, making it appealing for users already embedded in Google Cloud.

The following pricing scenarios aim to illustrate these differences. To keep the comparison simple, we’ll ignore the free tier, assuming those quotas have already been used elsewhere within the applications.

Scenario 1: Frequently Accessed Data with High Egress

A medium-sized application with frequent access patterns stores 10TB of data. In a month, they make about 3,500,000 Class A operations (e.g., PUT and POST) and 6,500,000 Class B (e.g., GET) operations.

GCS Price Calculations
Standard Storage
10TB = 10,000GB
10,000GB x $0.020/GB = $200 

Operations
3,500,000 Class A Operations x $0.0050/1000 = $17.50
6,500,000 Class B Operations x $0.0040/1000 = $26
$17.50 Class A Operations + $26 Class B Operations = $43.50

Total
$200 Standard storage + $43.50 Operations = $243.50

R2 Price Calculations
Standard Storage
10TB = 10,000GB
10,000GB x $0.015/GB = $150

Operations
3,500,000 Class A Operations x $0.00450/1000 = $15.75
6,500,000 Class B Operations x $0.00036/1000 = $2.34
$15.75 Class A Operations + $2.34 Class B Operations = $18.09

Total
$150 Standard storage + $18.09 Operations + = $168.09


For storage and operation costs, R2 is $168.09 compared to $243.50 for GCS (and that’s in the least expensive GCS region), indicating storage costs for R2 will always be less than GCS while in the Standard storage tier.

We also haven’t even gotten to egress costs yet. A public-facing application of this size can expect around 1TB of data transferred monthly to the internet. The cost for GCS is:

1TB=1,000GB

1,000GB x $0.12/GB = $120

There are no egress costs for R2, so the cost remains $168.09 for R2 and grows to $363.5 for GCS.

Scenario 2: Archiving Large Volumes of Data

A large company stores a vast archive of approximately 50TB of documents that are rarely accessed. GCS has the Archive storage class tailored specifically for this use case.

R2 currently offers only a beta version of its Infrequent Access storage class. While this class is designed for less frequent access, it is not intended for archival storage and, therefore, does not provide the same level of cost efficiency for long-term archival as GCS’s Archive storage class.

There are about 500,000 Class B Operations (GET requests) and 500 GB of data retrieved per month.

GCS Price Calculations
Archive Storage
50TB = 50,000GB
50,000GB x $0.0012/GB = $60

Operations
500,000 Class B Operations x $0.0500/1000 = $25

Total
$60 Archive storage + $25 Operations + = $85

R2 Price Calculations
Infrequent Access Storage
50TB = 50,000GB
50,000GB x $0.01/GB = $500

Operations
500,000 Class B Operations x $0.0009/1000 = $0.45

Retrieval
500GB x $0.01/GB = $5

Total
$500 Infrequent Access storage + $0.45 Operations + $5 Retrieval = $505.45


At $85 for GCS compared to $505.45 for R2, GCS is much cheaper for archival use cases.

Conclusion

R2 is the cost-effective choice in many scenarios, especially applications with large amounts of egress data. When comparing use cases with frequently accessed data using two Standard storage classes, R2 will always be less expensive. On the other hand, GCS provides cost-saving opportunities for infrequently accessed and archival data due to more options for storage classes. GCS also has more advanced features for users deeply embedded in Google’s platform.