Azure Data Transfer Costs: 7 Ways to Reduce Them
Azure data transfer costs are one of the most common sources of unexpected cloud spend. Unlike compute and storage, which scale predictably with resource count, data transfer costs scale with how your application behaves, which is harder to anticipate. A microservices architecture that generates significant cross-zone traffic, a data pipeline that moves large datasets between regions, or an application that transfers data to the internet without compression: each creates costs that are invisible until the invoice arrives.
Understanding the billing model, then applying the seven reduction methods below, is how you bring data transfer costs under control.
How Azure data transfer pricing works
Azure charges for outbound (egress) data transfer in most scenarios. Inbound (ingress) data transfer is free. The main categories:
Internet egress: Data transferred from Azure to the public internet. Priced per GB, with the first 5 GB/month free and decreasing per-GB rates at higher volumes (roughly £0.06-0.07/GB for the UK South region, decreasing above 10 TB/month).
Cross-region transfer within Azure: Data transferred between Azure regions (e.g., UK South to West Europe). Priced per GB, typically at a lower rate than internet egress but still material at volume.
Cross-availability-zone transfer: Data transferred between availability zones within the same region. This was previously free but is now charged, at a lower rate than cross-region.
VNet peering transfer: Data transferred between peered VNets (whether within the same region or cross-region).
ExpressRoute and VPN: Data transferred via dedicated connectivity also carries charges, typically at a lower rate per GB than internet egress.
Use Azure Cost Management filtered by the Meter Category "Bandwidth" to see your current data transfer spend broken down by sub-category. This is the starting point for knowing where to focus.
1. Collocate services in the same region and zone
The simplest cost reduction: put services that communicate heavily in the same Azure region and, where possible, the same availability zone. Services in the same region communicating over the Azure backbone do not generate internet egress. Services in the same availability zone avoid cross-zone transfer charges.
Audit your architecture for cross-region communication that does not need to be cross-region. A web application in UK South calling an API in West Europe because the API was deployed there first is a data transfer cost that colocation eliminates. If both services can run in UK South, move them.
For existing multi-region architectures where colocation is not possible, understand which communication patterns generate the most cross-region traffic and evaluate whether they can be reduced without changing the functional requirements.
2. Use Private Endpoints to keep traffic off the internet
Azure PaaS services (Storage, SQL, Service Bus, Key Vault, etc.) are accessible over the public internet by default. Traffic from an Azure VM to a public-endpoint Storage account goes out to the internet and back, generating egress charges in some configurations.
Private Endpoints give PaaS services a private IP address inside your VNet. Traffic stays on the Azure backbone rather than traversing the public internet. This eliminates internet egress charges for PaaS service communication from within Azure.
For environments that are not yet on Private Endpoints, this is both a security improvement and a cost reduction: two compelling reasons to implement it.
3. Enable Azure CDN for frequently delivered content
If your application serves static content (images, CSS, JavaScript, videos) to internet users, each delivery without a CDN generates full outbound egress from the origin. A CDN caches content at edge locations and serves it to users from the nearest edge node.
Azure CDN (or Azure Front Door with caching) serves cached content at a lower per-GB rate than standard internet egress from the origin region, and reduces the number of requests reaching the origin. For content-heavy applications with significant audience, CDN costs are typically a fraction of the origin egress they replace.
Calculate your CDN break-even: compare your current origin egress spend against CDN pricing for the same volume. If more than 40-50% of requests are cacheable, CDN is almost always cheaper.
4. Compress data before transfer
Compression reduces the volume of data transferred and therefore the associated cost. For API responses, enable HTTP compression (gzip or Brotli) at the application layer or at the Application Gateway/Front Door layer. A JSON API response compressed with gzip is typically 60-80% smaller than uncompressed.
For bulk data transfers (database exports, log archiving, large file uploads), compress before transferring. A 10 GB database export compressed to 3 GB saves 7 GB of egress charges on every transfer.
For inter-service communication within Azure, compression reduces cross-zone and VNet peering charges. The CPU cost of compression is typically orders of magnitude cheaper than the data transfer cost saved.
5. Optimise data pipelines to avoid redundant transfers
Data pipeline architectures often transfer data multiple times through intermediate stages. An ETL pipeline that loads raw data from Storage to a VM for transformation, then writes the result back to Storage, then copies it to a second Storage account in another region, generates three transfer operations where one might suffice.
Map your data flows explicitly. For each hop between storage, compute, and services, ask: is this transfer necessary, or does it exist because it was easy to implement? Common optimisations:
- Run transformations in Azure Data Factory or Synapse within the same region as the source data, writing output directly to the target, instead of moving data to a VM for transformation
- Use Azure Storage copy operations (server-side copy within the same region) rather than downloading and re-uploading from a VM
- Batch small writes into larger ones to reduce the per-operation overhead and network round trips
6. Use ExpressRoute for high-volume on-premise to Azure transfer
If your workload involves significant data transfer between on-premise and Azure (backup, replication, data warehouse loading), ExpressRoute reduces per-GB costs compared to internet VPN, and eliminates the internet egress charges entirely for traffic that originates from your corporate network.
ExpressRoute has a fixed circuit cost plus a per-GB metered data charge (or an unlimited port option at higher fixed cost). For the right volume, the unlimited option can be cheaper than metered internet egress.
Calculate the break-even point based on your actual transfer volumes. For environments moving more than 1-2 TB/month between on-premise and Azure, ExpressRoute typically pays for itself in reduced transfer charges within months.
7. Monitor and alert on data transfer spend
The most effective long-term cost reduction is visibility: knowing when data transfer spend spikes before it becomes a large invoice. Set up Azure Cost Management budget alerts scoped to the Bandwidth meter category. Alert at 50% and 80% of budget.
In Azure Monitor, create a dashboard showing outbound data transfer by resource over a rolling 30-day window. A resource that suddenly starts generating 10x its normal egress is generating data you did not plan for: a logging misconfiguration, a runaway retry loop, or an application bug that causes large payloads to be sent unnecessarily.
For detailed transfer attribution, enable network flow logging (VNet Flow Logs) and query the Log Analytics data for the highest-volume source-destination pairs. This identifies which resources and which destinations are driving transfer costs, giving you specific targets for optimisation.
Where Critical Cloud comes in
Data transfer costs are the category of Azure spend that most consistently surprises teams because they are indirect and reactive rather than directly tied to resource provisioning decisions. We manage Azure cost visibility and optimisation for technology-led businesses, with data transfer charges tracked as part of the broader cost model. As the world's first Powered by Datadog accredited partner, we monitor egress volume alongside application metrics to catch unexpected data transfer patterns before they become invoice surprises. See how Critical Support works.