Direct answer: for North America/Europe traffic, one site, excluding tax, origin egress and add-on modules, the CDN portion is roughly: 1TB/month + 10 million requests, Cloudflare Pro 20 (annual) or 25 (monthly), Bunny 10, Fastly 117; 10TB/month + 100 million requests, Cloudflare Pro 20, Bunny 100, Fastly 1,287; 20TB/month + 500 million requests, Cloudflare Pro 20 (Business 200 if you need the SLA), Bunny 200, Fastly 2,467. At 50TB/month Cloudflare is still 20/200 and Bunny 500, while Fastly’s public bandwidth table stops at 20TB and needs a quote. Bunny is cheapest at low-to-mid volume on a per-GB basis; Cloudflare’s flat plan wins at high volume; Fastly is regional bandwidth + per-request + modules, a fit for teams that need edge compute or commercial TLS, not the low-cost pure-CDN option.
This guide is for engineering, operations and procurement teams choosing a CDN, renewing a contract or moving from per-GB billing to a flat plan. Data cut-off: 5 November 2026; prices are the three vendors’ public US list prices in USD, excluding tax, with no FX conversion; the TCO is an editorial calculation, not a vendor quote. All three accelerate static and dynamic content, but the billing units differ: Cloudflare sells a plan, Bunny sells GB, Fastly sells GB + requests + modules. Comparing only “per GB” misses request fees, regional rates and plan boundaries.
Cloudflare is about the plan and feature boundary, Bunny about regional GB price, Fastly about three bills: GB + requests + modules. At 1TB/month Bunny 10 is cheapest; at 10TB/month Bunny 100 is still low but Cloudflare Pro 20 is lower; at 20TB/month Cloudflare Pro 20 is lowest and Fastly is 2,467. Request-heavy workloads must include Fastly’s per-10,000-request fee first.
Three pricing models: flat plan, per GB, GB + requests
Cloudflare is plan-based: Free, Pro, Business and Contract, with CDN included in every tier and bandwidth cost bundled into the plan; the page does not list a per-GB price. Pro is 20/month billed annually or 25/month billed monthly; Business is 200/month annually or 250/month monthly; Contract is custom and billed annually. Bunny is per GB: the standard network has 119 PoPs, with Europe/North America 0.01/GB, South America 0.045, Asia/Oceania 0.03 and Middle East/Africa 0.06; a 10-PoP Volume network is 0.005/GB for the first 500TB, 0.004 for 500TB–1PB, 0.002 for 1PB–2PB and sales-led above 2PB; the monthly minimum is 1 and there are no request fees. Fastly is per GB + requests: Full Site Delivery includes 100GB free per month, 0.08–0.28/GB by region from 100GB to 10TB, then a lower band for the next 10TB; requests include 1 million free per month, 0.01 per 10,000 from 1 million to 100 million, then 0.0095 per 10,000; TLS, image optimization, Compute and other modules are separate.
| Platform | Billing unit | Free/minimum | Regional granularity | Best fit | Main boundary |
|---|---|---|---|---|---|
| Cloudflare | Plan/month (bandwidth bundled) | Free 0; Pro from 20 | Global bundle, no regional surcharge | Predictable bill, WAF/rules/ecosystem | Plan feature boundary; high volume needs a contract |
| Bunny | GB/month | Monthly minimum 1 | Standard network by macro-region | Low-to-mid volume, price-first | Volume network has only 10 PoPs |
| Fastly | GB + requests + modules | 100GB + 1M requests | By region/country | Edge compute, commercial TLS, modularity | Request/regional fees stack; quote above 20TB |
Sources: Cloudflare Plans, Cloudflare CDN, Bunny Pricing and Fastly Pricing (all accessed 5 November 2026). This is editorial grouping, not a vendor taxonomy; “best fit” describes only billing and public capabilities, not real-world speed, coverage or reliability.
The official 2026 price list: plans, GB, requests
Cloudflare: Free 0; Pro 20/month annual or 25/month monthly; Business 200/month annual or 250/month monthly; Contract custom, billed annually. CDN is included in all four tiers and bandwidth is bundled; the page does not list a separate request fee. Bunny: Europe/North America 0.01/GB, South America 0.045, Asia/Oceania 0.03, Middle East/Africa 0.06; Volume 0.005/GB for the first 500TB, 0.004 for 500TB–1PB, 0.002 for 1PB–2PB and a quote above 2PB; monthly minimum 1; no request fees. Fastly: bandwidth North America/Europe 0.12/GB (100GB–10TB), then 0.08 for the next 10TB; Asia/Australia/South America/Saudi Arabia 0.19, then 0.14; India/Africa/South Korea 0.28, then 0.24; Mexico 0.16, then 0.12; requests 1 million free, 0.01 per 10,000 from 1 million to 100 million, then 0.0095 per 10,000; TLS 5 domains free, then 20/domain/month, commercial CA 275/domain/month.
| Item | Cloudflare | Bunny | Fastly |
|---|---|---|---|
| Entry price | Free 0; Pro 20/month annual (25 monthly) | From 0.01/GB; monthly minimum 1 | 100GB + 1M requests free |
| Main tier | Business 200/month annual (250 monthly) | Standard network 0.01–0.06/GB by region | Bandwidth and requests billed separately |
| Bandwidth (North America/Europe) | Bundled, not listed | 0.01/GB | 0.12/GB (first 10TB); 0.08 (next 10TB) |
| Bandwidth (Asia/South America) | Bundled, not listed | Asia/Oceania 0.03; South America 0.045 | Asia/South America 0.19/GB; then 0.14 |
| Bandwidth (Middle East/Africa) | Bundled, not listed | 0.06/GB | Africa 0.28/GB; Saudi Arabia 0.19/GB |
| Request fee | Not listed | No request fees | 0.01 per 10,000 after 1M; 0.0095 above 100M |
| Volume/contract | Contract custom | Volume 0.005/GB for the first 500TB | Contact sales above 20TB |
Sources: Cloudflare Plans (Free/Pro/Business/Contract and bundled bandwidth), Cloudflare CDN (bandwidth cost bundled), Bunny Pricing (regional rates, Volume tiers, monthly minimum 1, no request fees) and Fastly Pricing (Full Site Delivery 100GB free, regional bandwidth, request tiers, TLS). Accessed 5 November 2026; USD, excluding tax; “not listed” means no public unit price on the pricing page and is not guessed here.
1TB / 10TB / 20TB / 50TB: the CDN-portion TCO
Assuming 1TB = 1,000GB, North America/Europe traffic, one site and 30 days per month: 1TB + 10M requests, Cloudflare Pro 20, Bunny 10, Fastly 117; 10TB + 100M requests, Cloudflare Pro 20, Bunny 100, Fastly 1,287; 20TB + 500M requests, Cloudflare Pro 20 (Business 200), Bunny 200, Fastly 2,467; 50TB + 1B requests, Cloudflare Pro 20/Business 200, Bunny 500, while Fastly bandwidth needs a quote (requests about 954). The annual gap is larger: at 20TB, Cloudflare Pro 240, Bunny 2,400, Fastly 29,604.
| Monthly traffic / requests | Cloudflare Pro (annual) | Cloudflare Business (annual) | Bunny standard EU/NA | Fastly North America | Lowest |
|---|---|---|---|---|---|
| 1TB / 10M | 20 | 200 | 10 | 117 | Bunny |
| 10TB / 100M | 20 | 200 | 100 | 1,287 | Cloudflare Pro |
| 20TB / 500M | 20 | 200 | 200 | 2,467 | Cloudflare Pro |
| 50TB / 1B | 20 | 200 | 500 | Bandwidth quote (requests 954) | Cloudflare Pro |
| Annual (20TB) | 240 | 2,400 | 2,400 | 29,604 | Cloudflare Pro |
Editorial calculation, not a quote. Assumptions: 1TB = 1,000GB; North America/Europe traffic; one site; one Cloudflare zone; Fastly North America 0.12/GB (first 10TB), 0.08/GB (next 10TB), 100GB free, requests 1M free, 0.01 per 10,000, then 0.0095 above 100M; excludes tax, origin egress, WAF/image/edge compute/logs/support, extra TLS domains and migration. Cloudflare uses annual-billed monthly prices; monthly billing is Pro 25 and Business 250. 50TB is outside Fastly’s public 20TB table and cannot be compared on request fees alone.
The point is not “who is cheapest” but “which band you are in”. At 1TB/month Bunny 10 is lowest, Cloudflare Pro 20 is only 10 more, and Fastly 117 is bandwidth 108 + requests 9; at 10TB/month Bunny 100 and Cloudflare Pro 20 overtakes; at 20TB/month Cloudflare Pro 20 is one-tenth of Bunny 200 and Fastly 2,467 is 12 times Bunny. If you need Cloudflare Business’s 100% SLA, 200 ties Bunny at 20TB but is still far below Fastly. At 50TB/month only Cloudflare and Bunny have public prices; Fastly needs a quote.
Request fees: Fastly’s second bill
Fastly’s Full Site Delivery request fee: 1 million free per month; 0.01 per 10,000 from 1 million to 100 million; 0.0095 per 10,000 above 100 million. That works out to 9 at 10M, 99 at 100M, 479 at 500M and 954 at 1B. Cloudflare’s plan page does not list a separate request fee; Bunny explicitly has no request fees. The more requests and the smaller the objects, the larger Fastly’s request share: at 10TB/month and 100M requests, 99 is 8.3% of the 1,188 bandwidth; at 500M requests, 479 is 24% of the 1,988 bandwidth.
| Monthly requests | Fastly request fee | Cloudflare | Bunny | Typical workload |
|---|---|---|---|---|
| 1 million | 0 | Not listed | 0 | Low-traffic site |
| 10 million | 9 | Not listed | 0 | Images/static site |
| 100 million | 99 | Not listed | 0 | Mid-size site/API |
| 500 million | 479 | Not listed | 0 | Small objects/high-frequency API |
| 1 billion | 954 | Not listed | 0 | Request-heavy workload |
Sources: Fastly Pricing (Full Site Delivery: 1M requests free; 0.01 per 10,000 from 1M to 100M; 0.0095 per 10,000 above 100M), Bunny Pricing (No Request Fees) and Cloudflare Plans (no separate request fee listed). Accessed 5 November 2026; USD, excluding tax; request fees are editorial tier arithmetic and exclude bandwidth.
Request fees are a small-object trap: at the same 10TB/month, an average 1MB object implies about 10M requests, while a 10KB object implies about 1B requests, and Fastly’s request fee rises from 9 to 954. Thumbnails, JSON APIs, sliced JS/CSS and HLS segments all fall into the latter. Procurement should calculate “monthly requests × average object size” together, not just report a TB number.
Regional rates: the same TB is not the same price everywhere
Bunny standard network: Europe/North America 0.01/GB, South America 0.045, Asia/Oceania 0.03, Middle East/Africa 0.06. Fastly first 10TB: North America/Europe 0.12, Mexico 0.16, Asia/Australia/South America/Saudi Arabia 0.19, India/Africa/South Korea 0.28; the next 10TB falls to 0.08, 0.12, 0.14 and 0.24 respectively. Cloudflare’s plan has no regional surcharge and bundles bandwidth. If your users are mainly in Asia or Africa, the Bunny–Fastly gap can narrow or widen, so weight the real regional mix.
| Region | Bunny standard | Fastly first 10TB | Fastly next 10TB | Cloudflare |
|---|---|---|---|---|
| Europe/North America | 0.01/GB | 0.12/GB | 0.08/GB | Bundled, no regional surcharge |
| Asia/Oceania | 0.03/GB | 0.19/GB (Asia/Australia) | 0.14/GB | |
| South America | 0.045/GB | 0.19/GB | 0.14/GB | |
| Middle East/Africa | 0.06/GB | 0.19/GB (Saudi Arabia); 0.28/GB (Africa) | 0.14/GB; 0.24/GB (Africa) | |
| India/South Korea | Asia/Oceania 0.03/GB | 0.28/GB | 0.24/GB | Bundled |
Sources: Bunny Pricing (standard network regional rates), Fastly Pricing (Full Site Delivery regional bandwidth) and Cloudflare CDN (bandwidth cost bundled). Accessed 5 November 2026; USD, excluding tax; Bunny’s “Asia/Oceania” and Fastly’s “Asia/Australia/India/South Korea” are not the same geographic buckets; Bunny’s India/South Korea rate is an editorial mapping to the Asia/Oceania bucket, so confirm the bill, and confirm the billed region for cross-border traffic.
An editorial example: with 50% Europe/North America, 25% Asia, 15% South America and 10% Africa, Bunny’s standard weighted rate is about 0.02525/GB and Fastly’s first-10TB weighted rate is about 0.164/GB; at 10TB/month that is about 252.50 for Bunny and about 1,640 for Fastly bandwidth, plus requests. Cloudflare’s plan price is unchanged. This only shows why a global average rate misleads; it is not a performance judgment about any region.
Hidden costs: TLS, modules, origin, support
All three public prices exclude tax, origin egress, migration and support. Fastly’s TLS is a typical add-on: Managed TLS Non-Profit CA/BYOC includes 5 domains free, then 20/domain/month; Managed TLS Commercial CA is 275/domain/month; Mutual TLS includes 2 domains free, then a flat 500. Image Optimizer, Compute and AI Accelerator are separate products. Cloudflare’s Workers, Images and R2 are separate; Bunny’s Stream, Storage, Optimizer and Edge Scripting are separate. Outside the CDN bill, the biggest item is usually origin egress or object-storage egress.
| Item | Cloudflare | Bunny | Fastly |
|---|---|---|---|
| Free allowance | Free 0 | Monthly minimum 1 | 100GB + 1M requests |
| Request fee | Not listed | No request fees | 0.01 per 10,000 after 1M |
| TLS domains | Universal SSL included | Not listed | 5 free; then 20/domain/month; commercial CA 275/domain/month |
| Images/edge compute | Separate product | Separate product | Separate product |
| Origin egress | Excluded | Excluded | Excluded |
| Tax/support/migration | Excluded | Excluded | Excluded |
Sources: Cloudflare Plans/CDN (Universal SSL, bundled bandwidth), Bunny Pricing (monthly minimum 1, no request fees) and Fastly Pricing (TLS domains and commercial CA, Mutual TLS, image/Compute modules). Accessed 5 November 2026; USD, excluding tax; “not listed/separate product” means the amount must be confirmed on the product page or in the contract and is not guessed here.
Commercial TLS is the easiest Fastly line to miss: after 5 free domains it is 20/domain/month, or 240/domain/year; commercial CA is 275/domain/month, or 3,300/domain/year. Multi-brand, multi-region and multi-subdomain sites should list TLS domains separately. Cloudflare’s Universal SSL is in the plan, but advanced/custom certificate capabilities still depend on the tier; Bunny’s TLS fee is not listed, so ask during procurement.
Capability matrix: network, billing, SLA, modules
Cloudflare is strong on predictable plans, a 335+ city network, CDN in Free/Pro/Business and a 100% uptime SLA on Business/Contract; Bunny is strong on low GB rates, 119 standard PoPs, a 10-PoP Volume network and no request fees; Fastly is strong on regional/request granularity, edge compute/image/commercial TLS modules and enterprise contracts. For “stable bill + security/rules”: Cloudflare; for “lowest low-to-mid volume price”: Bunny; for “edge modules/commercial TLS/fine-grained usage”: Fastly.
| Capability | Cloudflare | Bunny | Fastly |
|---|---|---|---|
| Network scale | 335+ cities (CDN page) | 119 standard PoPs; 10 Volume PoPs | Global edge network (PoP count not listed) |
| Billing | Plan/month, bandwidth bundled | Per GB/region | Per GB/region + requests |
| Free allowance | Free 0 | Monthly minimum 1 | 100GB + 1M requests |
| Request fee | Not listed | None | From 0.01 per 10,000 |
| SLA | Business/Contract 100% | Not listed | Enterprise contract (no number listed) |
| Edge/image/security modules | Workers/Images/WAF etc. | Edge Scripting/Storage/Stream etc. | Compute/Image Optimizer/commercial TLS etc. |
| Best fit | Predictable bill + ecosystem | Low-to-mid volume, price-first | Modular/fine-grained/enterprise |
Sources: Cloudflare Plans, Cloudflare CDN, Bunny Pricing and Fastly Pricing (accessed 5 November 2026). This is an editorial comparison, not a full feature list; “not listed” means the pricing page has no explicit number/capability and sales/docs must confirm; actual speed, coverage, cache hit rate, DDoS scrubbing and support response were not tested.
Which option fits which scenario?
1TB/month: Bunny 10 is lowest; for WAF/rules/ecosystem choose Cloudflare Pro 20; choose Fastly 117 only for its edge modules. 10TB/month: Cloudflare Pro 20 is lowest, Bunny 100, Fastly 1,287. 20TB/month: Cloudflare Pro 20 is lowest; for the 100% SLA choose Business 200, which ties Bunny 200; Fastly 2,467. 50TB/month: Cloudflare 20/200, Bunny 500; Fastly needs a quote. Request-heavy/small-object workloads: favor Cloudflare/Bunny; commercial TLS/edge compute: Fastly’s module value may exceed the CDN difference.
- Up to 1TB/month, price-first: Bunny 10; Cloudflare Pro 20 is only 10 more but adds WAF/rules/ecosystem; Fastly 117 unless you need its modules.
- 10TB/month: Cloudflare Pro 20 lowest; Bunny 100; Fastly 1,287. Move to Business 200 if you need the SLA.
- 20TB/month: Cloudflare Pro 20; Business 200 ties Bunny 200; Fastly 2,467. First confirm whether the Cloudflare plan covers your WAF/logs/rules needs.
- 50TB/month and above: Cloudflare 20/200 is the most predictable; Bunny 500 is still low; Fastly needs a contract and cannot be extrapolated from the 20TB band.
- Request-heavy/small objects/API: Fastly’s request fee grows; Cloudflare/Bunny do not list or charge one, so they fit better.
- Commercial TLS/edge compute/image optimization: Fastly is modular; Cloudflare Workers/Images; Bunny Edge Scripting. Include module fees, not just CDN.
- 100% SLA: Cloudflare Business/Contract lists 100%; Pro has no SLA row; Bunny/Fastly need contract confirmation.
What should procurement and acceptance specify?
At least eight things: monthly traffic and regional mix, request count and average object size, cache hit/origin egress ratio, number of sites/zones, plan feature boundary (WAF/logs/rules/images/edge compute), TLS domain count, origin egress/storage egress, and contract minimum/overage/exit. Use a 2–4 week POC with real traffic and record hit rate, origin egress, P95 latency, error rate, request count and the bill, not just the per-GB price.
- Traffic basis: GB or GiB, whether egress/origin/edge are all billed; reconcile the bill with logs.
- Regional mix: user distribution, regional rates, whether free allowances are per region; avoid a global average.
- Requests: monthly requests, average object size, dynamic/API share; list Fastly’s request fee separately.
- Site count: confirm whether the plan is billed per account or per site/zone; multiply for multiple sites and check at checkout.
- Feature boundary: whether WAF, logs, rules, image optimization and edge compute are included or separate.
- TLS: domain count, commercial CA, Mutual TLS; Fastly is 20/domain/month after 5 free.
- Origin: origin egress, object-storage egress, database/API cost; the CDN covers only the edge.
- Contract and POC: minimum, tiers, overage, SLA, support, exit; 2–4 weeks of real traffic.
FAQ
1TB/month: what is cheapest?
For North America/Europe and 10M requests: Bunny 10, Cloudflare Pro 20 (annual), Fastly 117 (bandwidth 108 + requests 9). Price-first: Bunny; WAF/rules/ecosystem: Cloudflare Pro; Fastly only when you need its edge modules/commercial TLS.
What about 10TB/month?
Cloudflare Pro 20 is lowest, Bunny 100, Fastly 1,287 (bandwidth 1,188 + requests 99). For the 100% SLA use Cloudflare Business 200; Bunny is still an order of magnitude below Fastly.
What about 20TB/month?
Cloudflare Pro 20 is lowest; Business 200 ties Bunny 200; Fastly is 2,467 (bandwidth 1,988 + requests 479). If Cloudflare’s plan features are insufficient, compare Business with Bunny on features and contract terms.
What about 50TB/month?
Cloudflare Pro 20/Business 200 and Bunny 500 have public prices; Fastly’s public bandwidth table stops at 20TB, so 50TB needs a quote. Do not extrapolate the 20TB 0.08/GB rate to 50TB.
Why is Fastly so much more expensive than Bunny?
Different billing models: Fastly is regional GB + requests + modules; Bunny is per GB with no request fees. At 20TB/month and 500M requests, Fastly is 1,988 bandwidth + 479 requests = 2,467; Bunny is 200. Fastly’s value is edge compute, commercial TLS, fine-grained usage and enterprise contracts, not the lowest pure-CDN price.
Does Cloudflare really not charge by traffic?
The official CDN page says bandwidth cost is bundled and included in the plan, and the Plans page has no per-GB price for Free/Pro/Business; this article therefore models Cloudflare as a plan price and does not call it “unlimited”. Plans still have feature/usage boundaries, and high volume or unusual use needs contract confirmation.
How are Fastly request fees calculated?
1 million requests free per month; 0.01 per 10,000 from 1 million to 100 million; 0.0095 per 10,000 above 100 million. That is 9 at 10M, 99 at 100M, 479 at 500M and 954 at 1B. Small objects/APIs need request count and average object size together.
What other hidden costs exist?
Fastly’s extra TLS domains (20/domain/month, commercial CA 275/domain/month) and image/Compute modules; Cloudflare’s Workers/Images and other products; Bunny’s Stream/Storage/Optimizer; all three exclude origin egress/object-storage egress, tax, support and migration. The CDN bill is not the total cost.
Research method and limitations
This article separates “official facts” from “editorial modelling”: plan prices, GB rates, request tiers, regional rates and TLS prices come from the three official pricing pages; the 1/10/20/50TB TCO is arithmetic under 1TB = 1,000GB, North America/Europe, one site and the stated request counts, not a vendor quote. It does not compare actual speed, coverage, cache hit rate, DDoS scrubbing, logging or support response.
Eight limitations: (1) only US public list prices are used, excluding tax, origin egress, object-storage egress, support, migration and add-on modules; (2) it assumes one site/one Cloudflare zone, while multiple sites/zones stack and checkout governs; (3) traffic is 1TB = 1,000GB and North America/Europe, while a global mix needs regional weighting; (4) requests are assumed at 10M/100M/500M/1B, while real requests depend on object size and cache hit rate; (5) Fastly’s public bandwidth table stops at 20TB, so 50TB is a quote and cannot be extrapolated; (6) Cloudflare’s plan feature/usage boundaries were not tested item by item and high volume/unusual use needs contract confirmation; (7) Bunny’s Volume network has only 10 PoPs and is not the same network as the 119-PoP standard network; (8) real performance, availability, SLA credits and compliance were not tested. Treat this as a unit-alignment template and replace assumptions with a 2–4 week real-traffic POC.
Sources and basis
- Cloudflare, Plans: cloudflare.com/plans. Free 0; Pro 20/month annual or 25/month monthly; Business 200/month annual or 250/month monthly; Contract custom, billed annually; CDN in all four tiers; Business/Contract 100% uptime SLA. Accessed 5 November 2026.
- Cloudflare, CDN: cloudflare.com/application-services/products/cdn. 335+ cities; bandwidth cost bundled and included in the plan. Accessed 5 November 2026.
- Bunny, Pricing: bunny.net/pricing. Standard network 119 PoPs: Europe/North America 0.01/GB, South America 0.045, Asia/Oceania 0.03, Middle East/Africa 0.06; Volume network 10 PoPs: 0.005/GB for the first 500TB, 0.004 for 500TB–1PB, 0.002 for 1PB–2PB, sales-led above 2PB; monthly minimum 1; no request fees. Accessed 5 November 2026.
- Fastly, Pricing: fastly.com/pricing. Full Site Delivery: 100GB free; North America/Europe 0.12/GB (100GB–10TB), 0.08 (next 10TB); Asia/Australia/South America/Saudi Arabia 0.19, 0.14; India/Africa/South Korea 0.28, 0.24; Mexico 0.16, 0.12; requests 1M free, 0.01 per 10,000, 0.0095 per 10,000; TLS 5 domains free, then 20/domain/month, commercial CA 275/domain/month. Accessed 5 November 2026.
Data cut-off 5 November 2026; prices are public list prices excluding tax; all models are editorial calculations. This is not procurement advice.