Static Site Bandwidth Pricing: Netlify, Vercel, Cloudflare
Static hosting is often described as free, and for a small site it is. As traffic grows, the pricing models of the three most common hosts diverge sharply: Netlify and Vercel include a bandwidth allowance with each plan and bill per gigabyte or per unit beyond it, while Cloudflare does not bill for static asset bandwidth at all. A site that costs nothing at 100,000 page views a month can cost hundreds a month at ten million on one host and still nothing on another — and teams are surprised by the invoice after a launch or a mention on a popular forum.
This guide models monthly cost for one documentation site at four traffic levels on Netlify, Vercel and Cloudflare, using measured bytes per page view, and shows how far optimisation moves the numbers. Prices change; the model uses each provider's published pricing at the time of writing and is meant to show the shape of the costs, so check current pages before deciding. It belongs to Netlify vs Vercel Deployment Strategies.
The Site and Its Traffic
- Content: 1,800-page documentation site, Astro, images optimised at build time.
- Measured bytes per page view (weighted mix of first and repeat views, from CDN logs): 610 KB before the optimisations below, 240 KB after.
- Builds: 40 a month on the main branch plus about 120 preview builds, 3 minutes each.
- Team: 4 people who need deploy access.
Monthly transfer at each traffic level:
| Page views / month | Transfer at 610 KB/view | Transfer at 240 KB/view |
|---|---|---|
| 100,000 | 61 GB | 24 GB |
| 1 million | 610 GB | 240 GB |
| 5 million | 3.05 TB | 1.2 TB |
| 20 million | 12.2 TB | 4.8 TB |
How Each Host Charges
Modelled Monthly Cost
The cheapest plan that meets the team's needs (4 members, commercial use) on each host, with usage beyond allowances at published overage rates:
| Page views / month (610 KB/view) | Netlify | Vercel | Cloudflare |
|---|---|---|---|
| 100,000 | $76 | $80 | $5 |
| 1 million | $76 | $80 | $5 |
| 5 million | ~$270 | ~$380 | $5 |
| 20 million | ~$1,350 | ~$1,700 | $5 |
At low traffic, the team plan's per-seat price dominates Netlify and Vercel costs; at high traffic, bandwidth overage does. Cloudflare's $5 is the paid Workers plan, which the site uses for a small function; static asset requests and bandwidth are not billed. The higher tiers also bring requirements such as enterprise agreements on all three that this model does not try to capture.
Reducing Bytes per Page View
Halving bytes per view halves bandwidth bills on metered hosts and is worth doing for readers anyway. The site went from 610 KB to 240 KB per view with four changes, each measured from CDN logs over a week:
| Change | Bytes per view | Saving |
|---|---|---|
| Baseline | 610 KB | — |
| AVIF with WebP fallback for all content images | 430 KB | −30% |
immutable caching on hashed assets (fewer repeat downloads) | 330 KB | −23% |
| Lazy-loading below-the-fold images | 280 KB | −15% |
| Self-hosting fonts, subset to Latin | 240 KB | −14% |
The caching change matters more than it looks: before it, returning readers revalidated or re-downloaded CSS and JavaScript every visit. Proper Cache Headers on Netlify for SSGs and Cache-Control Headers on Vercel for Static Sites cover the header setup per host.
With 240 KB per view, the 5-million-view month on Netlify fell from about $270 to about $95, and on Vercel from about $380 to about $140.
Build Minutes
At 160 builds a month of 3 minutes each, the site used 480 build minutes, within every paid plan's allowance. A team deploying previews for every push to every pull request with 8-minute builds can exceed allowances quickly. Two levers: skip builds when only non-site files change (Netlify's ignore command, Vercel's "Ignored Build Step", or path filters in GitHub Actions), and build in your own CI and deploy the output with the host's CLI, as in Deploying to Cloudflare From GitHub Actions With Wrangler, which moves build minutes to a CI system you may already pay for.
Spike Protection
The risk is not the average month but the spike: a launch, a mention on a large news aggregator, a scraper. All three hosts let you see usage; Netlify and Vercel let you set spending limits or alerts on some plans. For metered hosts, a usage alert at 50% and 80% of the plan's allowance, and a documented decision on what happens at the limit — pay the overage, or degrade — avoids the surprise invoice. A scraper that downloaded the whole site's images hourly for three days once added 1.1 TB to this site's monthly transfer; blocking it at the edge took ten minutes once someone noticed.
What the Model Leaves Out
Bandwidth and seats are the largest line items for a static site, but not the only ones. Serverless functions — form handlers, a newsletter endpoint, an API proxy — are billed by invocations and duration on all three hosts, and a busy form can cost more than the static hosting. Image transformation services, analytics add-ons, password-protected previews and log retention are separately priced features on some plans. And at the top of the range, all three offer enterprise agreements whose pricing is negotiated rather than published, which this model does not attempt to estimate.
There are non-price factors too. A team that relies on a host's deploy previews with inline comments, its form handling, or its framework-specific optimisations would need to replace those when moving, which is real work. The model is most useful for the decision it was built for: whether this site's expected growth makes metered bandwidth a cost worth planning for. For this site, at 5 million monthly page views after optimisation, the difference was about $90 to $135 a month on the metered hosts — enough to note in the budget, not enough to justify a migration on cost alone.
Measuring Your Own Bytes per View
The model depends on one number, and it is easy to get wrong by estimating from a single page in DevTools. CDN logs give the real figure: total bytes served divided by HTML page views (requests for HTML documents with status 200) over a week. That figure includes repeat visits with cached assets, bots that download pages without images, and readers who view many pages per session — all of which a DevTools measurement of one cold page view misses. On this site the DevTools estimate was 1.1 MB per page, almost twice the measured 610 KB.
Verdict
- Cloudflare for static sites whose traffic is high or unpredictable: static bandwidth is not metered, and team seats are not priced.
- Netlify or Vercel when their workflow features — build plugins, forms, analytics, preview collaboration, framework integrations — are worth the price for the team, especially at moderate traffic where the seat price dominates.
- On any metered host, cutting bytes per view is the most effective cost control; on this site it cut bandwidth by 61%.
Pitfalls
- Modelling on page views alone. Measure bytes per view from logs; images and repeat visits dominate.
- Ignoring seat pricing. At low traffic it is the main cost.
- No usage alerts. Spikes arrive without warning.
- Assuming free plans allow commercial use. Read the terms.
Conclusion
For this 1,800-page site, the three hosts cost about the same at low traffic, where per-seat pricing dominates, and diverged sharply at scale: at 20 million page views a month the model puts Netlify and Vercel well above a thousand dollars and Cloudflare at its flat plan price. Whatever the host, reducing bytes per page view from 610 KB to 240 KB cut metered bandwidth by 61% and made pages faster.
FAQ
Which host is cheapest for a high-traffic static site?
In the model in this guide, Cloudflare Workers Static Assets and Pages were cheapest at every traffic level, because static asset requests and bandwidth are not billed on its plans. Netlify and Vercel include a bandwidth allowance with each plan and charge for usage beyond it, so their cost rises with traffic. Check current price pages, as allowances and overage rates change.
How much bandwidth does a static site use per page view?
It depends mostly on images and repeat visits. The documentation site modelled here averaged 610 kilobytes per page view across first and repeat views before optimisation and 240 kilobytes after. Multiply by monthly page views to estimate monthly transfer.
Do build minutes matter as much as bandwidth?
For most static sites, bandwidth dominates at high traffic and build minutes at high deploy frequency. A docs site deploying 30 times a day with 4-minute builds uses 3,600 build minutes a month, which exceeds several plans' allowances. Faster builds and skipping builds for unchanged content reduce this.
Is free hosting reliable enough for production?
The free and entry plans of these hosts serve from the same networks as paid plans. What differs is support, team features, usage limits and terms. Read the fair-use terms, which on some free plans restrict commercial use or set soft caps, and decide based on what happens when a limit is reached.
Related
- Parent: Netlify vs Vercel Deployment Strategies — choosing between the platforms.
- Total Cost of Ownership for Static Site Generators — costs beyond hosting.
- Cloudflare vs CloudFront Cache Hit Ratios for Static Sites — another hosting cost comparison.
- Serving AVIF With Fallbacks on Static Sites — the largest byte saving.
- Fixing Netlify Builds That Exceed the Time Limit — build minutes in practice.
Filed underComparisonsNetlifyVercelCloudflare