How to cut your GCP bill: the ordered reduction playbook
GCP has its own waste profile: idle persistent disks, unattached external IPs, snapshot sprawl, oversized machine types, and BigQuery scans. Here is the sequenced playbook with real rates and expected savings per lever.
Quick answer
Sequence the GCP levers as delete, downgrade, resize, schedule, commit. Step 1, delete idle persistent disks (balanced PD is $0.10 per GB-month, standard $0.04), unattached static external IPs at $0.010/hr, and snapshot sprawl at $0.026 per GB-month: 5 to 12 percent. Step 2, move Cloud Storage to Nearline ($0.010/GB) or Coldline ($0.004/GB) from Standard ($0.020/GB): 30 to 60 percent of storage. Step 3, apply machine type recommendations and consider e2 families: 10 to 20 percent of compute. Step 4, schedule non-production off: 60 to 70 percent of its compute. Step 5, buy committed use discounts, about 37 percent for 1 year and 55 percent for 3 year resource based CUDs, over the reduced baseline.
Google Cloud gives you two discounts for free that the other clouds do not: sustained use discounts apply automatically to instances running most of a month, and per second billing means short lived workloads are cheap. That makes the remaining waste narrower and more specific: disks and IPs nobody detached, snapshot chains that grew unchecked, machine types picked once and never revisited, and query patterns that scan more bytes than they need.
The sequence
| Step | Lever | Typical saving |
|---|---|---|
| 1 | Delete idle disks, IPs, snapshots | 5 to 12% of total |
| 2 | Storage class lifecycle rules | 30 to 60% of GCS spend |
| 3 | Right-size machine types | 10 to 20% of compute |
| 4 | Schedule non-production | 60 to 70% of dev/test compute |
| 5 | Committed use discounts | 37% (1yr) to 55% (3yr) |
Step 1: the idle sweep
Persistent disks survive their instances. A balanced PD bills about $0.10 per GB-month and a standard PD about $0.04, so a forgotten 1 TB balanced disk is roughly $100 a month doing nothing. Static external IP addresses that are reserved but unattached bill around $0.010 per hour, about $7.30 a month each, which is higher than the attached rate precisely to discourage hoarding. Snapshots bill about $0.026 per GB-month and accumulate silently because a delete only reclaims the blocks no later snapshot references. Use the Active Assist idle resource recommenders as a starting list, verify with 30 days of metrics, then delete on the tag and wait pattern described in orphaned resource cleanup.
Step 2: put object storage on a lifecycle
Standard Cloud Storage is about $0.020 per GB-month, Nearline about $0.010, Coldline about $0.004, and Archive about $0.0012. A 200 TB bucket sitting entirely in Standard costs roughly $4,000 a month; the same data with 80 percent aged into Coldline is closer to $1,440. The catch is retrieval and minimum storage duration: Nearline has a 30 day minimum, Coldline 90 days, Archive 365 days, plus per GB retrieval fees, so data that gets read often or deleted early can cost more after the move. Model the access pattern before writing the rule.
Step 3: right-size machine types
Compute Engine exposes machine type recommendations based on 8 days of observed usage. Treat them as candidates, not instructions. Two structural moves usually beat incremental resizing: switch general purpose workloads from n2 (n2-standard-4 is about $0.1942 per hour) to e2 (e2-standard-4 is about $0.1340 per hour), a roughly 30 percent cut for workloads that do not need the guaranteed n2 performance profile, and use custom machine types to stop paying for vCPU or memory ratios you do not use. Validate on p95 metrics over 14 days and move one step at a time.
Step 4: schedule the non-production projects
Instance schedules on Compute Engine let you attach a start and stop cron to instances directly. A dev project running continuously that only needs weekday business hours drops to roughly 30 percent of its compute cost. Persistent disks keep billing while the instance is stopped, which is another reason step 1 comes first. For GKE, scaling node pools to zero outside hours achieves the same thing, and the idle cost mechanics are covered in Kubernetes idle cost.
Step 5: commit last
Resource based committed use discounts give roughly 37 percent for a one year commitment and 55 percent for three years on vCPU and memory, but they lock you to a machine family in a region. Flexible CUDs give roughly 28 percent and 46 percent and apply as a spend commitment across families and regions. Buy after right-sizing, not before, and remember that sustained use discounts already apply automatically and are not additive to CUD coverage in the way people assume. The comparison is in committed use discounts explained.
The GCP specific bonus lever: BigQuery
If BigQuery is more than 10 percent of your bill, it belongs in the playbook. On demand querying is about $6.25 per TiB scanned, so partitioning and clustering tables, avoiding SELECT star, and setting maximum bytes billed on jobs often cut query spend 40 to 70 percent with no change to results. Above roughly $2,000 a month of steady query spend, capacity based editions usually beat on demand.
Expected result and the risks
A first pass on an untouched GCP organisation typically lands 25 to 35 percent. The risks: deleting a snapshot chain that a compliance retention policy required, moving data to Coldline that is then read weekly and costs more in retrieval than it saved in storage, switching to e2 under a latency sensitive service, and committing to a machine family you are about to migrate off. Sequence, observe for 14 days between steps, and price new infrastructure from Terraform against the resource catalog so the savings hold.
FAQ
What wastes the most money on GCP?
Persistent disks and static external IPs that outlived their instances, plus snapshot sprawl. A balanced PD is about $0.10 per GB-month so a forgotten 1 TB disk is roughly $100 a month, and a reserved but unattached static external IP bills about $0.010 per hour (around $7.30 a month), deliberately higher than the attached rate to discourage hoarding. Snapshots accumulate at about $0.026 per GB-month.
How much do GCP committed use discounts save?
Resource based CUDs give roughly 37 percent for a one year commitment and 55 percent for three years on vCPU and memory, but lock you to a machine family in a region. Flexible CUDs give roughly 28 percent and 46 percent as a spend commitment across families and regions. Buy them after right-sizing, never before, or you commit to capacity you are about to stop using.
Should I switch from n2 to e2 machine types?
For general purpose workloads that do not need the guaranteed n2 performance profile, yes. An n2-standard-4 is about $0.1942 per hour against about $0.1340 for an e2-standard-4, roughly a 30 percent cut. Validate on p95 metrics over 14 days first, because e2 instances share a different performance profile and a latency sensitive service can regress. Custom machine types are the other structural lever.
When should I move GCP storage to Coldline or Archive?
When the data is genuinely cold. Standard is about $0.020 per GB-month, Nearline $0.010, Coldline $0.004, and Archive $0.0012, so a 200 TB bucket drops from roughly $4,000 to about $1,440 a month with 80 percent in Coldline. But Nearline has a 30 day minimum storage duration, Coldline 90 days, and Archive 365 days, plus retrieval fees, so frequently read or short lived data costs more after the move.
How do I cut BigQuery costs?
On demand querying is about $6.25 per TiB scanned, so the lever is scanning fewer bytes: partition and cluster tables on the columns you filter by, stop using SELECT star, and set maximum bytes billed on jobs so a runaway query fails instead of charging. These typically cut query spend 40 to 70 percent with identical results. Above roughly $2,000 a month of steady query spend, capacity based editions usually beat on demand.
What is a realistic GCP reduction on a first pass?
25 to 35 percent on an organisation that has never been through a structured cost pass. Sustained use discounts and per second billing already remove some of the waste other clouds carry, so the remaining opportunity is narrower and more specific: idle disks and IPs, storage class, machine type, scheduling, and commitments. Pricing new Terraform before merge is what keeps the reduction from eroding.
What to do next
Price GCP infrastructure before it runs. C3X reads your Terraform and costs it against a live resource catalog. Start with the quickstart.
Share this post
Try C3X on your own Terraform
Free and open source. No API key required. One command to install, one command to estimate.