AWS vs. Azure vs. Google Cloud: A 2026 Free Tier Comparison From Real Use
I have burned small amounts of money on all three major cloud providers. Not a lot, but enough to remember the mistakes. This post is the comparison I wish I had before opening those accounts: not a marketing table, but the practical differences I noticed while actually using AWS, Azure, and GCP for small projects.
I am not going to declare a winner. Each one is free in a different way, and each one has a different way of surprising you with a bill. What matters is matching the provider to what you are actually trying to do.
Why I compared them at all
After my AWS internship and a few side projects, I wanted to know whether the free tier on Azure or GCP was meaningfully better for a hobby project. I built the same small static site plus a tiny database-backed note app on all three. I tracked what was free, what broke, what was annoying, and what quietly cost money.
The honest answer: AWS has the most hiring-market value, GCP has the best long-term free compute option, and Azure sits in the middle with a few specific Microsoft ecosystem wins. None of them is magic. All of them require you to watch your resources.
Compute comparison
Compute is usually the biggest line item, so this is where the free tiers matter most.
| Provider | Free compute | Notes |
|---|---|---|
| AWS | 750 hours/month of t2.micro or t3.micro for 12 months | Two burstable vCPUs. Watch CPU credit balance during spikes. |
| Azure | 750 hours/month of B1s for 12 months | One vCPU, similar burstable model. Slightly weaker baseline. |
| GCP | e2-micro Always Free | Two shared vCPUs, but only free in certain regions. No 12-month clock. |
AWS and Azure both give you a year. That sounds generous, but on day 366 the free ride is over. GCP's e2-micro is the only option here that is designed to stay free indefinitely, as long as you stay inside the eligible regions. GCP publishes the Always Free limits directly on its pricing page, and the eligible regions are part of that same doc.
- Sources: AWS EC2 free tier, Azure free services, GCP Always Free
The catch with GCP is location. If you deploy in the wrong region, it is not free. I accidentally left something in us-east4 once and saw a small charge the next month. The fix was just moving it to us-central1, but it taught me to check the region list before creating anything.
Databases: the part that actually gets expensive
Free compute is easy to understand. Free databases are where the providers start splitting hairs.
-
AWS RDS: gives you a managed MySQL, Postgres, or MariaDB micro instance for 12 months, plus 20 GB of storage.
-
Azure: gives you 250 GB of Azure SQL Database, but that is Microsoft SQL Server. If your project expects Postgres, that free tier does not help you.
-
GCP: does not offer a strong free relational tier, but Firestore has a generous NoSQL free allowance.
-
Sources: Amazon RDS pricing, Azure SQL Database pricing, Firestore pricing
For learning relational databases, AWS was the clearest path. For a tiny side project that needed a small NoSQL store, Firestore was simpler than I expected. For anything Microsoft-specific, Azure made sense, but I do not use .NET day to day, so I ended up fighting the portal more than I expected.
Billing surprises I actually hit
These are not edge cases. They are the things that got me on each provider.
AWS: the orphaned EBS volume
I deleted an EC2 instance but forgot the EBS volume. A month later I had a charge for an unattached 8 GB disk. The fix takes ten seconds once you know where to look. I now clean up volumes as a separate step every time I terminate an instance.
Azure: a disk tier that was not free
I picked a disk tier that looked standard but was not covered by the free tier. The charge was small, but the reason was not obvious from the portal summary. Now I double-check that a disk SKU is listed in the Azure free services scope before I create it.
GCP: wrong region
I deployed in the wrong region. That is the whole story. Region discipline matters more on GCP because the Always Free regions are specific. I keep the Always Free region list open when I create resources.
The common thread is that the cloud provider will not stop you. You have to verify what is still running and where.
Quick CLI checks I use before walking away
I do not trust my memory, so I run the same quick checks on every provider before I log out.
AWS
# Compute still running?aws ec2 describe-instances --query "Reservations[].Instances[].{Id:InstanceId,State:State.Name,Type:InstanceType}" --output table# Unattached EBS volumes (common hidden charge)aws ec2 describe-volumes --filters Name=status,Values=available --query "Volumes[].{Id:VolumeId,Size:Size,AZ:AvailabilityZone}" --output table
Azure
# VMs still allocatedaz vm list -d --query "[].{name:name,rg:resourceGroup,power:powerState}" -o table# Public IPs and allocation methodaz network public-ip list --query "[].{name:name,rg:resourceGroup,allocation:publicIPAllocationMethod,sku:sku.name}" -o table
GCP
# Running compute instancesgcloud compute instances list --format="table(name,zone,status,machineType)"# Persistent disks (watch for detached/unused resources)gcloud compute disks list --format="table(name,zone,status,sizeGb,type)"
These commands take seconds and catch the most common leftover resources.
Which provider fits what you are doing
| If your priority is... | Choose | Why |
|---|---|---|
| Resume value and job market | AWS | Largest market share and most job postings mention it |
| Permanent free compute for a personal tool | GCP | e2-micro Always Free is unmatched if you stay in eligible regions |
| Microsoft stack integration | Azure | Visual Studio and .NET tooling flow nicely |
| Learning managed relational databases | AWS | RDS free tier is the most straightforward |
| Avoiding accidental charges | Any, with discipline | Set a billing alert for $0.01 and check it weekly |
The golden rule is the same across all three. Set a billing alert the moment you create the account. A $0.01 alert tells you the instant something starts charging. That early warning is worth more than any free tier comparison.
What changed in 2026
The core free tier structures have not shifted dramatically, but the defaults and UI keep moving. AWS still leads the job market. Azure still leans into the Microsoft ecosystem. GCP still offers the only long-term free compute tier if you stay inside the eligible regions. The biggest change is that all three providers now surface billing alerts more aggressively, which helps, but it does not replace your own weekly resource check.
If I were starting fresh today, I would open an AWS account for resume relevance, a GCP account for long-term hobby hosting, and only touch Azure when a project is already using Microsoft services.
Closing
AWS, Azure, and GCP all have usable free tiers. None of them will protect you from your own forgetfulness. The provider that is best for you depends on whether you care more about career signal, long-term free hosting, or ecosystem fit.
My practical setup: AWS for anything that needs to look like real cloud work on a resume, GCP for small always-on personal tools, and Azure only if the project is already living in a Microsoft stack. If you start with that rule of thumb and add billing alerts, you will avoid most of the mistakes I made.