Back to Engineering Insights
Cloud Optimization
May 7, 2026
By Ravi Kanani

AWS vs Azure vs GCP Cost Comparison: Which Cloud Is Actually Cheaper for Your Workload in 2026?

AWS vs Azure vs GCP Cost Comparison: Which Cloud Is Actually Cheaper for Your Workload in 2026?
Key Takeaway

There is no universally cheapest cloud. GCP is 10-20% cheaper for compute-heavy workloads. AWS wins on storage with S3 Intelligent-Tiering and Graviton pricing. Azure is cheapest if you have existing Microsoft licenses (hybrid benefit saves 40%). For Kubernetes, GKE's free control plane saves $73/month vs EKS. Always compare total cost for YOUR workload, not list prices.

The Answer Everyone Wants and Nobody Is Giving Honestly

Which cloud is cheapest? AWS, Azure, or GCP?

Every article you will find on this topic gives you the same unsatisfying answer: "it depends on your workload." That is technically true and practically useless. So let me give you something more useful.

For most general-purpose compute, AWS Graviton and GCP Tau T2D are neck and neck and both beat comparable Azure instances by 15 to 25%. For Windows workloads, Azure wins by a landslide if you have existing licenses, sometimes by 80%. For managed Kubernetes, Azure AKS is free while AWS EKS costs $73 per month per cluster. For large-scale analytics, GCP BigQuery is cheaper than almost every alternative. For serverless at low volume, all three are close. At high volume, containers beat all three.

This is the data. We will go category by category, show you the actual numbers, and tell you the pricing tricks each provider hides in their documentation that their sales teams will never bring up.


How to Read This Comparison

Pricing changes. These numbers reflect 2026 on-demand rates for the US East region on each provider. On-demand is the worst-case price. Commitments (Reserved Instances on AWS, Committed Use Discounts on GCP, Reserved VM Instances on Azure) reduce costs by 30 to 60% and shift the comparison differently. We will call out where commitments change the winner.

For multi-cloud environments where you are genuinely choosing where to place workloads, this guide is your decision framework. For single-cloud teams wondering if the other side is greener, this is your reality check.


Compute Cost Comparison: General Purpose

The most common instance comparison: 4 vCPU, 16GB RAM, general purpose, Linux.

ProviderInstanceOn-Demand/hrMonthly (730 hrs)1-Year Commitment
AWSm7g.xlarge (Graviton)$0.1632$119$75 (37% savings)
AWSm7i.xlarge (Intel)$0.2016$147$92 (37% savings)
GCPe2-standard-4$0.134$98$68 (30% CUD)
GCPt2d-standard-4 (AMD)$0.1360$99$69 (30% CUD)
AzureD4s v5$0.192$140$88 (37% savings)
AzureD4ps v5 (ARM)$0.154$112$70 (37% savings)

What the numbers mean: GCP is cheapest on-demand for general purpose. AWS Graviton and GCP are close on committed pricing. Azure ARM instances (D-series ps) are competitive when committed but expensive on-demand.

The hidden advantage for GCP: Sustained Use Discounts apply automatically to any instance that runs more than 25% of the month. By the time an instance has been running the full month, you have already received up to a 30% discount with zero commitment and zero paperwork. This changes the on-demand comparison significantly for stable workloads.

The GCP math: That e2-standard-4 at $0.134/hr on-demand, running all month, effectively costs $68 due to automatic sustained use discounts. The same calculation makes GCP on-demand pricing for always-on workloads nearly match its 1-year committed price.


Compute Cost Comparison: Windows

This is where the comparison flips completely, and Azure wins by a margin that shocks most engineers.

Running Windows Server on a comparable 4 vCPU, 16GB VM:

ProviderInstanceLinux On-Demand/hrWindows On-Demand/hrWindows Premium
AWSm7i.xlarge$0.2016$0.4992+148%
GCPn2-standard-4$0.1900$0.4428+133%
AzureD4s v5$0.192$0.388+102%
Azure + Hybrid BenefitD4s v5$0.192$0.192+0%

Azure Hybrid Benefit lets you bring your existing Windows Server licenses from on-premises to Azure, paying only for the underlying compute. If your organization already owns Windows Server licenses (most enterprise companies do), Azure charges you the Linux price for Windows compute.

That is a $0.196/hr savings per instance, or $143/month per 4-vCPU VM. Scale this across a fleet of 50 Windows servers and you are looking at $7,150/month saved compared to AWS or GCP. That is $85,800/year from this one licensing trick.

If you run Windows workloads and are not on Azure, or are on Azure but have not enabled Hybrid Benefit, this is likely the single highest-ROI optimization available to you.


Kubernetes (Managed) Cost Comparison

This is the comparison that surprises nearly everyone who has not specifically researched it.

Control plane cost per cluster per month:

ProviderServiceControl Plane FeeNotes
AWSEKS$73/month$0.10/hr, mandatory
GCPGKE Standard$73/month$0.10/hr
GCPGKE Autopilot$0Free control plane, billed per pod
AzureAKS$0Control plane is always free

Azure AKS charges nothing for the control plane. You pay only for the VM nodes you run. This is a permanent, structural cost advantage over AWS EKS.

For a company running 5 Kubernetes clusters (dev, staging, QA, production, DR), the difference is:

  • AWS EKS: $73 x 5 = $365/month in cluster fees ($4,380/year)
  • Azure AKS: $0 in cluster fees

That $4,380/year buys real infrastructure. On AWS, it pays for nothing.

GKE Autopilot goes further: no control plane fee AND no charge for unscheduled capacity. You pay only for the pod-level CPU and memory requests that are actually scheduled and running. This makes Autopilot potentially the cheapest option for clusters that are not consistently full.

For clusters that run at high utilization (over 70% of node capacity used most of the time), GKE Standard or EKS with right-sized nodes is typically cheaper because you are paying for raw node capacity. For clusters that have variable utilization, GKE Autopilot or AKS (zero control plane) are the winners.

Our Kubernetes cost optimization guide covers how to calculate the optimal mode for your specific workload patterns.


Storage Cost Comparison: Object Storage

Storing and serving data at scale. These are the base storage costs, but the real cost story is in egress.

ProviderServiceStorage (per GB/mo)GET requests (per 10K)Egress to internet (per GB)
AWSS3 Standard$0.023$0.004$0.09
GCPCloud Storage Standard$0.020$0.004$0.12
AzureBlob Storage Hot$0.018$0.004$0.087
Cloudflare R2R2$0.015$0.36$0.00
Backblaze B2B2$0.006$0.004$0.01

For storage-only workloads where you primarily write and read within the same cloud, Azure is cheapest. For high-egress workloads, Cloudflare R2's zero egress fee changes the calculation entirely.

The real calculation for high-traffic storage: If you store 10TB and serve 50TB of data per month to the internet:

  • AWS S3: $230 (storage) + $4,500 (egress) = $4,730/month
  • Azure Blob: $184 (storage) + $4,350 (egress) = $4,534/month
  • GCP Cloud Storage: $200 (storage) + $6,000 (egress) = $6,200/month
  • Cloudflare R2: $150 (storage) + $0 (egress) = $150/month

At high egress volumes, the provider you choose for compute becomes almost irrelevant for object storage. R2 wins by a factor of 30. Our full cloud storage pricing comparison goes deeper on this across different usage patterns.

One detail teams miss about GCP: GCP offers free egress to Cloudflare CDN and other selected CDN partners. If you serve your GCP-stored data through Cloudflare as the CDN layer, the GCP egress fees disappear. This makes GCP + Cloudflare CDN competitive with R2 for many content delivery use cases.


Database Cost Comparison: Managed PostgreSQL

PostgreSQL is the most common managed database workload. Here is what it actually costs across providers for a common production configuration: 2 vCPU, 8GB RAM, 100GB storage, single availability zone.

ProviderServiceInstanceOn-Demand/mo1-Year Reserved
AWSRDS for PostgreSQLdb.t4g.large$105$66
GCPCloud SQL for PostgreSQLdb-n1-standard-2$103$72 (CUD)
AzureAzure Database for PostgreSQLStandard_D2s_v3$137$87
AzureFlexible Server BurstableStandard_B2ms$46N/A

The Azure Flexible Server Burstable tier is something most teams never find because Azure does not lead with it. It uses burstable CPU instances (like the B-series) that are significantly cheaper for workloads that do not need constant CPU. A development or lightly-loaded staging database on Standard_B2ms costs $46/month versus $105 on AWS RDS.

GCP has its own equivalent: db-g1-small (shared core, 1.7GB RAM) at $13/month and db-f1-micro (shared core, 600MB RAM) at $9/month. These are not suitable for production but are genuinely excellent for development databases, each developer's personal environment, or integration test databases.

For production databases requiring Multi-AZ (two regions, failover), pricing roughly doubles. At that scale, consider Aurora Serverless v2 on AWS, which scales compute down to 0.5 ACUs when idle and can significantly undercut a fixed RDS instance for databases with variable traffic patterns.


Serverless Function Cost Comparison

For infrequently called code, serverless functions are the clear winner over any container or VM. Here is the comparison for a 512MB, 100ms average function at various invocation volumes.

Monthly InvocationsAWS LambdaAzure FunctionsGCP Cloud Functions
1 million$0.00 (free tier)$0.00 (free tier)$0.00 (free tier)
10 million$9.20$9.00$9.00
50 million$46$45$45
100 million$92$90$90

All three providers are nearly identical for pure serverless function pricing. The meaningful differences show up in adjacent factors:

  • Free tier: AWS Lambda gives 1 million free requests per month permanently. Azure and GCP match this.
  • Maximum execution time: Lambda supports up to 15 minutes, Azure Functions up to 10 minutes, GCP Cloud Functions (2nd gen) up to 60 minutes
  • Container-based serverless: GCP Cloud Run is priced per request during actual execution with no minimum billing, and it scales to zero between requests. This makes Cloud Run cheaper than AWS Fargate for bursty workloads that have idle periods, because Fargate charges by the task-second regardless of whether requests are flowing.

The threshold where serverless loses: At 200 million invocations/month, a dedicated container running on a small VM handles the load at roughly $12 to $15/month while Lambda costs $180+. For any high-throughput endpoint, the serverless pricing model is not designed for your use case. The detailed breakdown of the serverless vs container decision is in our guide to cloud cost optimization for modern infrastructure.


Networking and Egress: The Cost Nobody Shows You Upfront

Here is what all three providers have in common: they charge aggressively for data leaving their network, and they make the billing opaque by design.

Traffic TypeAWSAzureGCP
Egress to internet (per GB)$0.09$0.087$0.12
Cross-AZ (same region)$0.01/GB each way$0.01/GB each way$0.01/GB each way
Cross-region (same cloud)$0.02/GB$0.02/GB$0.01/GB (some pairs)
To CDN partnersStandard egressStandard egressFree to Cloudflare, Fastly
IngressFreeFreeFree

Two non-obvious facts that affect your bill:

AWS cross-AZ traffic stacks: In a microservices architecture with services spread across availability zones, you pay $0.01/GB each way, or $0.02/GB for any data that crosses an AZ boundary. This is per-hop. If a request travels through 4 services across 2 AZs, you pay $0.02/GB x 4 service-to-service calls. In a busy microservices environment, cross-AZ traffic can easily cost $2,000 to $8,000/month in hidden charges, billed under "EC2-Other" where nobody looks.

GCP Standard Tier network pricing: GCP's default routing uses Premium Tier, which keeps traffic on Google's private backbone. Standard Tier routes through public internet and costs 30 to 40% less for egress. For batch jobs, analytics pipelines, and cross-cloud data flows that are not latency-sensitive, switching to Standard Tier at the VM or project level is free money. Almost nobody knows this option exists.

For teams running multi-cloud architectures, our guide on multi-cloud cost optimization strategies covers how to architect around these egress charges specifically.


Analytics and Data Warehousing

If you run large-scale data processing and analytics, GCP has a structural advantage most teams discover too late.

BigQuery vs Athena vs Synapse:

ServiceOn-Demand Query CostStorageNotes
GCP BigQuery$5/TB scanned$0.02/GB/moScales to zero, no cluster management
AWS Athena$5/TB scannedS3 at $0.023/GB/moSimilar query pricing
Azure Synapse$5/TB scanned$0.022/GB/moBut Dedicated SQL Pool has min spend
AWS Redshift$0.25/node-hr minimumIncludedEven smallest cluster = $180/month
GCP BigQuery Editions$0.04-0.08/slot-hr$0.02/GB/moFor large committed workloads

On pure query-based analytics, BigQuery, Athena, and Synapse Serverless are priced identically at $5/TB scanned. The practical advantages of BigQuery are:

  • No minimum spend: if you run zero queries, you pay nothing for compute
  • Columnar storage is natively compressed, so your "effective" TB scanned is often 40 to 70% lower than raw data size
  • Streaming ingestion from GCP services is free up to 1TB/month
  • BigQuery ML lets you train models directly in SQL without spinning up separate compute

Where BigQuery loses: if you are on AWS and your data already lives in S3, moving it to BigQuery for analytics incurs egress costs. Athena querying data in S3 incurs no egress. For AWS-native analytics stacks, Athena + S3 + Glue is typically cheaper than BigQuery because there is no data migration and no egress tax.


The Workload Placement Decision Matrix

Based on all the comparisons above, here is the honest placement guide for choosing where to run each workload type:

Workload TypeBest ProviderWhyWhen to Override
General compute (Linux)GCP or AWS GravitonCheapest on-demand + automatic SUDs on GCPIf team expertise strongly favors one provider
Windows computeAzureHybrid Benefit eliminates the Windows premiumIf no existing Windows licenses
Managed KubernetesAzure AKS or GKE AutopilotZero control plane feeEKS if team is AWS-native and already committed
Object storage (high egress)Cloudflare R2 or Backblaze B2Zero or near-zero egressIf deep integration with a specific provider is needed
Object storage (low egress)Azure BlobCheapest storage rateNegligible difference at low scale
Analytics / data warehouseGCP BigQueryNo minimum, per-query, built-in compressionAWS Athena if data already lives in S3
Development databasesGCP or AzureShared-core instances as low as $9/monthNot for production
Production PostgreSQLAWS RDS or Cloud SQLSimilar pricing, choose by primary cloudAzure if already heavily committed to Azure
Serverless functionsAny (pricing is equivalent)Choose by ecosystem fitCloud Run if bursty and container-based
AI/ML trainingAWS or GCPDeepest GPU inventory, best spot optionsAzure for teams using Azure OpenAI or M365

The Three Discount Strategies That Change Everything

After all the base pricing comparisons, the single biggest factor in your actual bill is how you use commitment discounts. Each provider has a different approach.

AWS Savings Plans: Commit to a $/hour spend, get 30 to 40% off. The Compute Savings Plan is the most flexible (applies across instance types, sizes, regions, and operating systems). The risk: you commit to a dollar amount, and if you over-commit, you pay for unused discount. Right-size before committing.

GCP Committed Use Discounts + Sustained Use Discounts: CUDs give you 37 to 55% off for committing to specific vCPU and memory amounts. SUDs give you automatic discounts of up to 30% for instances running most of the month with zero commitment. For variable workloads, SUDs often outperform CUDs because there is no lock-in risk. For stable, predictable workloads, CUDs give deeper discounts than SUDs.

Azure Reserved VM Instances: Up to 37% off for 1-year, up to 66% off for 3-year commitments. The key advantage: Azure reservations are exchangeable within the same VM family, so if you switch from D4s v5 to D8s v5, you can apply the reservation to the new instance. This makes Azure reservations less risky than comparable AWS EC2 Instance Savings Plans.

For multi-cloud teams trying to optimize commitment strategy across all three providers, our cloud financial management guide covers how to build the right commitment split.


Support Plan Costs: The Comparison Nobody Does

Most cost comparisons ignore support plans. But if you run production infrastructure, a business-tier support plan is not optional. Here is what it costs:

ProviderBusiness SupportEnterprise SupportNotes
AWSGreater of $100 or 10% of monthly bill$15,000/month minimumAt $50K/month spend = $5,000/month for Business
GCP$150/month flat + 3-9% of usage$250/month + % of usageSignificantly cheaper at high spend
Azure$300/month flat for Standard$1,000/month for Professional DirectMicrosoft also bundles support with EA agreements

At $50,000/month cloud spend:

  • AWS Business Support: $5,000/month
  • GCP Enhanced Support: $150 + (50,000 x 0.03) = $1,650/month
  • Azure Standard Support: $300/month flat

Support costs are not optimization targets, but they are real costs that belong in your total cost of ownership calculation. At high spend levels, AWS support becomes a meaningful expense that GCP and Azure do not match.



Picking the Right Cloud Is Only Half the Battle

The cloud comparison data is useful, but here is the truth: most teams are not overpaying because they are on the wrong cloud. They are overpaying because they are on the right cloud but running it the wrong way.

The Windows team that should be on Azure but is not enabling Hybrid Benefit is on the right cloud, losing money anyway. The team running 10 Kubernetes clusters on AWS paying $730/month in control plane fees for infrastructure that would be free on AKS. The team storing high-egress data in S3 at $4,500/month when R2 would cost $150.

The savings are in knowing the specific tricks each provider offers and applying them before your bill arrives, not after.

To find out exactly how much you are overpaying across your current cloud setup, take our free Cloud Waste and Risk Scorecard. It identifies provider-specific optimization opportunities in under five minutes.

For help executing a workload-by-workload cost analysis across your AWS, Azure, or GCP environment, our Cloud Cost Optimization and FinOps team does this every day. And if the analysis suggests a migration is worth it, our Cloud Migration service handles the transition.


Related reading:

External resources:

Frequently Asked Questions

Stop Overpaying for Cloud Infrastructure

Our clients save 30-60% on their cloud bill within 90 days. Get a free Cloud Waste Assessment and see exactly where your money is going.