Independent marketplace for cloud provider accounts across 22 providers

Cloud Fundamentals

Egress Costs: The Cloud Bill Line Nobody Plans For

Data transfer out is the invoice line that no capacity estimate predicts. This guide maps which directions are charged, the places egress hides inside an ordinary architecture, and the changes that cut it without redesigning everything.

Diagram showing charged and uncharged data transfer directions in and out of a cloud region

The invoice line nobody budgeted for

Cost estimates for a new system almost always start with compute. Someone counts the servers, multiplies by a rate, adds storage, and presents a number. Six weeks after launch the actual invoice arrives and a line called data transfer out is competing with the servers for first place.

Egress is charged for the bytes leaving a provider's network. It is invisible during design because nothing in an architecture diagram is labelled in gigabytes, and it is hard to forecast because it scales with user behaviour rather than with the resources you provisioned.

The good news is that egress is predictable once you know where it is generated. This guide maps the directions that get charged, the places the charge hides, and the levers that actually reduce it.

Which direction costs money

Start with the asymmetry. Data flowing into a major cloud is generally not charged. Data flowing out to the internet generally is. That single fact explains why uploading a large dataset feels free and serving it back to users does not.

Between those extremes sit several internal directions that surprise people because they never leave the provider at all.

Traffic directionTypical treatment on a hyperscaler
Internet inboundNot charged
Internet outboundCharged per gigabyte, often above a small monthly allowance
Within one availability zone, private addressingUsually not charged
Between availability zones in one regionCommonly charged in both directions
Between regions of the same providerCharged, at a rate that depends on the pair
Out through a managed NAT gatewayCharged per gigabyte processed, in addition to internet egress
Origin to the provider's own CDNFrequently not charged, with delivery billed at the edge instead

The cross-zone row deserves attention. A resilient design that spreads replicas across zones is doing exactly what the provider recommends, and it generates charged traffic between them. That is not a reason to collapse into one zone, but it is a reason to keep chatty components zone-aware.

Two metering philosophies

Hyperscalers meter transfer as its own product. Every gigabyte out is a line on the bill, tiered by volume and varying by region, with separate rates for CDN delivery and for traffic between regions. The model is precise and it rewards architectures that keep traffic local.

Developer clouds take the opposite approach. A plan includes a transfer allowance, and the allowance is generous enough that many customers never exceed it. DigitalOcean pools the allowance across eligible resources in an account. Hetzner includes traffic with each server and bills additional volume separately. Vultr bundles bandwidth per plan and pools it across the account.

The consequence for budgeting is stark. On a flat-plan provider, a traffic spike changes almost nothing until the allowance is crossed. On a metered provider, the same spike appears directly on the invoice. Our comparison of bandwidth allowances across providers looks at how the included quantities are structured.

Where the gigabytes actually come from

Backups and replication

Copying snapshots to a second region, streaming database replication across zones or synchronising object storage buckets all move large volumes on a schedule. Because it is automated, nobody watches it. Sizing retention and replication frequency deliberately is the fix, and the trade-offs sit in cloud backup strategies.

Observability pipelines

Shipping verbose logs and high-resolution metrics to a service outside the provider network is pure egress, generated continuously. Sampling, aggregating at the edge and dropping debug-level records in production usually cut the volume sharply without losing the signal.

Container image pulls

A deployment that pulls a large image onto every node, every time, from a registry in another network moves more data than most teams realise. Keeping images in a registry inside the same region, and building thinner layers, removes the charge and speeds up rollouts. The options are covered in container registries in the cloud.

Serving media directly from object storage

Pointing users at a bucket URL means every byte is billed as origin egress with no caching in front of it. Putting a CDN between the bucket and the world is the single most effective change available to most content-heavy sites.

Chatty services across zone boundaries

Microservices that exchange large payloads on every request will generate cross-zone traffic if the scheduler spreads them. Zone-aware routing, locality-aware load balancing and simply keeping tightly coupled services together all help.

NAT gateway processing

A managed NAT gateway charges for every gigabyte it processes, on top of whatever the destination costs. Private endpoints to provider services, and gateway endpoints where they exist, route that traffic without touching the NAT path. AWS documents the behaviour in its NAT gateway guide.

Levers that genuinely work

  • Put a CDN in front of anything cacheable. Cache hits are served at the edge and origin egress drops toward zero, as explained in CDN basics for cloud-hosted sites.
  • Compress responses and choose efficient formats. Modern image and video codecs reduce transferred bytes without touching the architecture.
  • Keep the database, the cache and the application in the same zone unless resilience genuinely requires otherwise.
  • Use private endpoints for provider services so traffic never traverses a NAT gateway or the public internet.
  • Set long cache lifetimes with content-hashed filenames, so repeat visitors revalidate instead of re-downloading.
  • Review the transfer lines on the invoice monthly and attribute them to a service, using the tagging discipline in cost monitoring and budget alerts.
  • Consider an object storage service that does not charge for retrieval when the workload is read-heavy and public.

Google Cloud publishes its network rate structure, including the distinction between its premium and standard network tiers, in its network pricing documentation, which is a useful reference for understanding how routing choices change the meter.

Egress when you are leaving

For years the cost of moving data out was one of the strongest forms of lock-in. Regulatory pressure in Europe changed that, and the major providers now offer a path for customers to transfer their data out without the usual egress charge when they are ending their use of the service. The process is a request rather than an automatic discount, and it applies to an exit rather than to ordinary traffic.

That shifts the lock-in conversation away from the transfer bill and toward the thing that was always harder: the proprietary services woven into the application. Moving bytes is a logistics problem. Rewriting around a managed service is an engineering project, which is why cloud vendor lock-in focuses on architecture rather than on transfer rates.

If a move is already on the table, the practical mechanics of copying live data between platforms are covered in moving data between cloud providers. For workloads where predictable transfer is the deciding factor, the AWS and DigitalOcean comparison contrasts metered and bundled models directly, and the Hetzner account listings describe a provider built around included traffic.

Questions about transfer charges

Why is inbound traffic free when outbound is not?

Partly economics and partly strategy. Providers want data to arrive easily because data attracts workloads, and outbound capacity to transit providers is the side with the clearest marginal cost. The practical effect is that ingestion is cheap and serving is where the meter runs.

Does traffic between two servers in the same region cost anything?

It depends on whether they share an availability zone and whether they talk over private addresses. Same-zone private traffic is usually free. Cross-zone traffic is commonly charged in both directions, and traffic that leaves through a public address can be billed even when both endpoints belong to you.

Does a CDN remove egress charges or just move them?

It moves and usually reduces them. Delivery from the edge is billed at CDN rates, while traffic from your origin to the provider's own CDN is frequently not charged at all. Because cache hits never reach the origin, total billable volume falls as the hit ratio rises.

How do I find out which service is generating the transfer?

Use the provider's cost analysis tool grouped by usage type and by resource tag, then confirm with flow logs if the answer is still ambiguous. Tagging every resource with an owning service at creation time is what makes this attribution possible later.

Questions about a cloud account?

Ask about products, variants, availability or purchasing on either channel.