/blog / comparison
Egress Fees Still Trap You in 2026: A Four-Provider Audit
We dug into AWS, Azure, GCP, and Cloudflare R2 to see if the data gravity problem has actually improved.
- egress
- pricing
- cloud
- aws
- azure
- gcp
- cloudflare
Egress fees have been the cloud’s hidden tax since the beginning. It’s 2026, and the narrative hasn’t shifted much; providers still offer generous ingress, then charge you handsomely to take your own data elsewhere. We ran a four-provider audit to see just how sticky data egress remains, focusing on a common workload: serving 10TB of general blob storage data to the public internet each month. Our standard benchmark playbook, which we detailed in /blog/benchmark-playbook/, was adapted to simulate consistent data transfer rather than compute performance.
The Hyperscaler Status Quo: Pay to Leave
AWS, Azure, and Google Cloud Platform continue to operate on a tiered egress model. The first gigabyte or so is often free, a pleasantry. Beyond that, the per-gigabyte rate kicks in, usually decreasing slightly as volume increases, but never disappearing entirely. The core business model hasn’t changed: make it easy and cheap to put data in, make it expensive to take out. It’s a classic data gravity play, ensuring your next service, your next AI model, your next database, stays within their walls because moving the foundational data is simply too costly.
AWS S3 + EC2
We spun up a modest EC2 instance in us-east-1 and populated an S3 bucket with 10TB of generic, compressible data (think static assets, large log files, software packages). We then set up a simple web server to serve this data, simulating a heavy download or streaming workload. For egress from S3 to the public internet, after the initial 1GB free tier, AWS charges $0.09 per GB for the first 9.999TB. For our 10TB monthly test, this translated to a rather predictable monthly bill of approximately $921. There are certainly ways to optimize this, like using CloudFront, but that just shifts the cost to CDN fees and introduces another layer of complexity. As we’ve noted before in /blog/egress-cost-guide/, AWS egress remains a significant line item.
Azure Blob Storage + VMs
Our Azure test mirrored the AWS setup, using a standard VM in East US and Azure Blob Storage. Microsoft’s pricing, after the 5GB free egress, starts at $0.087 per GB for the first 10TB in Zone 1 regions. For our 10TB, this came out to roughly $888. A marginal improvement over AWS, but still a hefty sum. The structure of their pricing tiers is nearly identical to AWS, suggesting that competition in this specific area is more about matching the dominant player than disrupting the model.
Google Cloud Storage + Compute Engine
Google Cloud, often touted for its machine learning prowess, also relies heavily on data. We used a Compute Engine instance in us-central1 and Google Cloud Storage. GCP’s egress pricing is a bit more granular, with $0.12 per GB for the first 1TB, then $0.11 per GB for the next 9TB, for data transferred to North America or Europe. This averaged out to around $1170 for our 10TB test. While GCP often positions itself as competitive for compute, egress remains firmly in the same league as its rivals, if not slightly higher for this volume. For anyone considering moving a substantial dataset to GCP, these numbers are worth noting.
The Challenger: Cloudflare R2
Cloudflare R2 entered the fray with a bold promise: zero egress fees. This immediately caught our attention, and anyone who’s ever stared down a multi-thousand-dollar cloud bill for data transfer will understand why. R2 is an S3-compatible object storage service designed to integrate seamlessly with Cloudflare’s CDN. The catch, of course, is that the ‘zero egress’ primarily applies when data is served via Cloudflare’s network.
We set up R2 and replicated our 10TB data serving workload. When served directly through Cloudflare’s CDN, the egress cost was indeed zero, as advertised. This is a game-changer for many web applications, static sites, and media delivery platforms that already leverage a CDN. However, if you need to egress data outside of Cloudflare’s network, or if you hit certain API request limits, you’ll start incurring costs. API operations (reads/writes) are priced, and while generally low, they add up with very high transaction volumes. For our 10TB monthly scenario, assuming it’s all served via Cloudflare’s CDN, the direct egress cost was $0. The total bill was limited to storage costs ($0.015/GB/month for 10TB = $150) and API requests, which for our test remained negligible. This is a significant saving compared to the hyperscalers.
However, it’s not a complete free lunch. R2 is not a drop-in replacement for every S3 use case. It might not integrate as smoothly with every existing cloud service, and for workloads requiring complex server-side processing close to the data, the latency of calling R2 from a non-Cloudflare network might be a factor. It effectively moves the ‘lock-in’ from egress fees to the Cloudflare ecosystem itself, which for many, is a trade-off worth making.
Why It Still Matters in 2026
The persistence of significant egress fees means that data gravity is as strong as ever. Multi-cloud strategies, while conceptually appealing for resilience and avoiding vendor lock-in, become prohibitively expensive for data-intensive applications. Moving 10TB a month between providers isn’t just a technical challenge; it’s an annual operational cost exceeding $10,000 before you even factor in compute.
For AI and ML workloads, this is particularly acute. Training massive models or serving high-volume inference (as we discussed in /blog/llama3-70b-cheapest/) often involves moving terabytes of datasets or model weights around. While specialized GPU providers sometimes offer more transparent or bundled pricing for data transfer, it’s crucial to read the fine print. Runpod, for example, typically includes a certain amount of egress in their Secure Cloud offerings, but community cloud instances still incur standard network transfer fees, usually competitive with dedicated server providers but certainly not free. If you’re running heavy inference, those output tokens still need to go somewhere, and that’s often egress. You can check out their options at https://runpod.io/?ref=8vbo5oc9.
Mitigation strategies largely remain the same: architect your applications to minimize cross-region or cross-provider data transfer, compress everything, and aggressively cache content with a CDN. For extremely high egress requirements, dedicated servers from providers like Hetzner or OVH, which offer generous unmetered or high-threshold bandwidth, still present a compelling alternative, provided you’re willing to manage the infrastructure yourself. We’ve explored this angle in posts like /blog/game-server-hosting-2026/.
The Verdict
In 2026, egress fees remain a significant, unavoidable cost for data-intensive cloud workloads on the major hyperscalers. The core problem hasn’t been solved; it’s simply been refined with more complex tiers and region-specific pricing. Cloudflare R2 offers a genuine, if specific, alternative for certain types of workloads, particularly those that can leverage Cloudflare’s CDN. However, it’s not a universal panacea. Ultimately, navigating egress costs still requires careful planning, architectural foresight, and a willingness to scrutinize every line on the bill. There’s no magic bullet, just the same old arithmetic.
guide
The actual cost of egress on AWS, Hetzner, OVH and Runpod
Egress is the hidden tax of the cloud. We modelled four real workloads against four providers.
11 min
comparison · runpod
RTX 3090 Cloud Pricing: Runpod, Vast.ai, Vultr Compared
We pitted three providers against each other for budget 3090 rentals, tracking costs, stability, and real-world performance for ML workloads.
5 min
comparison
A100 Cloud Pricing: Runpod, Vultr, Lambda, Vast.ai Battle for Your DL Dollars
We put four A100 providers through our standard LLM inference benchmark and tracked every dollar, queue, and cold-start in the weeks leading up to May 2026.
8 min