Three of the four companies running general-purpose compute at global scale charge between 8.7 and 12 cents to move a gigabyte to a customer's browser. The fourth charges nothing at all, and it is largely absent from public comparisons because it arrived from the content-delivery side rather than the compute side. This report prices it, including the workloads where the answer is to stay put.
Public cloud comparisons price compute. They put Lambda next to Workers, argue about cold starts and GB-seconds, and stop there. On anything that serves traffic to end users, compute is a rounding error and outbound data transfer is the invoice. AWS charges 0.09 dollars per gigabyte beyond the first 100 GB. Azure charges 0.087. Google Cloud Premium Tier charges 0.12 per gibibyte to North America. Cloudflare's own documentation states that egressing from R2, including through the Workers API, the S3 API and r2.dev domains, does not incur data transfer charges at all. Ten terabytes a month is 913 dollars on AWS, 882 on Azure, 1,137 on Google Cloud, and nothing on Cloudflare. Same bytes, every month.
The waivers announced in 2024 are frequently cited as having closed that gap. They did not. Google, AWS and Microsoft each dropped transfer charges for customers leaving their platform, and the EU Data Act bans switching fees outright from January 2027. Every one of those measures concerns data leaving on exit. None of them touches what it costs to serve your own users. Egress-on-exit was lock-in and regulators removed it; egress-on-operation is revenue and nobody has. The qualification belongs here rather than buried: every hyperscaler figure in this report is list price, an enterprise holding a committed-spend agreement may pay 40 to 70 percent below it, and the gaps shown should be read as an upper bound rather than a quote.
All pricing captured on 22 August 2026 from each vendor's own current pricing page. A vendor pricing page is a primary source for what that vendor charges, and those figures are labeled fact. Vendor language about what the pricing means is labeled vendor claim. The places where Cloudflare loses carry the same weight as the places where it wins.
AWS charges 0.09 dollars per gigabyte for S3 data transfer out beyond the first 100 GB. Azure charges 0.087 beyond 100 GB. Google Cloud Premium Tier charges 0.12 dollars per gibibyte to North America beyond the first gibibyte. Cloudflare's R2 documentation states that egressing directly from R2, including via the Workers API, S3 API and r2.dev domains, does not incur data transfer charges and is free.
Ten terabytes of outbound traffic costs 913 dollars on AWS, 882 on Azure and 1,137 on Google Cloud at published rates. On Cloudflare it costs nothing. This is arithmetic on four vendor pricing pages captured on 22 August 2026, not a modeled estimate, and it repeats every month.
Lambda's free tier is one million requests and 400,000 GB-seconds a month, perpetual rather than introductory. Ten million monthly requests through a small function costs under two dollars there and five on Cloudflare, because five dollars is the Workers Paid floor. Attach the terabyte of traffic that execution exists to serve and the position reverses by a factor of seventeen.
Durable Objects provide per-object state with an embedded SQLite database at 0.15 dollars per million requests, with jurisdiction-restricted namespaces for the European Union, the United States and FedRAMP-Moderate data centers. Cron Triggers are supported on Workers. Containers exist for work that exceeds an isolate. The constraint that remains real is memory: 128 MB per isolate, and no plan raises it.
Cloudflare documents jurisdictions as enforcing where a Durable Object runs and stores data, while location hints are explicitly described as best effort and not a guarantee. Object state can be pinned; general Workers execution is distributed by design. A workload with a hard residency obligation can be built here, but only deliberately, and never by accident.
Retool's Business tier is 50 dollars per builder per month on annual billing plus 15 per internal user. Power Apps Premium is 20 dollars per user per month. Cloudflare charges for usage, not for seats. One internal application team of five builders and twenty users is a 6,540 dollar annual difference before a line of the application is written.
Microsoft's published Dataverse capacity add-on rate is 40 dollars per gigabyte per month. Cloudflare D1 is 0.75, Durable Objects SQLite storage is 0.20, and R2 is 0.015. The same hundred gigabytes of application data costs 48,000 dollars a year in the first case and 18 dollars in the last.
Only the command-line tool can deploy, because functions must be compiled first and no dashboard action performs that compilation. The published AI agent integrations read account state and manage containers but not contents: there is no tool for writing a single KV value and none for deploying a Worker. The HTTP API fills the rest. A developer learning this cold loses a day. An assistant that has read all three sets of documentation does not.
Dashboard drag-and-drop ships static files and no compiled functions, reporting success. A deploy without the right branch argument lands as a preview and reports success. Referrer-restricted API keys fail server-side with an error pointing at the front end. Function responses at extensionless paths are not edge-cached even when the headers ask for it. None of these produces a useful error anywhere, which is exactly the condition under which unsupervised AI configuration goes wrong.
Google, AWS and Microsoft each waived data transfer charges for departing customers during the first quarter of 2024, and from January 2027 the EU Data Act prohibits switching fees outright for EU customers. All of that concerns exit traffic. Ordinary outbound traffic to your own end users is billed exactly as before.
SOC 2 Type II, ISO 27001, ISO 27701 and PCI DSS Level 1 Service Provider assessment are all published. Cloudflare also terminated the Daily Stormer in 2017, 8chan in 2019 and Kiwi Farms in 2022. The threshold applied has been extremely high and no ordinary business is near it, but the decision is Cloudflare's, made under public pressure, on a timescale of days, by the company that is also resolving your DNS and terminating your TLS.
The Pages documentation states that Workers supports most Pages use cases, offers a broader feature set, is Cloudflare's primary platform for building applications, and that new projects should start with Workers. The compatibility matrix confirms the direction: Cron Triggers, Queue Consumers, Rate Limiting, Tail Workers and Logpush are all Workers-only. Read it as maintenance mode rather than end of life.
Each provider's published free allowance and first-tier rate applied to 10,240 GB of outbound traffic to North America. List prices only. Committed-spend agreements are not public and would reduce the three paid figures, which is the largest single qualification on this comparison and the reason a reader holding an enterprise agreement should treat these gaps as an upper bound.
R2's documentation states that egressing directly from R2, including via the Workers API, S3 API and r2.dev domains, is free. The Workers pricing page carries the matching statement for compute: requests to static assets are free and unlimited, with no separate charge for bandwidth.
No volume dimension to bill
First 100 GB per month free, then 0.087 dollars per gigabyte for the next 10 TB from North America and Europe, stepping down to 0.083, 0.07 and 0.05 at higher volumes.
Cheapest of the three that charge
First 100 GB per month free, aggregated across services and regions, then 0.09 dollars per gigabyte from US East regions. S3 Standard storage is 0.023 per gigabyte-month against R2's 0.015, which is real and not decisive.
Storage is a rounding error; transfer is the bill
Premium Tier gives the first gibibyte free, then charges 0.12 dollars per gibibyte to North America up to one tebibyte, 0.11 to ten tebibytes and 0.08 above that. The highest published operational egress rate of the four.
Most expensive on the line that matters
Most things move, and the things that do not, do not move for technical reasons rather than cost reasons. The classification is mine and another reader would shift one or two. The binding constraint attached to each is documented rather than argued.
The platform's strongest case and the one with no qualifications attached. A representative site of 25,000 monthly page views, 10,000 function calls and 8 GB of egress fits inside the free allowance with room to spare, because static requests are not metered at all.
No binding constraint
The egress arithmetic is overwhelming here, but the service-specific terms name the products a customer must use to serve video and large files through the CDN, and reserve the right to limit accounts that do not. Workers and R2 sit inside the named Developer Platform; a raw file library behind the CDN does not.
Read the CDN clause first
This is where the asymmetry is widest, because the entire purpose of the workload is bytes leaving the network toward somebody else's client.
Egress asymmetry at its largest
Cron Triggers are supported on Workers and marked unsupported for Pages in Cloudflare's own compatibility matrix. Scheduled invocations may run up to 15 minutes. That is a product limitation rather than a platform one, and it decides which product you start on.
Workers only, 15 minute ceiling
Durable Objects are addressed by name so every request for an identity reaches the same instance, each with its own SQLite database and 25 billion rows read a month included on the paid plan. Design work rather than a cost question, and also the heaviest lock-in on the platform.
A rewrite to leave, not a port
Jurisdiction-restricted namespaces for eu, us and fedramp pin where an object runs and stores data. Location hints do not. Pinning object storage is not the same as pinning every execution path that touches it.
Read the jurisdiction docs yourself
The free plan allows 10 milliseconds of CPU per request, the paid plan defaults to 30 seconds and permits five minutes, and scheduled and queue work is capped at 15 minutes. Containers exist but change the pricing model, so the comparison has to be run again.
Bounded CPU, 128 MB isolate
Nothing here corresponds to BigQuery, Redshift or Synapse. No amount of egress saving changes that, and a team that tries to move it will conclude the platform is a toy.
No equivalent product exists
There is no managed model-training service and no general-purpose accelerator fleet. Workers AI is inference against hosted models, which is a different product from renting GPUs by the hour.
No accelerator fleet
Each isolate can consume up to 128 MB including the JavaScript heap and WebAssembly allocations. No plan raises it. A workload that needs a large dataset resident cannot be made to fit by paying more.
128 MB, no paid upgrade
The entire cost argument rests on egress asymmetry. A pipeline whose data never leaves the provider's network has little of it, and for that workload the comparison should be run on compute and storage alone, where Cloudflare frequently loses.
The advantage does not apply
The report takes five objections seriously rather than reassuring you past them. Lock-in is low for static and edge work, moderate for D1 and R2, and high for anything built on Durable Objects, because nothing else has that primitive with those semantics. Concentration is real: W3Techs puts Cloudflare in use by 24.8 percent of all websites and 84.4 percent of those whose reverse proxy it can identify, as at August 2026. So are the outages, and two multi-hour incidents in seven months are stated without spin, including the 18 November 2025 failure Cloudflare's own postmortem calls its worst since 2019. The smallest case gets separate treatment because it is the cleanest: a five-page business site is being billed an application price for a document, between 200 and 500 dollars a year for capability it does not use, and the box in a closet that was supposed to be free costs about 1,575 dollars a year once somebody's time is counted. Four scenarios run to 2028 with subjective probabilities and, more usefully, the earliest observable sign of each. The one that matters most is also the cheapest to watch: any change to the sentence saying requests to static assets are free and unlimited, or to R2's statement that egress is free. Those two lines are worth re-reading before acting on any of this.
This isn't a vendor summary. Every sentence is labeled by what stands behind it: verified fact, vendor claim, third-party estimate, my assessment, hypothesis, or scenario. Sources are numbered and clickable. Forward-looking sections use scenarios with observable tripwires, not forecasts. It's the same method behind every market assessment I write.
Thirty-eight pages, built from public sources with no client brief and no interviews. Read it in the browser or take the PDF.
Each report here answers a real question, directed and researched against public sources and evaluated against a stated assumption, then delivered as Word and PDF. If you're weighing a platform, sizing a category, or defending a number to a board, tell me the decision behind it and I'll tell you honestly whether a report is the right tool.
Commission an assessment