On Cloud Storage the cost surprise is almost never the storage, it is the egress, the charge for moving data out of the bucket. Keeping data is cheap and getting steadily cheaper across the storage classes, but reading it out to the internet or across regions is billed by the gigabyte and rises with distance. The saving grace is that a large share of reads can be free: access from Google Cloud services in the same region as the bucket generally costs nothing, and so does ingress. The whole discipline is therefore architectural, keep the data and the things that read it in the same region so reads stay free, and treat internet and cross region egress as a cost to design down with caching, batching, and deliberate bucket placement.
Egress is the line that grows when nothing about your storage changed. Here is which paths are free, which are billed, and how to shape the bill.
Why is egress the line that surprises people?
Storage cost is predictable: you store a known volume in a known class and the monthly charge barely moves. Egress is reactive: it scales with how often and how far your data is read, which depends on traffic patterns, application design, and where things sit, none of which appear when you look at the bucket size. A dataset that has been cheap to store for a year can generate a large network bill the moment a new service in another region starts reading it, or a public download link goes viral. Because the charge is buried in network line items rather than under the bucket, it is easy to miss until it is large. Reading the billing export for the egress lines is how you see it.
Which paths are free and which are billed?
The rule of thumb is that distance costs money. The table maps the common read paths.
| Read path | Billed? | Buyer implication |
|---|---|---|
| Ingress (writing data in) | Generally free | Loading data is not where the cost is |
| Read to a Google service in the same region | Generally free | Colocate compute and analytics with the bucket |
| Read to a different region or continent | Billed, rising with distance | Cross region access turns routine reads into cost |
| Read out to the public internet | Billed by volume | Cache or use a CDN for repeated downloads |
| Cross region replication traffic | Billed | Multi region buckets move data and bill for it |
The practical consequence is that bucket location is a cost decision, not a default. A multi region bucket gives resilience but replicates and serves across regions with the egress that implies, while a regional bucket placed next to its readers keeps the busiest reads free. Choose location for the access pattern, not out of habit.
How do you design the egress bill down?
The first and largest lever is colocation: put buckets in the same region as the services and users that read them most, so the high volume reads fall on the free path. The second is caching: for data read repeatedly over the internet, a CDN or cache serves most requests without repeatedly egressing from the bucket. The third is transfer hygiene: batch and compress data that must cross a billed path so you move fewer bytes, and avoid chatty patterns that read the same object many times. The fourth is deliberate replication: only use multi region or dual region buckets where the resilience is worth the replication egress, and keep purely internal datasets regional. Finally, review the egress line items in the billing export so you know which paths actually dominate before you optimize.
Check where your busiest buckets sit relative to the services that read them. If a bucket in one region is read constantly by compute in another, you are paying cross region egress on traffic that colocation would make free.
A worked example of cutting egress
A European SaaS company stored a large asset library in a multi region bucket and served it both to an analytics pipeline running in a single region and to customers over the internet. The billing export showed cross region egress to the pipeline and internet egress for downloads together forming most of the bucket network cost. We moved a regional copy next to the pipeline so its reads became free, put a CDN in front of customer downloads so repeated reads were cached, and kept multi region only for the small set of assets that genuinely needed it. Egress cost fell substantially with no change to what was stored, and the figures are verified against billing data and anonymized.
Where this fits in the GCP estate
Egress is part of the wider GCP network and data cost picture. See how replication adds traffic in cross region replication costs on GCP, the broader transfer map in data transfer costs on GCP explained, and the storage side in the economics of GCP data lakes. The full estate view lives in the GCP cost optimization guide.
Frequently asked questions
What is egress on Cloud Storage?
Which Cloud Storage egress is free and which is billed?
How do you reduce Cloud Storage egress cost?
Get the buyer side network cost playbook
We map your Cloud Storage egress to the paths that drive it and redesign placement, caching, and replication so routine reads stop costing money. Our guarantee: we reduce your cloud spend or we reimburse our service fee. Pricing is either a Fixed Fee scoped up front or Gainshare, a share of verified savings with no retainer and no risk.
Put a defensible number on your cloud spend.
No provider in the room, no published price list. Tell us your footprint and we will scope the savings against your billing data — we reduce your cloud spend or we reimburse our service fee.
The Cloud Spend Navigator: what changed in cloud pricing, commitments, and FinOps — no vendor spin.