Free Tier Cloud Hosting Comparison: What You'll End Up With
This guide gives you a direct, spec-by-spec free tier cloud hosting comparison across the four providers worth your time in 2024: AWS, Google Cloud Platform (GCP), Oracle Cloud, and Fly.io. By the end, you'll know exactly which free tier fits your workload — a hobby API, a static site, a small database, or a persistent background worker — and which limits will bite you before you hit production.
Prerequisites:
- A credit card (required to register on all four platforms, even for free tiers)
- Basic familiarity with Linux and cloud consoles
- A clear idea of your workload: compute-heavy, memory-heavy, egress-heavy, or storage-heavy
Provider Overviews at a Glance
Before diving into specs, understand the two categories of free tiers:
- Always-free: Resources that never expire, regardless of account age.
- Trial credits / 12-month free: Resources that expire after a fixed window. After that, you pay or lose the instance.
Every provider mixes both. The table below summarizes the always-free compute on offer:
| Provider | Always-Free Compute | RAM | Storage | Egress |
|---|---|---|---|---|
| AWS | 750 hrs/mo t2.micro (12-mo only) | 1 GB | 30 GB EBS | 100 GB/mo |
| GCP | 1× e2-micro (us-* regions) | 1 GB | 30 GB HDD | 1 GB/mo |
| Oracle Cloud | 2× VM.Standard.A1 (4 OCPU total) | 24 GB | 200 GB block | 10 TB/mo |
| Fly.io | 3× shared-cpu-1x (256 MB each) | 256 MB each | 3 GB volume | 160 GB/mo |
Read each section below before committing. The headline numbers hide important constraints.
AWS Free Tier
AWS splits its free offer into three buckets: 12-month free, always-free, and short-term trials.
12-month free (expires after account creation):
- 750 hours/month of
t2.micro(1 vCPU, 1 GB RAM) on EC2 — Linux or Windows, not both simultaneously without exceeding the 750-hour cap. - 30 GB of EBS General Purpose (SSD) storage.
- 15 GB of S3 storage with 20,000 GET and 2,000 PUT requests.
- 750 hours/month of RDS
db.t2.micro(MySQL, PostgreSQL, MariaDB) with 20 GB storage. - 100 GB outbound data transfer per month.
Always-free highlights:
- AWS Lambda: 1 million requests/month, 400,000 GB-seconds compute.
- DynamoDB: 25 GB storage, 25 read capacity units, 25 write capacity units.
- CloudWatch: 10 custom metrics, 5 GB log ingestion.
- SQS: 1 million requests/month.
Gotchas:
- The EC2
t2.microis a burstable instance. Under sustained CPU load it exhausts CPU credits and throttles to 10% baseline. Do not run a CPU-bound workload on it. - Egress pricing after the free 100 GB starts at $0.09/GB. One misconfigured log shipper can generate a surprise bill.
- RDS
db.t2.microis not available in all regions. Provision inus-east-1to be safe. - Enable billing alerts immediately after account creation. Go to Billing → Budgets → Create budget and set a $1 alert.
Best for: Developers already in the AWS ecosystem who need Lambda, S3, or DynamoDB for a hobby project within the 12-month window.
Google Cloud Platform Free Tier
GCP offers a $300, 90-day trial credit for new accounts plus a genuine always-free tier that persists indefinitely.
Always-free compute:
- One
e2-microinstance (2 vCPU burst, 1 GB RAM) inus-west1,us-central1, orus-east1only. Changing the region removes the free-tier eligibility. - 30 GB standard (HDD) persistent disk.
- 1 GB of egress per month to most destinations (North America to North America). Egress to China or Australia is excluded entirely from the free allowance.
Always-free storage and services:
- Cloud Storage: 5 GB in
usmulti-region, 5,000 Class A operations, 50,000 Class B operations per month. - Cloud Functions: 2 million invocations/month, 400,000 GB-seconds, 200,000 GHz-seconds.
- Firestore: 1 GB storage, 50,000 reads, 20,000 writes, 20,000 deletes per day.
- BigQuery: 10 GB storage, 1 TB queries per month.
Gotchas:
- The
e2-microhas 1 GB RAM. Running a Node.js app + a small database on the same instance will cause OOM kills. Use a swap file. - The 1 GB egress cap is extremely low for any API serving external traffic. Expect charges after minimal usage.
- Snapshots of persistent disks count against storage quotas.
- You must upgrade to a paid account to keep the
e2-microafter the $300 credit expires. The upgrade does not charge you automatically — you must manually confirm billing.
Best for: Running a single lightweight process — a cron job, a webhook receiver, a small static-file server — that generates negligible egress.
Oracle Cloud Free Tier
Oracle's always-free tier is the most generous compute offer available from any major cloud provider as of 2024, and it does not expire.
Always-free compute:
- Up to 4 AMD
VM.Standard.E2.1.Microinstances (1 OCPU, 1 GB RAM each), or - Up to 4 OCPU and 24 GB RAM total allocated across Ampere A1 ARM instances (
VM.Standard.A1.Flex). The most common configuration is 2 instances × 2 OCPU × 12 GB RAM. - 200 GB total block volume storage.
- 10 TB outbound data transfer per month.
Always-free services:
- Object Storage: 20 GB.
- Autonomous Database: 2 databases, 20 GB each (ATP or ADW).
- Load Balancer: 1 × 10 Mbps flexible load balancer.
- Monitoring, Notifications, and Logging with generous limits.
Gotchas:
- Availability is the primary problem. Oracle's free-tier A1 instances in popular regions (
us-ashburn-1,us-phoenix-1) frequently returnOut of capacityerrors for days or weeks. Workaround: write a script that polls the API every few minutes, or try less-popular regions likeeu-stockholm-1orap-singapore-1. - Oracle accounts are occasionally terminated without warning if Oracle suspects abuse. Keep a backup of your data.
- The Autonomous Database requires Oracle Wallet for TLS connections — not a standard PostgreSQL driver flow. If you need standard PostgreSQL, provision a separate VM and install it yourself.
- Always-free resources must stay within the home region you select at signup. You cannot move them.
Best for: Any workload that needs real RAM — a self-hosted app, a small Kubernetes node, a persistent background worker. The 24 GB RAM + 10 TB egress combination is unmatched at $0.
Fly.io Free Tier
Fly.io targets developers deploying containerized apps. Its free allowance is account-wide, not per-app.
Always-free allowances (shared across all apps on the account):
- 3 shared-cpu-1x VMs with 256 MB RAM each (up from the previous 2-VM limit as of 2024).
- 3 GB persistent volume storage.
- 160 GB outbound data transfer per month.
- Shared IPv4 address (dedicated IPv4 costs $2/month).
Gotchas:
- 256 MB RAM per machine is the hard ceiling for the free tier. A standard Rails or Django app with dependencies will exceed this. Use lightweight runtimes (Go, Rust, Node with
--max-old-space-sizeset) or enable swap in your Dockerfile. - Fly charges for stopped machines if they have a persistent volume attached. A stopped machine with a volume is not free.
- The free tier does not include Fly Postgres in a high-availability configuration. Single-node Fly Postgres on a free machine is possible but has no automatic failover.
- Outbound transfer is generous at 160 GB, but inbound transfer from outside Fly's network counts toward your bill on paid plans — check current pricing before scaling.
Best for: Deploying a containerized side project close to users using Fly's global anycast network, especially Go or Rust services that fit in 256 MB.
Side-by-Side Decision Matrix
Use this matrix to match your workload to the right provider:
| Workload | Best Free Tier | Reason |
|---|---|---|
| Memory-hungry app (>1 GB RAM) | Oracle Cloud A1 | 24 GB RAM always-free |
| High egress (>10 GB/mo) | Oracle Cloud or Fly.io | 10 TB and 160 GB respectively |
| Serverless / event-driven | AWS Lambda | 1M requests/month always-free |
| Containerized microservice | Fly.io | Native Docker deploy, global PoPs |
| Single persistent Linux VM | GCP e2-micro | Stable, no capacity issues |
| Managed database (PostgreSQL) | AWS RDS (12-mo) | Easiest managed PG setup |
| Object storage | AWS S3 or GCP GCS | 15 GB and 5 GB respectively |
Verify Your Free Tier Status
After provisioning on any provider, confirm you are not being charged:
AWS:
- Open the AWS Billing Console.
- Navigate to Bills → Charges by service. Any line item above $0.00 needs investigation.
- Run:
aws ce get-cost-and-usage \
--time-period Start=$(date -d 'first day of last month' +%Y-%m-%d),End=$(date +%Y-%m-%d) \
--granularity MONTHLY \
--metrics BlendedCost
GCP:
gcloud billing accounts list
gcloud billing budgets list --billing-account=BILLING_ACCOUNT_ID
Expected output: your budget alert at $1 or $0.
Oracle Cloud: Navigate to Billing → Cost Analysis in the OCI Console. Filter by the current month. All always-free resources should show $0.00.
Fly.io:
fly auth login
fly billing show
Expected output: Current balance: $0.00 if you are within free allowances.
Troubleshooting
- Oracle A1 "Out of capacity" on provisioning: Retry in a different availability domain within the same region, or switch to
eu-frankfurt-1. Use the OCI CLI in a loop with a sleep interval. - GCP e2-micro OOM kills: Add a 1 GB swap file. Run
sudo fallocate -l 1G /swapfile && sudo chmod 600 /swapfile && sudo mkswap /swapfile && sudo swapon /swapfile. - AWS unexpected charges after 12 months: EC2 and RDS instances do not stop automatically. Set a billing alert at account creation and terminate instances before the 12-month mark.
- Fly.io machine not starting (256 MB OOM): Reduce your app's memory footprint or set
[env] NODE_OPTIONS="--max-old-space-size=200"infly.toml. - GCP free tier lost after region change: Destroy and reprovision the instance in
us-west1,us-central1, orus-east1. Region changes are not reversible on existing disks without migration. - AWS Lambda cold starts on always-free tier: Lambda free tier has no concurrency reservation. Use Provisioned Concurrency only if you upgrade to a paid plan.
Next Steps
Once you've chosen a provider:
- Oracle Cloud A1: Follow the OCI CLI quickstart and provision your A1 instance with
oci compute instance launch. - GCP e2-micro: Harden the instance with
ufw, install your app, and configure a systemd service unit for auto-restart on reboot. - AWS: Set up a billing budget alert before anything else, then deploy your Lambda function or EC2 instance.
- Fly.io: Install the
flyctlCLI, runfly launchin your project directory, and deploy in under five minutes.
For production workloads that outgrow free tiers, a Hetzner CX22 at $4.15/month gives you 2 vCPU, 4 GB RAM, and 20 TB egress — more value than any paid tier from the providers above at the same price point.