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 / monthTransfer at 610 KB/viewTransfer at 240 KB/view
100,00061 GB24 GB
1 million610 GB240 GB
5 million3.05 TB1.2 TB
20 million12.2 TB4.8 TB

How Each Host Charges

How Netlify, Vercel and Cloudflare charge for a static site A matrix of three hosts against four cost elements. Netlify includes bandwidth and build minutes per plan and charges for usage beyond them, with per-member pricing on paid team plans. Vercel includes data transfer, edge requests and build minutes per plan, charges for overage, and prices team seats. Cloudflare Workers Static Assets and Pages do not charge for static asset requests or bandwidth, limit builds by plan, and the paid Workers plan has a low fixed monthly fee. Three pricing models for static hosting Element Netlify Vercel Cloudflare Static bandwidth allowance, then billed allowance, then billed not billed Requests not separately edge requests billed static not billed Build minutes allowance per plan allowance per plan limits per plan Team seats per member per member unlimited members
Simplified from published pricing at the time of writing; check current pages, as allowances change.

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)NetlifyVercelCloudflare
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.

Monthly hosting cost at 610 kilobytes per page view for three hosts Paired bars in dollars. At 5 million page views, Netlify about 270, Vercel about 380, Cloudflare 5. At 20 million page views, Netlify about 1,350, Vercel about 1,700, Cloudflare 5. Modelled monthly cost at 5 and 20 million page views 5M views / month 20M views / month Netlify 270 $ 1350 $ Vercel 380 $ 1700 $ Cloudflare 5 $ 5 $
Modelled from published pricing at the time of writing for a 4-person team; treat as indicative.

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:

ChangeBytes per viewSaving
Baseline610 KB—
AVIF with WebP fallback for all content images430 KB−30%
immutable caching on hashed assets (fewer repeat downloads)330 KB−23%
Lazy-loading below-the-fold images280 KB−15%
Self-hosting fonts, subset to Latin240 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.

Average kilobytes transferred per page view after each optimisation Vertical bars. Baseline 610 kilobytes. After AVIF 430. After immutable caching 330. After lazy loading 280. After self-hosted subset fonts 240. Bytes per page view after each change 610 KB Baseline 430 KB AVIF 330 KB Immutable cache 280 KB Lazy images 240 KB Subset fonts
Weighted average of first and repeat views from one week of CDN logs after each change.

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.

Filed underComparisonsNetlifyVercelCloudflare