I wrote a well-received tutorial on Oracle Cloud's free tier a while back, so today let's do the same for Google Cloud Platform. First, one thing worth getting straight: the "GCP free tier" is actually two separate things, and conflating them is where most of the confusion starts.
The first is the $300 free credit trial — new accounts typically get 90 days to spend that $300 across almost any GCP service. Once the credit runs out or the 90 days expire, the account doesn't automatically start billing — but if you've already upgraded to a paid account, normal billing kicks in.
The second is the Always Free tier — specific service configurations that remain permanently free within defined usage limits. The most commonly cited example is the e2-micro instance (1 shared vCPU + 1GB RAM), which can run continuously at no charge in US regions (us-central1, us-east1, us-west1), along with 30GB of standard storage and 1GiB of outbound North America traffic per month.
One caveat that often goes unmentioned: "e2-micro is free forever" means the compute resource itself is free — it doesn't include the external IPv4 address attached to that instance.
Why There's a Small Charge on Your Bill
External IPv4 address charges are the most common source of unexpected small bills on GCP. Google has billed for external IPv4 addresses on running instances since January 1, 2020, and adjusted pricing upward again in February 2024. Check the official IP pricing page for current figures — various sources citing numbers from different adjustment periods don't always agree. Based on pre-2024 rates, an on-demand instance with an external IPv4 ran roughly $0.004/hour, reserved instances around $0.002/hour — which works out to about $3/month for on-demand. The February 2024 increase may push that higher; the official site is the only reliable source.
One more thing that trips people up: idle static IPs cost more than IPs attached to running instances. A static public IP that's been reserved but not attached to any instance costs around $0.01/hour — roughly $7.30/month — more expensive than an in-use IP. A lot of people finish their experiment, forget to release the static IP, and wonder months later why there are mysterious charges on the bill. That's almost always the reason.
Outbound Traffic Is the Second Common Pitfall
The Always Free outbound traffic allowance is 1GiB per month (GiB, not GB — approximately 1.07GB), North America egress only, and does not include traffic to mainland China, Australia, or several other regions.
Beyond that allowance, pricing runs approximately $0.12/GiB (Premium Tier — verify current rates on the official site). That sounds modest, but certain operations quietly burn through outbound data fast:
# System package updates
sudo apt update && sudo apt upgrade
# Pulling Docker images (AI-related images can easily run tens of GB)
docker pull ollama/ollama
# Downloading AI models
ollama pull llama3
AI model sizes are where people most often get surprised — Llama 3's 8B parameter version is about 4.7GB, the 70B version exceeds 40GB. If you're running AI experiments on GCP and pulling models frequently, bandwidth costs can blow past expectations quickly.
Line items like "Americas to Virginia" on your bill indicate cross-region data transfer or public internet egress. Small amounts, but they accumulate steadily.
How to Avoid External IPv4 Charges
Option 1: Use Cloudflare Tunnel Instead of a Public IP
If your service is a web application — WordPress, a control panel, an API — you can set up a Cloudflare Tunnel from your instance to Cloudflare's edge, routing traffic through Cloudflare without exposing the instance's public IPv4 address at all.
Install cloudflared on the instance:
curl -L https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-amd64 -o cloudflared
chmod +x cloudflared
sudo mv cloudflared /usr/local/bin/
cloudflared tunnel login
cloudflared tunnel create my-tunnel
The bonus here: Cloudflare automatically provides DDoS protection and caching, so you don't need to configure separate security rules on GCP.
Option 2: Switch to IPv6 Access
GCP's IPv6 addresses are currently free (or carry negligible cost). For services that don't depend on IPv4, switching to IPv6 access sidesteps the IPv4 charge entirely — provided your access point (home internet, VPN, client) also supports IPv6. There's a bit of a learning curve for beginners.
Option 3: Use IAP (Identity-Aware Proxy) for SSH Access
If you only need SSH access for admin work, Google Cloud's IAP tunnel lets you connect without attaching a public IP to the instance at all:
# After installing gcloud CLI
gcloud compute ssh INSTANCE_NAME \
--tunnel-through-iap \
--project PROJECT_ID \
--zone ZONE
This way the instance can run with no external IPv4 attached — connect via IAP tunnel when you need SSH, and there's no IP charge when you don't.
Billing Alerts Are Non-Negotiable
Whatever your intended use case, setting up billing budget alerts is the first thing to do — not something to get around to after seeing a surprise bill at month end.
In the GCP console:
Billing → Budgets & Alerts → Create Budget
Set three thresholds at $1, $3, and $5 to trigger email alerts. This way any unexpected billing behavior surfaces before the amount gets significant — no waiting until the statement closes to find out.
Stopping an Instance Is Not the Same as Deleting Resources
This operational mistake is common enough to call out explicitly.
Clicking "Stop" on an instance halts the compute — but the static IP attached to it, and any mounted disks, may still be accruing charges. The correct cleanup procedure: if you no longer need the instance, go to "VPC Network → IP Addresses," find the allocated external IPs, and check their status. If an IP shows "In Use" while the instance is stopped, release it manually. Then go to "Compute Engine → Disks" and confirm there are no orphaned disks left behind.
# List all static IP addresses
gcloud compute addresses list
# Release a specific static IP
gcloud compute addresses delete ADDRESS_NAME --region=REGION
Is GCP's Free Tier Still Worth Using in 2026
Yes — but for different reasons than a few years ago. GCP's real value isn't "free VPS." It's the technical ecosystem: Kubernetes (GKE), Docker, AI inference services, Cloud Run — the cloud-native toolchain experience on GCP is mature and well-developed, and the $300 trial credit is more than enough to work through the main cloud-native stack in depth.
If your goal is simply running a WordPress site or a lightweight service at low cost long-term, fixed monthly pricing from Hetzner, Contabo, or DigitalOcean is honestly the better fit — no bandwidth overage anxiety, no surprise IP charges. GCP's free tier is best used for learning and experimentation, not as a permanent production server. Understand that positioning clearly and the bill will never catch you off guard.