Asia VPNAsiaVPNGet app
All posts

CloudFront vs Cloudflare: The Pricing Model Decides It

4 min read

Amazon CloudFront and Cloudflare are not the same company, are not owned by the same company, and have never been related. The names are a coincidence that has been confusing people since 2010.

They are also, on raw performance, close enough that you will not decide between them on latency benchmarks. Both run hundreds of edge locations, both terminate TLS at the edge, both do HTTP/3. Where they genuinely diverge is in how they bill you and what their terms let you serve - and for most projects that is the decision.

Two opposite philosophies

CloudFront meters everything. Bandwidth out, requests, function invocations, invalidations beyond the first thousand. You pay for what you moved, per region, at a per-GB rate.

Cloudflare bundles. One flat plan price, bandwidth not metered, features gated by tier rather than by volume. What you pay does not move when your traffic does.

Neither is inherently cheaper. Which is cheaper depends entirely on your traffic shape, and the crossover is sharp.

What CloudFront costs

CloudFront now has two pricing models, with different free allowances, and mixing them up is an easy way to get a surprise.

Pay-as-you-go carries an always-free monthly tier of 1 TB of data transfer out, 10 million requests, and 2 million CloudFront Function invocations. Past that, egress is priced by the region the viewer is in:

RegionPer GB (next 9 TB)
North America$0.085
Europe$0.085
Japan$0.114
Singapore / Southeast Asia$0.120
India$0.109
South America$0.110

Rates fall as volume climbs, bottoming out around $0.020/GB in North America and $0.060/GB in Asia Pacific past 5 PB. Invalidations are free for the first 1,000 paths per month, $0.005 per path after.

Note the shape of that table. Asia-Pacific egress runs about 40% above North America, and it stays expensive at scale - the floor in Singapore is three times the North American floor. If your audience is in Southeast Asia, the region column is not a footnote, it is the budget.

Flat-rate plans are the newer option: $0, $15, $200, $1,000, or custom. The $0 tier includes 1M requests and 100 GB of transfer - considerably less than the pay-as-you-go free tier, which trips people up. The paid tiers bundle WAF rules, logging and DDoS features that cost extra under pay-as-you-go. No overage charges on these plans; you pick a ceiling instead.

What Cloudflare costs

Four tiers, and the jumps are large:

PlanMonthlyAnnual
Free$0-
Pro$25$240
Business$250$2,400
EnterpriseCustomCustom

The Free plan is genuinely usable in production: CDN, DNS, universal SSL, and unmetered DDoS mitigation. That last one is not a trial - Cloudflare does not bill by attack size at any tier, which is a meaningfully different risk position from a metered CDN where an attack is a bandwidth bill.

Pro buys you image optimisation, WAF rulesets and better analytics. Business buys custom SSL and uptime commitments. Bandwidth is not the axis; features are.

The clause that catches people

Cloudflare's CDN is licensed to serve web pages, not to be a file host.

The old Section 2.8 of the Self-Serve Subscription Agreement forbade serving "video or a disproportionate percentage of pictures, audio files, or other non-HTML content." Cloudflare retired that wording in 2023 and moved the restriction into CDN-specific service terms, dropping the awkward HTML/non-HTML distinction. The restriction itself did not go away: you can now serve video and large files through the CDN when they are hosted on Cloudflare's own services

  • Stream, Images, R2 - and not when they are large files sitting on someone else's origin.

If your plan is "put Cloudflare Free in front of my 4K video library on a cheap VPS", that is the exact case the clause exists to stop, and enforcement is suspension rather than a bill.

CloudFront has no equivalent restriction. It will serve you a petabyte of video without asking a question, and then invoice you for it. Pick your failure mode: Cloudflare's is a policy conversation, CloudFront's is a credit card.

How they sit in front of your site

A practical difference that decides more architectures than the pricing does.

Cloudflare wants your nameservers. You move DNS to Cloudflare and it proxies your whole domain. That is why DDoS protection works so well - your origin IP stops being public - but it also means Cloudflare is in the path of everything, including the parts you did not intend to put behind a CDN.

CloudFront gives you a distribution hostname that you CNAME selectively. You can put it in front of one asset subdomain and leave the rest of the domain alone. DNS stays wherever it is. That granularity is useful when a CDN is one component of a larger AWS setup rather than the front door.

If your origin is S3, an Application Load Balancer, or Lambda, CloudFront's integration is a real advantage: it speaks to those services natively, requests never leave the AWS network, and origin egress to CloudFront is free.

So which one

Cloudflare if you are running a website, want a predictable bill, want DDoS protection you are never billed for, and are happy to hand over DNS. The Free tier covers an enormous number of real projects, and $25 covers most of the rest.

CloudFront if you are already on AWS, if your origin is an AWS service, if you need per-route control, or if you are serving large media that Cloudflare's terms do not cover. Model the cost with the region table before you commit - particularly if your viewers are in Asia.

And if you are a static site with a few hundred visitors a month: both are free at that scale, so pick the one whose dashboard you find less irritating. That is a real criterion and nobody admits it.

For a static site specifically there is a third answer that sits outside this comparison rather than inside it. Cloudflare Workers serves static assets free and unlimited, with no egress charge at any volume - which changes the arithmetic above rather than competing within it.


Cover photo by Kirill Sh on Unsplash.

Keep reading