Free Tier Cloud Hosting Comparison: 2024 Guide

by David Park
Free Tier Cloud Hosting Comparison: 2024 Guide

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.micro is 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.micro is not available in all regions. Provision in us-east-1 to 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-micro instance (2 vCPU burst, 1 GB RAM) in us-west1, us-central1, or us-east1 only. 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 us multi-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-micro has 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-micro after 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.Micro instances (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 return Out of capacity errors for days or weeks. Workaround: write a script that polls the API every few minutes, or try less-popular regions like eu-stockholm-1 or ap-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-size set) 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:

  1. Open the AWS Billing Console.
  2. Navigate to Bills → Charges by service. Any line item above $0.00 needs investigation.
  3. 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" in fly.toml.
  • GCP free tier lost after region change: Destroy and reprovision the instance in us-west1, us-central1, or us-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 flyctl CLI, run fly launch in 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.