Three object stores, similar sticker prices, wildly different bills once retrieval and egress hit. Here is where the money actually goes.
Every few months someone drops a bucket price into a spreadsheet, sees $0.023 per GB, and declares the storage decision "basically the same everywhere." Then the invoice shows up and the storage line is a rounding error next to retrieval and egress. That gap between sticker price and real bill is the whole story with object storage, and it is where I keep watching teams get burned.
We run workloads across all three clouds, so I have paid these bills with my own budget. Here is how S3, Azure Blob, and Google Cloud Storage actually compare once you stop looking at the headline $/GB.
All three vendors sell the same rough ladder: a hot tier for data you touch constantly, a cool/infrequent tier for stuff you read occasionally, a cold tier for rarely-touched archives, and a deep archive tier for compliance dead weight. The names differ. AWS uses S3 Standard, Standard-IA, Glacier Instant/Flexible, and Glacier Deep Archive. Azure uses Hot, Cool, Cold, and Archive access tiers. Google uses Standard, Nearline, Coldline, and Archive.
Here is the per-GB-month picture for a US region, rounded to what you can plan against. Prices drift, so treat these as ratios rather than gospel.
| Tier | AWS S3 | Azure Blob | Google GCS |
|---|---|---|---|
| Hot / Standard | $0.023 | $0.018 | $0.020 |
| Cool / IA / Nearline | $0.0125 | $0.010 | $0.010 |
| Cold / Coldline | $0.004 | $0.0036 | $0.004 |
| Archive / Deep | $0.00099 | $0.00099 | $0.0012 |
| PUT (per 1k) | $0.005 | $0.0055 | $0.005 |
| GET (per 1k) | $0.0004 | $0.00044 | $0.0004 |
| Retrieval (cold, per GB) | ~$0.01 | ~$0.02 | ~$0.02 |
| Egress to internet (per GB) | ~$0.09 | ~$0.087 | ~$0.12 |
| Min storage duration (cool) | 30 days | 30 days | 30 days |
| Min storage duration (archive) | 180 days | 180 days | 365 days |
Two things jump out. Azure Blob Hot is genuinely cheaper per GB than the other two, by a meaningful 15-20% at the hot tier. If your bill is dominated by warm data that sits in the top tier, Azure wins on paper. Second, the archive tiers converge to nearly identical numbers, so nobody is choosing a cloud based on deep-archive storage price.
The per-GB number is the part everyone reads and the part that matters least for active workloads. The fees that wreck budgets are the ones attached to touching your data.
Request pricing punishes small objects. PUTs run around $0.005 per thousand, GETs about a tenth of that. Store ten million tiny thumbnails and the PUT cost alone is $50 before you have stored a single byte of value. This is why I push teams to pack small objects into larger blobs when access patterns allow it.
Retrieval fees are the trap on cold tiers. Storing in Glacier or Archive is cheap precisely because reading is not. AWS Glacier Flexible and Azure Archive both bill retrieval per GB plus per-request, and Azure's cold-tier retrieval runs roughly double AWS at around $0.02/GB. Pull 10TB back out of archive and you can pay more in one retrieval than a year of storing it. Cold storage is for data you are betting you will not read.
Minimum storage durations quietly bill you for data you already deleted. Put an object in Azure Cool or S3 Standard-IA and delete it after a week, and you still pay the 30-day minimum. Archive tiers stretch this to 180 days on AWS and Azure, and a full 365 days on Google. Churning data through cold tiers is a classic own-goal.
Here is the uncomfortable truth for anyone serving content. Storage is cheap, requests are cheap, and egress is the bill. All three charge roughly $0.09-0.12 per GB to send data to the internet, and Google is the priciest of the three at the top of the tier.
Serve 100TB of images a month and egress alone is $9,000-12,000. The storage under it might be $2,000. You are not running a storage service at that point, you are running an egress service with a storage cache attached. This is exactly why CDN offload and origin-shield caching pay for themselves so fast, and it is the first lever I reach for in any cloud cost optimization review.
Let me make it real. Assume hot-tier storage plus one full read of the data served to the internet each month, which is a reasonable shape for a media or asset workload.
Store and serve 1TB/month:
AWS lands near $116, Azure near $108, GCS near $143. Azure wins, and it wins on both storage and egress. GCS loses almost entirely on egress.
Store and serve 100TB/month:
AWS and Azure sit around $10,000-10,500, GCS closer to $13,000. At scale the storage line is under a quarter of the bill and egress is everything. If this were my workload I would front it with a CDN and cut the origin egress by 80-90%, which changes the vendor math entirely because CDN egress is priced separately and negotiable.
The rules I actually apply:
For pure storage economics on warm data, Azure Blob Hot is the cheapest of the three and it is not especially close. For most real workloads the vendor choice barely moves the needle, because egress dominates and the fix is architectural, not a bucket-price hunt. Pick the cloud your compute already lives in to avoid cross-cloud egress, push everything user-facing behind a CDN, and reserve cold tiers strictly for data you are confident you will not read. Chasing a 20% storage discount while paying full freight on egress is optimizing the wrong line item.
Get the latest tutorials, guides, and insights on AI, DevOps, Cloud, and Infrastructure delivered directly to your inbox.
We've shipped production pipelines on both. Here's where GitHub Actions wins, where GitLab CI wins, and how to pick without regretting it in six months.
How pods can talk to AWS, GCP, and Azure with no static keys — using audience-bound projected ServiceAccount tokens and the cluster OIDC issuer.
Explore more articles in this category
The observability market is huge and the pricing is a minefield. This is the map to the tools that matter, what each is best at, and how to avoid a runaway bill.
Cloud bills grow quietly until someone asks why. This is the map for cutting spend without cutting reliability: where the money actually goes, the levers that work, and the tools worth paying for.
Datadog bills climb quietly until finance forwards the invoice. Here's the playbook we run to cut spend hard while keeping every signal that matters.
Evergreen posts worth revisiting.