CloudFront vs S3 Direct Calculator
Compare serving through CloudFront against serving straight from S3. The CDN is cheaper per byte and 2.5x dearer per request, so the answer turns on your average object size — and the crossover is around 200 KB.
What actually decides this: object size
So CloudFront wins outright on video, images, installers and large downloads, and can genuinely lose money in front of an API serving small JSON responses. Every other calculator in this space models the cache hit rate and ignores this entirely.
Side by side
With CloudFront
| Data transfer outTiered from $0.085/GB | $1,564.16 |
| Requests200M at the HTTPS rate | $190.00 |
| Origin fetchFree from an AWS origin | $0.00 |
| S3 GETs on misses30M requests reach the bucket | $12.00 |
| Total | $1,766.16 |
Straight from S3
| Data transfer outTiered from $0.09/GB after 100 GB free | $1,742.20 |
| GET requestsAll 200M hit the bucket | $80.00 |
| Total | $1,822.20 |
What moves the answer
What this model assumes
- US and Canada rates only. CloudFront prices by the edge region that serves the request, and South America, Asia Pacific and the Middle East cost materially more. A globally distributed audience will pay above this figure — check the price class you have configured.
- CloudFront requests cost 2.5x an S3 GET. $1.00 per million against $0.40. That is the counterweight to the cheaper egress, and it is why average object size decides the answer rather than cache hit rate. A request-heavy, byte-light workload is the case where a CDN costs more.
- Origin transfer into CloudFront is free. This is a published AWS rate of zero, not an approximation, and it is what lets a CDN win at a low hit rate when the objects are large enough.
- Cache misses still cost S3 GETs. A miss is a request to your bucket, priced at the S3 Standard GET rate. Modelled, because at a low hit rate it is a real line.
- Not modelled: Origin Shield, Lambda@Edge and CloudFront Functions, field-level encryption, real-time logs, invalidation requests beyond the free allowance, or dedicated SSL certificates.
- Latency is not priced. Serving from an edge location is faster than serving from one region, sometimes dramatically so for distant users. That is usually the actual reason to adopt a CDN; the cost result here is a bonus rather than the argument.
- CloudFront data transfer and requests — source, read 4 Aug 2026
- S3 storage classes, requests and lifecycle transitions — source, read 4 Aug 2026
- Data transfer and NAT gateway — source, read 4 Aug 2026
US East (N. Virginia) list prices, excluding any negotiated or committed-use discount. Your effective rate is lower if you have one.
Frequently asked questions
Is CloudFront cheaper than serving from S3 directly?
It depends on your average object size, and that is the answer almost nobody gives. CloudFront is cheaper per byte — $0.085 per GB against S3's $0.09, with transfer from an S3 origin into CloudFront free rather than merely discounted. But it is dearer per request: $1.00 per million HTTPS requests against S3's $0.40 per million GETs. The crossover sits around a 210 KB average object with nothing cached, falling to about 126 KB when everything is. Above that, CloudFront wins outright. Below it, a CDN in front of an API serving small JSON responses can genuinely cost more.
What average object size makes a CDN worth it on cost?
Roughly 200 KB at first-tier US rates. CloudFront saves about half a cent per GB and costs about $0.60 extra per million requests once caching is accounted for, so the two cancel at somewhere between 5,000 and 8,300 requests per gigabyte depending on your hit rate. Video, images, installers and large downloads are comfortably above that line; API responses and small assets are below it.
How much does CloudFront cost?
In the US and Canada, data transfer out is tiered from $0.085 per GB down to $0.02 above 5 PB, plus $0.01 per 10,000 HTTPS requests. The AWS free tier covers 1 TB of transfer and 10 million requests a month.
Does CloudFront charge for origin requests?
CloudFront does not charge for data transfer from an AWS origin. Your origin still charges its own request fee — every cache miss is an S3 GET at the normal rate — which is why a very low hit rate still costs something even though the transfer is free.
Does the CloudFront price class matter?
Considerably. CloudFront prices by the edge region serving the request, and South America, Asia Pacific and the Middle East cost materially more than the US and Europe. This calculator models US and Canada rates, so a globally distributed audience will pay more than shown unless the distribution is restricted to cheaper price classes.
What cache hit rate do I need for CloudFront to pay off?
Frequently none at all, for AWS origins, because of the free origin transfer and the cheaper egress rate. The hit rate matters for origin load and latency more than for the transfer bill. This calculator reports the break-even hit rate for your specific numbers, and often reports that there is not one.
The CDN decision is one line on a bill with thousands.
Finitizer finds the buckets serving public traffic without a distribution in front of them, attributes egress to the workload causing it, and tracks the price-class settings quietly costing you money in expensive regions.