Pricing
R2 charges based on the total volume of data stored, along with two classes of operations on that data:
- Class A operations which are more expensive and tend to mutate state.
- Class B operations which tend to read existing state.
For the Infrequent Access storage class, data retrieval fees apply. There are no charges for egress bandwidth for any storage class.
All included usage is on a monthly basis.
Standard storage | Infrequent Access storageBeta | |
---|---|---|
Storage | $0.015 / GB-month | $0.01 / GB-month |
Class A Operations | $4.50 / million requests | $9.00 / million requests |
Class B Operations | $0.36 / million requests | $0.90 / million requests |
Data Retrieval (processing) | None | $0.01 / GB |
Egress (data transfer to Internet) | Free 1 | Free 1 |
You can use the following amount of storage and operations each month for free. The free tier only applies to Standard storage.
Free | |
---|---|
Storage | 10 GB / month |
Class A Operations | 1 million requests / month |
Class B Operations | 10 million requests / month |
Egress (data transfer to Internet) | Free 1 |
Storage is billed using gigabyte-month (GB-month) as the billing metric. A GB-month is calculated by averaging the peak storage per day over a billing period (30 days).
For example:
- Storing 1 GB constantly for 30 days will be charged as 1 GB-month.
- Storing 3 GB constantly for 30 days will be charged as 3 GB-month.
- Storing 1 GB for 5 days, then 3 GB for the remaining 25 days will be charged as
1 GB * 5/30 month + 3 GB * 25/30 month = 2.66 GB-month
For objects stored in Infrequent Access storage, you will be charged for the object for the minimum storage duration even if the object was deleted or moved before the duration specified.
Class A Operations include ListBuckets
, PutBucket
, ListObjects
, PutObject
, CopyObject
, CompleteMultipartUpload
, CreateMultipartUpload
, LifecycleStorageTierTransition
, ListMultipartUploads
, UploadPart
, UploadPartCopy
, ListParts
, PutBucketEncryption
, PutBucketCors
and PutBucketLifecycleConfiguration
.
Class B Operations include HeadBucket
, HeadObject
, GetObject
, UsageSummary
, GetBucketEncryption
, GetBucketLocation
, GetBucketCors
and GetBucketLifecycleConfiguration
.
Free operations include DeleteObject
, DeleteBucket
and AbortMultipartUpload
.
Data retrieval fees apply when you access or retrieve data from the Infrequent Access storage class. This includes any time objects are read or copied.
For objects stored in Infrequent Access storage, you will be charged for the object for the minimum storage duration even if the object was deleted, moved, or replaced before the specified duration.
Storage class | Minimum storage duration |
---|---|
Standard storage | None |
Infrequent Access storageBeta | 30 days |
Super Slurper is free to use. You are only charged for the Class A operations that Super Slurper makes to your R2 bucket. Objects with sizes < 100MiB are uploaded to R2 in a single Class A operation. Larger objects use multipart uploads to increase transfer success rates and will perform multiple Class A operations. Note that your source bucket might incur additional charges as Super Slurper copies objects over to R2.
Once migration completes, you are charged for storage & Class A/B operations as described in previous sections.
Sippy is free to use. You are only charged for the operations Sippy makes to your R2 bucket. If a requested object is not present in R2, Sippy will copy it over from your source bucket. Objects with sizes < 200MiB are uploaded to R2 in a single Class A operation. Larger objects use multipart uploads to increase transfer success rates, and will perform multiple Class A operations. Note that your source bucket might incur additional charges as Sippy copies objects over to R2.
As objects are migrated to R2, they are served from R2, and you are charged for storage & Class A/B operations as described in previous sections.
To learn about potential cost savings from using R2, refer to the R2 pricing calculator ↗.
If a user writes 1,000 objects in R2 for 1 month with an average size of 1 GB and requests each 1,000 times per month, the estimated cost for the month would be:
Usage | Free Tier | Billable Quantity | Price | |
---|---|---|---|---|
Class B Operations | (1,000 objects) * (1,000 reads per object) | 10 million | 0 | $0.00 |
Class A Operations | (1,000 objects) * (1 write per object) | 1 million | 0 | $0.00 |
Storage | (1,000 objects) * (1GB per object) | 10 GB-months | 990 GB-months | $14.85 |
TOTAL | $14.85 | |||
If a user writes 100,000 files with an average size of 100 KB object and reads 10,000,000 objects per day, the estimated cost in a month would be:
Usage | Free Tier | Billable Quantity | Price | |
---|---|---|---|---|
Class B Operations | (10,000,000 reads per day) * (30 days) | 10 million | 290,000,000 | $104.40 |
Class A Operations | (100,000 writes) | 1 million | 0 | $0.00 |
Storage | (100,000 objects) * (100KB per object) | 10 GB-months | 0 GB-months | $0.00 |
TOTAL | $104.40 | |||
To learn more about how usage is billed, refer to Cloudflare Billing Policy.
No. You are not charged for operations when the caller does not have permission to make the request (HTTP 401 Unauthorized
response status code).
-
Egressing directly from R2, including via the Workers API, S3 API, and
r2.dev
domains does not incur data transfer (egress) charges and is free. If you connect other metered services to an R2 bucket, you may be charged by those services. ↩ ↩2 ↩3