Two Free Tiers, Not One
GCP's "free" offering is actually two separate things, and conflating them is where most confusion starts.
The $300 trial credit is available to new accounts for 90 days. During that window you can use virtually any GCP service and the cost comes out of the credit rather than your card. When the 90 days end or the credit runs out, your account doesn't automatically start billing โ but if you've already upgraded to a paid account, it does.
The Always Free tier is a separate set of permanently free services with strict monthly usage caps. The most relevant one for anyone coming from a VPS background: one e2-micro instance (1 shared vCPU, 1GB RAM) running in a U.S. region (us-central1, us-east1, or us-west1) per month, plus 30GB of standard storage and 1GiB of outbound traffic to North American destinations.
But "e2-micro is always free" has a condition that gets glossed over constantly: the compute resources are free. The external IPv4 address attached to that instance is not.
Why There's a Charge on the Bill
External IPv4 pricing is the source of the vast majority of small unexpected GCP charges. GCP started billing for external IPv4 addresses on running instances in January 2020, then raised the rates again in February 2024. For current figures, check the official IP address pricing page directly โ the numbers cited across different sources don't agree, and the 2024 increase makes older references unreliable. As a rough order of magnitude: an on-demand instance with an external IPv4 runs around $2.92/month at pre-2024 rates, higher after the increase.
The less obvious case is idle static IPs. A static public IP that's been reserved but isn't attached to any running instance costs more per hour than one that's in use โ roughly $0.01/hour, which works out to around $7.30/month. People register for the trial, run some experiments, forget to release the static IP they reserved, and discover a persistent line item on their bill weeks later. This is probably the most common source of the "I wasn't doing anything and GCP charged me" experience.
Outbound Traffic: The Other Trap
The Always Free tier's outbound traffic allowance is 1GiB per month โ that's GiB, not GB โ and it only applies to traffic leaving to North American destinations. Traffic to mainland China, Australia, and several other regions doesn't qualify even within that limit.
Beyond 1GiB, outbound traffic runs around $0.12/GiB on the Premium Tier (verify current pricing). That sounds manageable until you consider what actually generates traffic:
# System package updates
sudo apt update && sudo apt upgrade
# Pulling Docker images (AI-related images are frequently tens of GB)
docker pull ollama/ollama
# Downloading AI models
ollama pull llama3
AI model sizes are where people get genuinely surprised. Llama 3's 8B parameter version is around 4.7GB; the 70B version exceeds 40GB. If you're running AI experiments on GCP and pulling models regularly, traffic charges can accumulate faster than the instance costs themselves. Billing entries labeled "Americas to Virginia" or similar represent cross-region transfers or public egress โ small individually, but they compound.
Three Ways to Avoid IPv4 Charges
Cloudflare Tunnel is the most practical option for web-facing services like WordPress, control panels, or APIs. Install cloudflared on the instance, create a tunnel, and route traffic through Cloudflare's edge network. The instance doesn't need an external IPv4 at all.
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
Side benefit: Cloudflare handles DDoS protection and caching without additional GCP configuration.
IPv6 access avoids IPv4 charges entirely since GCP currently doesn't bill for IPv6 addresses (or bills at negligible rates). The catch is that your access endpoint โ home network, VPN, client machines โ also needs to support IPv6, which is a realistic barrier for some users.
IAP (Identity-Aware Proxy) for SSH is the right approach if all you need is shell access for administration. The instance can exist without any external IP, and you connect through Google's IAP tunnel when you need it:
# After installing gcloud CLI
gcloud compute ssh INSTANCE_NAME \
--tunnel-through-iap \
--project PROJECT_ID \
--zone ZONE
Set Up Billing Alerts Before Anything Else
This isn't optional. Configure budget alerts before launching any instances, not after you're curious what the first bill looks like.
Billing โ Budgets & Alerts โ Create Budget
Set three thresholds at $1, $3, and $5. At the scale of a free-tier account, catching unexpected charges at $1 is infinitely better than catching them at $30. Any billing anomaly shows up early enough to diagnose and fix before it compounds.
Stopping an Instance Doesn't Clean Up Everything
Clicking Stop on an instance stops the compute charges, but static IPs and attached disks may continue billing. Before walking away from an instance you no longer need, check two places: VPC Network โ IP Addresses for any reserved external IPs still showing "In Use" even though the instance is stopped, and Compute Engine โ Disks for any orphaned volumes that didn't get deleted with the instance.
# List all static IP addresses
gcloud compute addresses list
# Release a specific static IP
gcloud compute addresses delete ADDRESS_NAME --region=REGION
Is GCP Free Tier Worth Using in 2026?
Yes โ but for different reasons than "free VPS." The $300 trial credit is genuinely useful for getting hands-on with GCP's cloud-native tooling: GKE, Cloud Run, Docker, AI inference services. That's a meaningful learning environment that's hard to replicate elsewhere at this cost. The Always Free tier's e2-micro gives you a persistent experimentation instance once you understand the IPv4 pricing situation.
What GCP is not well-suited for: long-term low-cost hosting of a WordPress site or lightweight web service. For that use case, providers like Hetzner, DigitalOcean, or Contabo with predictable flat monthly pricing make more sense โ no traffic overages, no IP fees, no billing surprises. GCP's free resources are best understood as a learning and experimentation environment rather than a permanent free server. That framing makes the billing behavior much less surprising.