All three clouds charge for object storage in the same basic way: a monthly rate per gigabyte that depends on the tier, plus charges for requests, retrieval from colder tiers, early deletion, tier changes and data leaving the cloud. The cheapest tier per gigabyte is often the most expensive one to read from, so the right choice depends on how often you access the data. This guide explains how Amazon S3, Azure Blob Storage and Google Cloud Storage structure those charges, where they differ, and how to estimate a bill without relying on rates that change.
It is written for administrators, developers and small-business owners who store backups, files or application data in the cloud and want to compare the models before choosing or moving data. You will finish with a tier comparison, the minimum-duration rules that cause surprise charges, an egress checklist and a worksheet you can fill in with current rates. Documentation was checked on 28 October 2026. Dollar rates vary by region and change over time, so this article describes the structure and points to the pricing pages for the numbers.
The six cost components
Whichever cloud you use, a bill is the sum of these parts:
- Capacity. Gigabytes stored per month, priced by tier, region and redundancy.
- Requests (operations). Charges per thousand or per ten thousand operations such as writes, reads and listings. Azure bills per 10,000 operations; AWS's pricing page quotes GET requests per 1,000.
- Data retrieval. A per-gigabyte fee for reading from colder tiers.
- Early deletion and minimum duration. If you delete or move data before a tier's minimum period, you pay for the remainder.
- Tier changes and management. Lifecycle transitions are billed as operations. Automatic tiering features may add a monitoring fee.
- Outbound data transfer (egress). Data leaving the provider's network or region.
A large share of unexpected bills come from items 3 to 6 rather than capacity.
Tier comparison
| Access pattern | Amazon S3 | Azure Blob Storage | Google Cloud Storage |
|---|---|---|---|
| Frequent access | S3 Standard (default) | Hot (default for new general-purpose v2 accounts) | Standard (default) |
| Infrequent, immediate access | S3 Standard-IA, S3 One Zone-IA | Cool, Cold | Nearline, Coldline |
| Archive with immediate access | S3 Glacier Instant Retrieval | Not offered as a separate tier | Archive (available within milliseconds) |
| Archive, retrieval in minutes to hours | S3 Glacier Flexible Retrieval, Deep Archive | Archive (offline; up to 15 hours to rehydrate) | Not applicable |
| Automatic tiering | S3 Intelligent-Tiering | Smart tier | Autoclass |
| Low-latency special cases | S3 Express One Zone | Premium | Rapid storage (zonal buckets) |
Minimum storage durations
| Tier | Minimum duration |
|---|---|
| S3 Standard-IA, S3 One Zone-IA | 30 days |
| S3 Glacier Instant Retrieval, Flexible Retrieval | 90 days |
| S3 Glacier Deep Archive | 180 days |
| Azure Cool | 30 days (general-purpose v2 accounts) |
| Azure Cold | 90 days |
| Azure Archive | 180 days |
| Google Nearline | 30 days |
| Google Coldline | 90 days |
| Google Archive | 365 days |
The penalty is prorated. Azure's documentation gives an example: a blob moved to cool and deleted after 21 days is charged an early deletion fee equal to 9 days of cool storage. AWS states that objects deleted, overwritten or transitioned before 30 days from Standard-IA incur the normal storage charge plus a prorated charge for the remainder of the minimum.
S3 Standard-IA, One Zone-IA and Glacier Instant Retrieval also have a 128 KB minimum billable object size, so many tiny objects in those classes cost more than their size suggests.
Amazon S3 details
S3 stores each object in a storage class, with S3 Standard used if you do not choose one. The user guide lists these classes: Standard, Express One Zone, Intelligent-Tiering, Standard-IA, One Zone-IA, Glacier Instant Retrieval, Glacier Flexible Retrieval and Glacier Deep Archive.
Points that affect cost:
- Retrieval fees. Standard-IA, One Zone-IA and Glacier Instant Retrieval charge per-GB retrieval fees. Glacier Flexible Retrieval and Deep Archive include retrieval charges when you restore archived objects, which you must do before reading them.
- Intelligent-Tiering. It has no retrieval fees but charges a small monthly per-object monitoring and automation fee. Objects under 128 KB are not monitored and stay in the Frequent Access tier. It moves objects not accessed for 30 consecutive days to Infrequent Access, and after 90 consecutive days to Archive Instant Access; optional Archive Access and Deep Archive Access tiers require restore requests.
- One Zone classes. S3 One Zone-IA stores data in a single Availability Zone, so it is not resilient to losing that zone.
- Data transfer. The pricing page says the first 100 GB per month of data transfer out to the internet is free, aggregated across AWS services and Regions (excluding China and GovCloud). Data in from the internet, transfers between buckets in the same Region and transfers to AWS services in the same Region are free.
- Free plan. New AWS accounts on the free plan have separate credit-based terms; see AWS vs Azure vs Google Cloud Free Tier: What You Actually Get.
Azure Blob Storage details
Azure's access tiers are hot, cool, cold and archive, plus a smart tier that moves data between hot, cool and cold based on usage. Points that affect cost:
- Capacity and access trade-off. Per-GB capacity cost falls as the tier gets cooler, while access and transaction charges rise.
- Data retrieval. The pricing page states retrieval is free for hot and premium and charged for cool, cold and archive.
- Operations. Write, read, list and other operations are billed per 10,000.
- Archive is offline. A blob in archive cannot be read or modified until rehydrated to hot, cool or cold, which can take up to 15 hours depending on the priority. Only accounts configured for LRS, GRS or RA-GRS support archive; ZRS, GZRS and RA-GZRS accounts do not.
- Tier changes. Moving to a cooler tier is billed as a write operation to the destination tier. Moving to a warmer tier is billed as a read from the source tier, including read operations and retrieval charges, and early deletion charges may apply. If you toggle a general-purpose v2 account's default tier, you pay write operations for blobs with inferred tiers when moving cooler and read plus retrieval when moving warmer.
- Copy to avoid a penalty. Copy Blob can avoid the early deletion penalty when moving from cool or cold to hot, but you pay capacity for both blobs until the source is removed.
- Redundancy. Redundancy choices (LRS, ZRS, GRS, RA-GRS, GZRS, RA-GZRS) change the capacity price. For the options, see Azure Storage Redundancy: LRS vs ZRS vs GRS Explained.
- Egress. Outbound data transfer from an Azure region is billed per GB on the bandwidth pricing page, and geo-replication data transfer adds a charge for GRS, RA-GRS and GZRS.
Google Cloud Storage details
Cloud Storage has four storage classes: Standard, Nearline, Coldline and Archive. If you do not specify a class when creating a bucket, it defaults to Standard. Points that affect cost:
- Retrieval fees apply to Nearline, Coldline and Archive; Standard has none.
- No offline tier. Archive data is available within milliseconds, not hours or days, but carries a 365-day minimum.
- Location types. Region, dual-region and multi-region buckets are priced differently; the pricing page is organised by location.
- Autoclass. Lets Cloud Storage transition objects between classes automatically, with its own management pricing described on the pricing page.
- Changing classes. Changing a bucket's default class does not affect existing objects; you rewrite objects or use Object Lifecycle Management.
- Free tier. The free tier includes 5 GB-months of regional storage in US regions and 100 GB of outbound transfer from North America each month.
Egress: the cost people forget
Egress is the most common source of surprises, and it is easy to trigger accidentally:
- Serving public files directly from a bucket to many users.
- Pulling a large dataset to an on-premises system or another cloud.
- Moving data between regions for analysis or replication.
- Restoring a large backup.
Before you commit, estimate monthly outbound gigabytes and look up the rate on each provider's data transfer or bandwidth pricing page. Note the free allowances: AWS gives the first 100 GB per month out to the internet, and Google's free tier lists 100 GB of outbound transfer from North America for Cloud Storage. Check whether a content delivery network in front of storage changes the economics for public content. Also remember that migrating away later involves egress for the entire dataset.
Worksheet: estimate your own bill
Fill in the quantities, then multiply by the current rate from each provider's pricing calculator for your region.
| Line | Quantity to estimate | Rate source |
|---|---|---|
| Capacity per tier | GB-months in each tier | Provider pricing page |
| Write operations | Count per month | Per 1,000 (AWS) or per 10,000 (Azure) operations |
| Read operations | Count per month | Same |
| Retrieval | GB read from cold tiers | Per-GB retrieval rate |
| Early deletion | GB removed before the minimum period | Prorated remaining days of the tier's capacity rate |
| Tier transitions | Objects moved by lifecycle rules | Operation rate |
| Egress | GB out to the internet or another region | Bandwidth pricing page |
| Redundancy | LRS, ZRS, GRS and so on | Pricing by redundancy |
Run the worksheet for at least two scenarios: a typical month and a busy month (a restore, a migration or a traffic spike). The busy month usually shows which tier choices are risky.
Choosing a tier: practical rules
- If you do not know the access pattern, use the provider's automatic tiering (S3 Intelligent-Tiering, Azure smart tier or Google Autoclass), and read the fee model first. On S3, remember the per-object monitoring fee and the 128 KB rule.
- Use a lifecycle policy to move aging data to cooler tiers, and to expire data at the end of its life, rather than moving files by hand.
- Keep short-lived data out of tiers with 90 to 365 day minimums.
- For backups you might need to restore urgently, avoid offline or restore-first tiers (Azure archive, S3 Glacier Flexible Retrieval and Deep Archive) or accept the wait.
- Prefer the default and simplest tier until you have measured access patterns.
Pre-decision checklist
- List data sets, sizes, growth and how often each is read.
- Check minimum durations against how long you will keep each data set.
- Estimate egress, including restore scenarios.
- Look up current regional rates in each pricing calculator.
- Set a budget alert before loading data.
- Test a lifecycle rule on a small container or bucket.
References
- Amazon S3 pricing: https://aws.amazon.com/s3/pricing/
- Amazon S3 User Guide, understanding and managing storage classes: https://docs.aws.amazon.com/AmazonS3/latest/userguide/storage-class-intro.html
- Azure Blob Storage pricing: https://azure.microsoft.com/en-us/pricing/details/storage/blobs/
- Microsoft Learn, access tiers for blob data: https://learn.microsoft.com/en-us/azure/storage/blobs/access-tiers-overview
- Google Cloud Storage pricing: https://cloud.google.com/storage/pricing
- Google Cloud documentation, storage classes: https://docs.cloud.google.com/storage/docs/storage-classes
- Google Cloud documentation, free cloud features: https://docs.cloud.google.com/free/docs/free-cloud-features
Comments
Questions and tips are welcome. Comments are checked by the EpiFive team before they appear; please do not share passwords, phone numbers or other private details.