← All posts
GCP5 June 2026 · 2 min read

Are GCP Static IP Addresses Free? (The Honest Answer)

Short answer: no, not anymore. Google charges for external IPv4 addresses, and the idle reserved ones cost the most. Here's exactly what's free, what isn't, and which IPs are quietly wasting money.

By The FeckBills team

Are GCP Static IP Addresses Free?

No. Since January 2020, Google Cloud charges for external IPv4 addresses, whether they're static (reserved) or ephemeral. The "static IPs are free while in use" advice you'll still find in old blog posts is out of date.

Here's the part that surprises people: an idle reserved static IP costs more than one that's actually in use. Reserving an address and leaving it unattached is the single most wasteful thing you can do with an IP.

What's actually free

  • Internal IP addresses (private, within your VPC). Always free.
  • IPv6 addresses. Free.
  • External IPv4 attached to a forwarding rule (i.e. fronting a load balancer). Free.

What costs money

  • An external IPv4 attached to a running VM (in use): billed at the lower rate, roughly $3/month.
  • A static external IPv4 that's reserved but not attached to anything (idle): billed at the higher rate, roughly $7/month, about double the in-use rate.

(Exact figures vary slightly by region and network tier, but the relationship holds: idle reserved is the premium-priced one.)

Why idle IPs are charged more

The pricing is deliberate. Google wants you to release addresses you're not using, because reserved IPv4 is a finite, contended resource. Charging idle reservations at a premium is the nudge. From a FinOps angle, that means every detached static IP on your account is not just waste, it's waste at the top rate.

How to find the idle ones

List your reserved addresses and look at the status:

gcloud compute addresses list --filter="status=RESERVED"

Anything showing RESERVED (rather than IN_USE) is an address you're paying the premium for, doing nothing. These pile up after migrations, deleted VMs, and torn-down load balancers that left the IP behind.

Should you just release them all?

Almost. Two cautions:

  1. Confirm nothing's about to reattach. A RESERVED IP staged for a not-yet-launched service is intentional. Check before releasing.
  2. If you need the address to persist (DNS points at it, allow-lists reference it), keep it reserved and accept the cost. That's a legitimate reason. The waste is the forgotten ones.

For everything else: release them. It's a near-zero-risk cleanup with an immediate, if small, saving, and across a few projects those small savings add up.

How FeckBills helps

FeckBills' gcp.idle-ip detector finds every reserved-but-idle static IP across your projects, prices it, and ranks it alongside your other waste in £/mo. Run it with --all-projects and it sweeps the sandboxes and old environments where orphaned IPs love to hide.

Find your idle IPs in a read-only scan.

#gcp#ip-addresses#pricing#cost-optimization

See your number in 60 seconds

Read-only. Runs in your infra. You decide on every fix.

Run a free scan →