S3 vs Azure Blob vs GCS: Object Storage Cost Comparison
Three object stores, similar sticker prices, wildly different bills once retrieval and egress hit. Here is where the money actually goes.
Key takeaways
- Per-GB storage is close to a tie across S3, Azure Blob and Google Cloud Storage, roughly $0.020 to $0.023 per GB-month for hot data in US regions as of October 2026.
- Egress decides the bill, and GCS internet egress at $0.12 per GB is the priciest.
- Store data where your compute runs and put a CDN in front.
On this page
For hot data in a US region, the three are within 15% of each other as of October 2026: GCS Standard $0.020, Azure Hot LRS $0.0208, S3 Standard $0.023 per GB-month. Egress, not storage, decides the bill, and GCS internet egress ($0.12/GB) costs the most. Store data next to your compute and front it with a CDN.
Verified against
AWS S3 and data transfer list prices (us-east-1, AWS price list feed), Azure Blob block blob prices (East US, Azure Retail Prices API), and Google Cloud Storage prices (us-central1), against the official AWS, Azure and Google Cloud pricing pages. Checked October 2026.
Every few months someone drops a bucket price into a spreadsheet, sees roughly two cents per GB everywhere, and declares the decision "basically the same." Then the invoice arrives and storage is a rounding error next to retrieval and egress. That gap between sticker price and bill is the whole story.
The tiers, side by side
All three sell the same ladder under different names. AWS: S3 Standard, Standard-IA, Glacier Instant/Flexible Retrieval, Glacier Deep Archive. Azure: Hot, Cool, Cold, Archive access tiers. Google: Standard, Nearline, Coldline, Archive.
List prices per GB-month, first pricing tier, US region (us-east-1, East US LRS, us-central1), as of October 2026:
| Provider | Hot | Cool / IA / Nearline | Cold | Archive | Internet egress, first tier | Archive minimum |
|---|---|---|---|---|---|---|
| AWS S3 | $0.023 | $0.0125 | $0.004 (Glacier IR) | $0.00099 | $0.09/GB (100 GB/mo free) | 180 days |
| Azure Blob | $0.0208 | $0.0152 | $0.0036 | $0.00099 | $0.087/GB (100 GB free) | 180 days |
| Google GCS | $0.020 | $0.010 | $0.004 | $0.0012 | $0.12/GB | 365 days |
Three things stand out. Hot storage is a near tie, with GCS cheapest and S3 about 15% higher. The cool tier is where they spread: Nearline at $0.010 is a third cheaper than Azure Cool. And archive prices converge, so nobody should pick a cloud on deep-archive storage price.
If you read an older comparison that crowned Azure Hot the cheapest, check the date: Azure's East US Hot LRS list price is $0.0208 today, above GCS.
Where the surprises live: requests, retrieval, minimums
The per-GB number is what everyone reads and what matters least for active workloads. The fees that wreck budgets attach to touching your data.
Requests punish small objects. Writes cost about $0.005 per 1,000 on all three hot tiers (S3 PUT, Azure write operations at $0.05 per 10,000, GCS Class A), and reads about $0.0004 per 1,000. Ten million tiny thumbnails cost $50 in writes before you store anything of value. Pack small objects into larger ones when access patterns allow.
Retrieval fees are the cold-tier trap. Reads from cool and colder tiers bill per GB on top of requests. As of October 2026: S3 Standard-IA $0.01, Glacier Instant Retrieval $0.03, Deep Archive $0.02 standard or $0.0025 bulk. Azure Cool $0.01, Cold $0.03, Archive $0.02 standard or $0.10 high priority. GCS Nearline $0.01, Coldline $0.02, Archive $0.05. Cold storage is a bet that you will not read the data.
Minimum durations bill you for deleted data. Delete an object a week after writing it to a 30-day tier and you pay for 30 days. The minimums: AWS 30 days (IA), 90 (Glacier Instant and Flexible), 180 (Deep Archive). Azure 30 (Cool), 90 (Cold), 180 (Archive). Google 30, 90, and 365 for Archive. S3's IA and Glacier Instant tiers also bill every object as at least 128 KB. More of these traps are in S3 cost traps: storage classes and requests.
The number that dominates: egress
Storage is cheap, requests are cheap, egress is the bill. AWS charges $0.09/GB for the first 10 TB to the internet after 100 GB free, tapering to $0.085, $0.07 and $0.05 at volume. Azure, on Microsoft's network, charges $0.087 after 100 GB free, then $0.083 and $0.07. GCS charges $0.12/GB up to 10 TiB, $0.11 to 150 TiB, and $0.08 beyond.
Serve 100 TB a month and egress is $7,700 to $11,100, while storage under it is about $2,000. At that point you run an egress service with a storage cache attached, which is why CDN offload pays back so fast. The mechanics are in data transfer and egress costs, and if egress is the whole bill, Cloudflare R2 vs S3 is worth a read.
Concrete: 1 TB and 100 TB
Shape: hot-tier storage, the whole dataset served to the internet once a month, 2 million GETs. List prices, no discounts, rounded.
Store and serve 1 TB a month:
- Storage: AWS $23, Azure $21, GCS $20
- Egress: AWS $81 (900 billable GB), Azure $78, GCS $120
- Requests: about $0.80 on each
Totals: AWS about $105, Azure about $100, GCS about $141. Storage differences are noise; GCS loses on egress.
Store and serve 100 TB a month:
- Storage: AWS $2,250 (tiered past 50 TB), Azure $2,040, GCS $2,000
- Egress: AWS about $7,800, Azure about $7,700, GCS about $11,100
Totals: AWS about $10,050, Azure about $9,740, GCS about $13,100. Storage is around 20% of the bill. Front this with a CDN that absorbs 80 to 90% of reads and origin egress collapses, which changes the vendor math more than any bucket price.
Make the tier choice automatic
Pick tiers with lifecycle rules, not by hand. This S3 rule moves logs to Standard-IA after 30 days, Deep Archive after 180, and deletes them after two years:
{
"Rules": [
{
"ID": "logs-tiering",
"Filter": { "Prefix": "logs/" },
"Status": "Enabled",
"Transitions": [
{ "Days": 30, "StorageClass": "STANDARD_IA" },
{ "Days": 180, "StorageClass": "DEEP_ARCHIVE" }
],
"Expiration": { "Days": 730 }
}
]
}
aws s3api put-bucket-lifecycle-configuration --bucket my-logs-bucket --lifecycle-configuration file://lifecycle.json
aws s3api get-bucket-lifecycle-configuration --bucket my-logs-bucket
Azure (storage account management policies) and GCS (bucket lifecycle rules) have direct equivalents. Each transition is a billed request, so lifecycle millions of tiny objects and the transition fees can exceed the savings.
Failure modes we see on real bills
- Cold tier, hot reads. Data in Coldline or Glacier read weekly. Retrieval fees exceed what hot storage would have cost. Fix: move it back up, or use S3 Intelligent-Tiering or GCS Autoclass.
- Churn through 90 to 365 day tiers. Short-lived data in Archive pays the full minimum anyway.
- Cross-cloud reads. Compute in one cloud reading a bucket in another pays internet egress on every read.
- Cross-region replicas nobody reads. Replication bills transfer plus a second copy of storage.
Where this breaks
These are list prices for one US region each. Other regions differ, committed-use and enterprise agreements can beat any number here, and Azure prices also vary by redundancy (LRS, ZRS, GRS). Egress to a provider's own CDN, and between services in one region, often bills differently or not at all. Run your own shape through each provider's calculator before signing anything.
Questions people ask
Which is cheapest: S3, Azure Blob or Google Cloud Storage?
For pure hot storage in US regions, GCS Standard ($0.020 per GB-month) edges Azure Hot LRS ($0.0208) and S3 Standard ($0.023) as of October 2026. For a workload that serves its data to the internet, Azure and AWS come out ahead because GCS egress starts at $0.12/GB. The cheapest option is usually the cloud where your compute already runs.
Why is my object storage bill so much higher than the per-GB price?
Because storage is usually the smallest line. Internet egress at $0.09 to $0.12 per GB, per-request fees on millions of small objects, retrieval fees on cool and archive tiers, and minimum storage durations on deleted data all bill separately. Check the cost breakdown by usage type; if data transfer dominates, a CDN or co-locating compute fixes more than changing tiers.
Is S3 Glacier Deep Archive cheaper than Azure Archive?
They cost the same to store, $0.00099 per GB-month in us-east-1 and East US as of October 2026, and both have a 180-day minimum. Retrieval differs: Deep Archive bulk retrieval is $0.0025/GB with hours of latency, while Azure Archive standard retrieval is $0.02/GB. GCS Archive is slightly pricier at $0.0012 with a 365-day minimum.
The call we'd make
Stop chasing the storage line: the three are within a few tenths of a cent per GB for hot data. Pick the cloud your compute already lives in to avoid cross-cloud egress, put everything user-facing behind a CDN, automate tiering with lifecycle rules, and reserve archive tiers for data you are confident you will not read. If your workload is egress-heavy and on GCS, the CDN is not optional. For the wider cost picture, start with our cloud cost optimization guide.
Sources
Cite this article
Kiril Urbonas (2026). S3 vs Azure Blob vs GCS: Object Storage Cost Comparison. DevOpsNess. Updated 2026-10-31. https://www.devopsness.com/blog/s3-vs-azure-blob-vs-gcs
[S3 vs Azure Blob vs GCS: Object Storage Cost Comparison](https://www.devopsness.com/blog/s3-vs-azure-blob-vs-gcs) (Kiril Urbonas, DevOpsNess, updated 2026-10-31)
More from Cloud
Explore more articles in this category
Best FinOps Tools in 2026: Cloud Cost Tools Compared by Spend
Native billing tools, Kubecost and OpenCost, Vantage, CloudZero, Finout, Cloudability, commitment managers, and Infracost, sorted by the problem each solves and how each one charges.
Short-Lived Credentials: STS, Dynamic Secrets, and Why Static Keys Die
Static keys leak and live forever. Short-lived credentials from STS and Vault expire on their own. Here is the token-exchange machinery and the TTL math that make it work.
Kubernetes Cost Tools: Kubecost vs OpenCost vs Cast AI
Your cloud bill says $80k. Your cluster says nothing about which team burned it. Here's how OpenCost, Kubecost, and Cast AI actually split that number.
You might have missed
Evergreen posts worth revisiting.