Azure bandwidth and egress pricing follows a simple shape: data coming into Azure is generally free, and data leaving Azure to the internet, or moving between regions, is billed per gigabyte. The reason egress surprises people is that it is invisible at design time and only appears once traffic flows. Understanding which transfers are free and which bill lets you place data and route traffic so you pay as little as possible to move it.
This article is part of our Azure cluster. Start with the complete guide to Azure cost optimization, the pillar this piece links up to. Egress reduction is a Cut step in our See, Cut, Lock, Run method, applied to the data-movement layer where architecture choices, not instance sizes, drive the cost.
Inbound is free, outbound to the internet bills, and the price per gigabyte falls as monthly volume rises through tiered pricing. Movement inside a single region is the cheapest, movement between regions costs more, and movement out to the internet costs most. Every egress optimization is really an exercise in keeping data movement short and inside Azure wherever the architecture allows.
The four kinds of data transfer that matter
Not all bytes are billed the same way. Separating the transfer types is the first step to controlling them, because the fix for each is different.
| Transfer type | Typical cost | What drives it |
|---|---|---|
| Inbound (ingress) | Generally free | Uploading data into Azure is not charged |
| Internet egress | Billed per GB, tiered | Serving data out to users and external systems |
| Cross-region | Billed per GB | Replication and traffic between Azure regions |
| Cross-zone / intra-region | Lower or free depending on path | Availability-zone and same-region traffic |
Where the surprises come from
Egress bills rarely come from the obvious place. The big ones tend to be chatty cross-region replication that was set up for resilience and never re-examined, multi-region architectures that route user traffic across regions instead of serving locally, large datasets pulled out of Azure to on-premises or another cloud, and content served directly from storage or compute to the internet at scale without a cache in front. None of these look expensive in a diagram; they only show up once the traffic is real.
Step 1: Find out where the bytes actually go
You cannot reduce egress you cannot see. Start by attributing the data-transfer charges in Azure Cost Management to the resources and regions generating them, so the abstract networking line becomes a list of specific flows. Almost always, a small number of flows account for most of the cost, and that is where the effort goes. Routing cost analysis through tags and resource groups makes this far easier, which is one more reason tagging pays for itself, as covered in Azure tagging and management groups for cost allocation.
An egress bill nobody can explain?
Our Azure cost audit attributes every data-transfer charge to the flow that caused it, identifies the cross-region and internet egress driving the cost, and designs the architecture and caching changes that reduce it. On the performance model, you pay only from realized savings. No savings, no fee.
Book an Azure cost audit →Step 2: Keep data movement short and local
Most egress savings come from architecture, not from a pricing trick. Co-locate the compute and the data it reads so traffic stays inside a region. Serve users from the region nearest them rather than hauling traffic across regions. Re-examine cross-region replication and confirm the resilience it buys is worth the continuous transfer cost, because some of it is habit rather than requirement. Each of these keeps bytes from crossing the boundaries that bill.
Step 3: Put a cache in front of internet egress
For data served to the internet, a content delivery network changes the economics. A CDN serves repeated requests from edge caches, so the same object is not paid for as origin egress every time it is requested. For any workload serving the same static content, media, or assets to many users, fronting it with a CDN cuts both the egress cost and the load on the origin. The win scales with how cacheable and how repeatedly requested the content is.
Step 4: Weigh egress in multicloud and exit decisions
Egress is also where the cost of moving data out of Azure entirely shows up, which makes it a real factor in any multicloud or repatriation plan. Pulling large datasets out to another cloud or on-premises is billed, and on big volumes it is material, so the transfer cost belongs in the business case rather than discovered afterward. The same logic applies to data-heavy analytics pipelines, where keeping processing close to the data avoids paying to move it; we cover that in Azure Synapse and data costs for analytics teams.
The free-ingress and tiered-egress structure described above reflects Azure bandwidth pricing as of May 2026. Verify current per-GB rates, free allowances, and cross-region charges in Azure documentation before sizing an architecture decision on them, as networking prices change.
The Azure Cost Optimization Field Guide includes the egress attribution method and the data-locality patterns we apply on engagements. It is the downloadable companion to this article.
The short version
Inbound data is free and outbound bills, with internet egress the most expensive and cross-region next. Find the few flows that drive most of the cost, keep data movement short and local, cache internet-facing content behind a CDN, and weigh egress explicitly in any decision to move data out of Azure. To place egress inside a full pass, follow how to run an Azure cost optimization assessment. When you want the data-transfer cost attributed and the architecture changes designed, that is exactly what our Azure cost optimization service delivers.