GCP network egress cost explained: ingress is free, everything out costs
GCP charges for egress to the internet, between regions, and even between zones — but not ingress or same-zone traffic. Here's the egress map, the three patterns that drive the bill, and how to cut it.
Quick answer
GCP charges for egress, not ingress. Internet egress is tiered around $0.08-0.12/GB (Premium tier), inter-region runs ~$0.01-0.12/GB, and even cross-zone traffic in the same region is ~$0.01/GB. Same-zone internal traffic is free. Cut it with a CDN for internet content, zone co-location for chatty services, and Standard network tier for latency-tolerant bulk transfer.
Egress is the cloud charge that doesn't appear next to any one resource — it's a function of how your traffic moves — which is exactly why it sneaks up on people. On GCP the rule of thumb is simple: data coming in is free, data going out (or sideways between zones and regions) costs money, and the rate depends on how far it travels.
The egress map
- Ingress: free, always.
- Same zone, internal IP: free.
- Between zones, same region: ~$0.01/GB each way.
- Between regions: ~$0.01-0.12/GB depending on the source and destination regions.
- To the internet: tiered, ~$0.12/GB for the first TB, dropping to ~$0.08/GB at scale (Premium tier).
The three patterns that drive the bill
- Internet serving without a CDN. Every byte served directly from a VM or bucket to users pays internet egress. The same object downloaded a million times pays a million times.
- Cross-region replication and backups. Continuously copying data to another region for DR moves real volume at inter-region rates, every day, forever.
- Cross-zone chatter. A multi-zone deployment where services in zone A call services in zone B pays ~$0.01/GB on every internal call. At microservice scale this adds up quietly.
Premium vs Standard network tier
GCP defaults to Premium tier, which carries traffic on Google's global backbone end-to-end for low latency. Standard tier hands traffic off to the public internet sooner and prices internet egress lower, at the cost of latency and global reach. For latency-tolerant bulk egress — backups, batch exports, log shipping — Standard tier can meaningfully cut the per-GB internet rate. For user-facing low-latency traffic, keep Premium.
How to cut it
- Put Cloud CDN in front of internet content. Cached objects are served from edge locations at lower cost, so repeated reads stop paying full origin egress. The biggest lever for any content-serving workload.
- Co-locate chatty services in one zone. Same-zone internal traffic is free. Spreading services across zones for availability is fine — just be aware it converts free traffic into $0.01/GB traffic.
- Use Private Google Access. Reach Google APIs and services over internal routing instead of egressing to public endpoints.
- Right-size DR replication. Replicate only what actually needs cross-region durability, not everything by default.
FAQ
How much does GCP network egress cost?
Internet egress is tiered: roughly $0.12/GB for the first TB/month, dropping to ~$0.11 and ~$0.08 at higher volumes, in the Premium network tier. Egress between regions runs ~$0.01-0.12/GB depending on the regions, and egress between zones in the same region is ~$0.01/GB. Ingress is free.
Is data transfer free within GCP?
Some of it. Ingress is always free. Traffic within the same zone using internal IPs is free. But traffic between zones (~$0.01/GB), between regions, and out to the internet all cost money. Cross-zone chatter from a multi-zone deployment is the most commonly overlooked egress charge.
What is the difference between Premium and Standard network tier?
Premium tier routes traffic over Google's global backbone for lower latency and is the default; Standard tier uses the public internet and is cheaper for internet egress but only available regionally. For latency-insensitive bulk egress, Standard tier can cut the per-GB internet rate noticeably.
Why is my GCP egress bill so high?
Usually one of three patterns: serving large volumes to the internet without a CDN, cross-region replication or backups moving data between regions continuously, or chatty services spread across zones paying inter-zone rates on every call. Identify which pattern dominates before optimizing.
How do I reduce GCP egress costs?
Put a CDN (Cloud CDN) in front of internet-facing content so repeated reads are served from cache, keep chatty services in the same zone, use Private Google Access and internal load balancing to avoid egress to Google APIs, and consider Standard network tier for latency-tolerant bulk transfer.
Does C3X estimate egress cost?
Egress is usage-driven, so C3X models it from expected GB in c3x-usage.yml rather than from the resource definition alone. It prices the resources that generate egress (instances, load balancers, storage) so you can attribute transfer to them.
What to do next
Egress is usage-driven, so the win is attributing it to the resources that generate it and modeling expected volume. C3X prices the resources behind your traffic — the google_compute_instance fleet, load balancers, and storage — and takes egress volume from c3x-usage.yml. For the AWS version of this problem, see AWS data transfer costs explained. The quickstart gets you a full breakdown in minutes.
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.