The three big clouds are closer on list price than the sales decks suggest. Where they actually diverge is discounts, egress, and Windows licensing.
Every few months someone on the team forwards a "cloud X is 40% cheaper" blog post, and every time we pull the actual invoices the gap turns out to be a rounding error hiding behind three different discount programs. So here's what we see on real bills across AWS, Azure, and GCP in mid-2026, with numbers you can check against a calculator.
The short version: on-demand compute is near parity. The money leaks out through egress, Windows licensing, and whether you understood the discount model before you signed anything.
Take a general-purpose box with 2 vCPU and 8 GB of RAM in a US region — the workhorse tier most services actually run on. On-demand list prices for a Linux instance land in a tight band.
AWS m6i.large runs about $0.096/hr, so roughly $70/month on-demand. Azure's D2s v5 is close, around $0.096/hr, another $70/month. GCP's e2-standard-2 lists near $0.067/hr for the base, but the real story is sustained use: run it the whole month and Google auto-applies a discount that lands you closer to $48-52/month without signing anything. A comparable e2-medium (2 vCPU shared, 4 GB) is cheaper still and is where GCP's sustained-use pricing shows its teeth for smaller services.
AWS list prices tend to sit 10-20% above the other two before discounts. That premium mostly evaporates once you commit, but if your workload is spiky and you never commit, you feel it.
Commit for one year and the picture shifts again. AWS Savings Plans knock 30-40% off. Azure Reservations do similar. GCP committed-use discounts hit 37% for one year and up to 55% for three, stacking on top of the sustained-use baseline.
For 1 TB of standard object storage, the per-GB rates matter more than people expect once you cross into terabytes.
S3 Standard is about $0.023/GB, so ~$23/month for 1 TB. GCP Standard is similar at $0.020/GB, ~$20/month. Azure Blob Hot comes in lower, around $0.018/GB, ~$18/month. Not a fortune at 1 TB, but multiply by 500 TB and Azure's edge becomes a line item worth defending in a budget review.
The catch is that storage list price is the least of your storage bill. Request costs, retrieval fees on cold tiers, and lifecycle transitions do more damage than the per-GB rate. Read the fine print on tiering before you celebrate a cheap headline number.
This is where the "which cloud is cheaper" question usually gets decided, and it's rarely in the compute row.
All three charge roughly $0.08-0.12/GB for internet egress after the free tier, with volume discounts that only matter at petabyte scale. GCP and Azure both offer a modest free monthly allowance; AWS gives 100 GB free per month. Push 10 TB out to users and you're looking at $800-1,000/month on any of them. Move data between regions and you pay again.
The trap is architectural, not per-cloud: chatty cross-region traffic and un-cached asset delivery quietly become your second-biggest bill. This is the single line we attack first in any cloud cost optimization engagement, because it's almost always oversized and almost always invisible until you graph it.
Managed Postgres, roughly 2 vCPU / 8 GB, single instance:
db.m6g.large): ~$0.17/hr plus storage, about $130-150/month all-in.Managed database pricing is close enough that latency to your app tier and operational features (failover behavior, read replicas, backup retention) should drive the choice, not the $10/month delta.
| Dimension | AWS | Azure | GCP |
|---|---|---|---|
| 2vCPU/8GB on-demand | ~$70/mo | ~$70/mo | ~$48-52/mo (sustained) |
| 1-yr commitment | Savings Plans, 30-40% off | Reservations, ~35% off | CUD 37% (1yr) / 55% (3yr) |
| 1TB object storage | S3 ~$23/mo | Blob Hot ~$18/mo | GCS ~$20/mo |
| Managed Postgres (2/8) | ~$130-150/mo | ~$130/mo | ~$120-135/mo |
| Automatic discount | None | None | Sustained use (no commit) |
| Windows licensing | Baked into rate | Hybrid Benefit (BYOL) | Baked into rate |
| Flexibility of commit | High (Savings Plans) | Medium | High (CUD, some flex) |
The two structural differences worth internalizing: GCP gives you a discount for just running the instance, no paperwork. And Azure Hybrid Benefit lets you bring existing Windows Server and SQL Server licenses, which can cut a Windows VM bill by 40% or more. If your fleet is Windows-heavy and you already own licenses, that one feature can outweigh every other price on this page.
SaaS startup, Linux, unpredictable growth. GCP. Sustained-use discounts reward you before you're ready to sign a commitment, and you avoid the "we bought Reserved Instances for a workload we killed" regret. The e2 family is genuinely cheaper for the small, always-on services a young SaaS runs.
Windows shop with existing licenses. Azure, and it isn't close. Hybrid Benefit plus Reservations on Windows and SQL Server workloads beat the others on the exact thing you run most. The integration with Active Directory and existing Microsoft agreements is a bonus your finance team already understands.
Data-heavy analytics. Look past compute entirely and price the egress and inter-service transfer. AWS has the deepest data ecosystem, but its egress and cross-AZ charges bite hardest at volume. GCP's networking is often cheaper for east-west traffic. Model your actual data movement before you pick; the storage row is a distraction here.
For a greenfield Linux workload with no strong Microsoft ties, we default to GCP, mostly for the no-commitment sustained-use pricing and cheaper east-west networking. For anyone with a Windows estate and licenses already on the books, Azure Hybrid Benefit makes the math one-sided. AWS remains the safe pick when you need the widest service catalog and you're disciplined about buying Savings Plans on day one — but if you skip the commitment step, you'll pay the 10-20% list premium for nothing. Pick the discount model you'll actually operate, not the headline rate. That decision, not the per-hour price, is what shows up on the invoice.
Get the latest tutorials, guides, and insights on AI, DevOps, Cloud, and Infrastructure delivered directly to your inbox.
Our best engineer quit citing on-call. We rebuilt the whole thing: saner rotations, runbooks that actually help at 3am, and escalation that doesn't punish asking for help.
We ripped every client secret out of our CI pipelines by pointing Azure federated credentials at GitHub's OIDC issuer. Here's the exact setup and the claims that trip people up.
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.