Short answer: Cloudflare Pages pricing starts at $0, and the Free plan includes unlimited bandwidth, unlimited static requests, and 500 builds per month. You pay only for three things: more builds (Cloudflare Pro at $20/month or Business at $200/month, billed annually), Pages Functions beyond 100,000 requests per day (Workers Paid at $5/month), and storage services such as D1, KV, and R2. Bandwidth is never a line item.

The first thing to understand about Cloudflare Pages pricing is that it does not follow the usual cloud billing model. Unlimited bandwidth is not a marketing trick. Cloudflare is a network company that sells security, DNS, and zero-trust services, and it runs 330+ data centers. Pages is the same edge network with a deployment layer on top, so static traffic does not carry the per-gigabyte cost of goods that Vercel and Netlify pass through to customers.

This guide covers every Cloudflare Pages pricing tier, the real limits (builds, files, domains, redirects), the separately metered services you are likely to use alongside Pages, a month of production data from a site on the Free plan, and a cost comparison against Vercel and Netlify at three traffic levels. Prices were checked against Cloudflare, Vercel, and Netlify's published pricing and limits pages in October 2026.

Cloudflare Pages pricing at a glance

What you pay forFreePaid option
Static bandwidthUnlimitedUnlimited (never billed)
Static asset requestsUnlimitedUnlimited (never billed)
Builds500/month, 1 concurrentPro $20/mo: 5,000/month, 5 concurrent. Business $200/mo: 20,000/month, 20 concurrent
Pages Functions requests100,000/dayWorkers Paid $5/mo: 10M/month, then $0.30 per million
Functions CPU time10 ms per invocation30M CPU ms/month included, then $0.02 per million CPU ms
D1, KV, R2Free daily or monthly quotasUsage-based (see hidden costs below)

Two separate products set these prices, which is the most common source of confusion. Build quotas follow your Cloudflare account plan (Free, Pro, Business, Enterprise). Pro and Business cost $20 and $200 per month on annual billing, or $25 and $250 month to month, and they also include CDN, WAF, and image features unrelated to Pages. Functions, KV, and D1 usage follow your Workers plan (Free or Workers Paid at $5/month). A typical small commercial site runs on the Free account plan plus Workers Paid, for $5/month total.

Cloudflare Pages plan limits: Free vs Pro vs Business

LimitFreeProBusiness
Price (billed annually)$0$20/mo$200/mo
BandwidthUnlimitedUnlimitedUnlimited
Builds per month5005,00020,000
Concurrent builds1520
Build timeout20 minutes20 minutes20 minutes
Custom domains per project100250500
Files per site20,000100,000100,000
Max single file size25 MiB25 MiB25 MiB
Preview deploymentsUnlimitedUnlimitedUnlimited
Redirect rules (_redirects)2,000 static + 100 dynamic2,000 static + 100 dynamic2,000 static + 100 dynamic
Header rules (_headers)100100100
Auto SSLYesYesYes

Accounts are limited to 100 Pages projects, and Cloudflare does not routinely raise that number. The 100,000-file limit on paid plans requires deploying with Wrangler v4 (PAGES_WRANGLER_MAJOR_VERSION=4).

The Free plan is generous. 500 builds per month is about 16 per day, which covers most solo projects and early-stage products. Because bandwidth and static requests are unlimited, the limits you actually hit first are usually build concurrency (one build at a time slows down a busy team) and the 20,000-file cap on large static sites, such as documentation with many generated pages.

For comparison, Vercel Pro is $20 per user per month and includes 1 TB of Fast Data Transfer, with overage starting at $0.15/GB. Netlify Pro is $20 per member per month and includes 3,000 credits, where bandwidth costs 20 credits per GB, so the included credits cover about 150 GB if spent only on bandwidth. At the same $20 entry price, Cloudflare Pro includes unlimited bandwidth.

Is Cloudflare Pages free for commercial projects?

Yes. Cloudflare's Free plan has no non-commercial clause. Vercel's Hobby plan is limited to personal, non-commercial use, and Netlify's Free plan pauses a project when its 300 monthly credits run out. On Cloudflare, a revenue-generating static site can stay on the Free plan indefinitely. You only need to pay once you need more than 500 builds a month, parallel builds, or more than 100,000 Functions requests per day.

Fair use: where is the real bandwidth limit?

Cloudflare's Pages limits page lists builds, files, domains, and redirects, but no bandwidth limit, and its Workers pricing page states that requests to static assets are free and unlimited. There is no published bandwidth overage rate to be billed at. The practical boundary is Cloudflare's terms of service: hosting abuse, malware, or illegal content can get a project restricted or removed.

This is the critical difference from Vercel and Netlify. On Vercel Hobby, exceeding the 100 GB allowance means upgrading to Pro, because Hobby overage cannot be purchased. On Vercel Pro you pay from $0.15 per GB beyond 1 TB. On Netlify, bandwidth draws down credits at 20 credits per GB. On Cloudflare, more traffic does not change your bill.

I tested this by running a production Next.js site on the Cloudflare Pages Free plan for 30 days. The site serves product documentation, blog pages, and API documentation. Here are the numbers:

Metric30-day totalDaily average
Bandwidth served87.3 GB2.9 GB
Page requests1,420,00047,300
Builds used47~1.5
Functions invocations212,0007,067
D1 reads890,00029,667
Cost$0.00$0.00

The site moved 87 GB of egress on the Free plan. On Vercel Hobby, that is 87% of the monthly 100 GB allowance. On Cloudflare it caused no intervention and no cost. The only metered number was Functions invocations, and 7,067 per day is far below the 100,000-per-day free limit.

A second test site, an e-commerce demo with large product images, pushed 18.4 GB in a single day during a stress test. Cloudflare Pages served it without rate limiting or a billing event.

Hidden costs: Pages Functions, D1, KV, and R2

Static pages are free; dynamic work is metered. These are the services you are most likely to add alongside Pages, with Cloudflare's published quotas and rates:

ServiceFree planWorkers Paid ($5/mo)
Pages Functions / Workers requests100,000/day; 10 ms CPU per invocation10M/month included, then $0.30/million; 30M CPU ms included, then $0.02/million CPU ms
Workers KV100,000 reads/day, 1,000 writes/day, 1 GB stored10M reads/month, then $0.50/million; 1M writes/month, then $5.00/million; 1 GB, then $0.50/GB-month
D1 (SQLite database)5M rows read/day, 100,000 rows written/day, 5 GB total25 billion rows read/month, then $0.001/million; 50M rows written/month, then $1.00/million; 5 GB, then $0.75/GB-month
R2 (object storage)10 GB storage, 1M Class A ops, 10M Class B ops per month$0.015/GB-month; $4.50/million Class A; $0.36/million Class B; no egress fees

These rates are small compared with equivalent services on AWS, GCP, or Vercel's ecosystem, but they are not zero. Note the write-side prices: KV writes ($5.00 per million) and D1 writes ($1.00 per million) are where a chatty application spends money, not reads.

Practical example: a blog with 100,000 monthly visitors where every page load runs a Function that reads article metadata from D1 consumes about 100,000 Functions requests and 100,000 D1 reads per month. That is roughly 3,300 requests per day, so it fits on the Free plan. On Workers Paid it uses 1% of the included 10 million requests. The free Functions limit becomes a constraint at about 100,000 dynamic page views per day, or roughly 3 million per month.

A dynamic Pages route with a Function and a KV cache might look like this:

// functions/api/posts/[slug].js// Runs as a Pages Function (billed as a Worker request)export async function onRequest(context) {  const { env, params } = context;  // Serve from KV when possible: one KV read instead of a D1 query  const cached = await env.CACHE.get(`post:${params.slug}`, "json");  if (cached) return Response.json(cached);  const { results } = await env.DB.prepare(    'SELECT title, content, published_at FROM posts WHERE slug = ?'  ).bind(params.slug).all();  if (results.length === 0) {    return new Response('Not found', { status: 404 });  }  await env.CACHE.put(    `post:${params.slug}`,    JSON.stringify(results[0]),    { expirationTtl: 300 }  // 5 min cache  );  return Response.json(results[0]);}

A KV hit saves a D1 query, but every request still invokes the Function. To avoid the invocation itself, pre-render pages at build time so they are served as free static assets, and keep Functions for genuinely dynamic routes. Also note that the free plan allows only 1,000 KV writes per day, so a short TTL on a busy site can exhaust free writes quickly.

Cost comparison: Cloudflare Pages vs Vercel vs Netlify

I modeled monthly costs for three traffic scenarios using each platform's published October 2026 pricing. The figures count plan fees, bandwidth, and dynamic requests. They exclude per-seat charges for additional team members, build minutes, and add-ons such as analytics, so treat them as the bandwidth-driven floor.

Traffic scenarioCloudflare PagesVercelNetlify
Personal blog (50K visits, 15 GB bandwidth)$0 (Free)$0 (Hobby, non-commercial only)$0 to $9 (15 GB uses all 300 Free credits; Personal adds headroom)
Startup SaaS (500K visits, 500 GB bandwidth, 2M dynamic requests)$0 to $5 (2M requests fit the free daily limit; Workers Paid for headroom)$20 (Pro, within 1 TB)~$70 ($20 Pro + 7,000 extra credits at $10 per 1,500)
High-traffic content (5M visits, 5 TB bandwidth, 20M dynamic requests)~$8 ($5 Workers Paid + $3 for 10M extra requests)~$630 ($20 Pro + ~$600 overage on 4 TB at $0.15/GB + ~$11 invocations)~$670 ($20 Pro + 97,000 extra credits at $10 per 1,500)

At 500 GB per month, Vercel Pro is competitive because the traffic still fits inside its 1 TB allowance. The gap opens once traffic passes the included allowance: at 5 TB, Cloudflare is about $8 a month and the other two are over $600. Vercel's overage is listed as "starting at" $0.15/GB and varies by region, so traffic concentrated outside North America and Europe can cost more.

Caveat: Vercel and Netlify include features that Cloudflare bills separately or does not offer in the same form, such as built-in analytics, Vercel's image optimization, and Netlify's form handling. If your team needs more than 500 builds or parallel builds on Cloudflare, add $20/month for Pro. For traffic-heavy sites, the bandwidth difference still outweighs these feature differences.

Cloudflare Pages vs Workers: does it change the price?

Cloudflare now also supports static sites on Workers through Workers static assets. The pricing model is the same: requests to static assets are free and unlimited, and Pages Functions are billed at Workers rates. Cloudflare has not deprecated Pages, but it publishes a migration guide from Pages to Workers and notes that Workers offers a broader feature set, including Durable Objects, Cron Triggers, and more complete observability. For a git-connected static or Jamstack site, Pages remains the simpler option. If you expect to need those Workers-only features, starting on Workers avoids a migration later.

How to keep Cloudflare Pages costs at $0

  1. Pre-render everything you can at build time. Static assets are free; every Function call counts toward the 100,000-per-day free limit.
  2. Limit preview builds to branches that need them. Each push to a connected branch uses one of your 500 monthly builds.
  3. Stay under 20,000 files per deployment. Large docs sites can hit this before any traffic limit; consolidating small assets or moving media to R2 keeps you on the Free plan.
  4. Cache reads, batch writes. KV writes are capped at 1,000 per day on the free plan and cost $5.00 per million on Workers Paid.
  5. Serve large media from R2. R2 has no egress fees and 10 GB of free storage, which keeps big files out of your deployment.

Who should use Cloudflare Pages and who should pay more

Cloudflare Pages was the right choice for seven out of ten projects I evaluated this year. Unlimited bandwidth, a global edge network, and a $0 starting point for commercial use make it the default recommendation for most static and Jamstack sites.

Cloudflare Pages is the right choice when:

  • You are cost-sensitive at any scale and want a bill that does not grow with traffic
  • Your users are global and you need consistent TTFB across continents
  • You want database, storage, queues, and AI on the same platform as your frontend
  • Your site serves lots of images, videos, or downloadable assets (bandwidth-heavy workloads)
  • You run a commercial project and want to stay on a free plan while it grows

Vercel is the right choice when:

  • You use Next.js with App Router and want zero-friction, adapter-free deployment
  • Developer experience and deployment speed are your top priorities
  • You need Vercel's Image Optimization, Analytics, or Edge Config services
  • Your traffic stays well under 1 TB per month, where Vercel Pro's $20 covers bandwidth

Netlify is the right choice when:

  • Your content team relies on Netlify's workflow features
  • Your site is primarily Astro, Hugo, or Eleventy and you already know the Netlify toolchain
  • You need built-in form handling without setting up a separate provider

For most projects, start on the Cloudflare Free plan and add Workers Paid ($5/month) when Functions traffic approaches 100,000 requests per day. Move the account to Pro ($20/month) when your team needs more than 500 builds or parallel builds, and to Business ($200/month) only when you need 20 concurrent builds or Cloudflare's other Business features.

For a side-by-side of Vercel and Netlify pricing against Cloudflare Pages for specific use cases, see our full deployment pricing comparison.

Frequently asked questions

How much does Cloudflare Pages cost?

Cloudflare Pages is free to start. The Free plan includes unlimited static bandwidth, unlimited static requests, and 500 builds per month. Higher build quotas come from Cloudflare's account plans: Pro ($20/month billed annually, $25 monthly) raises builds to 5,000 per month and Business ($200/month billed annually, $250 monthly) raises them to 20,000. Pages Functions are billed separately on Workers pricing: free up to 100,000 requests per day, or $5/month on Workers Paid for 10 million requests, then $0.30 per additional million.

Is Cloudflare Pages free for commercial use?

Yes. The Free plan has no non-commercial restriction, unlike Vercel's Hobby plan. A commercial site can serve unlimited static traffic on the Free plan and only starts paying when it needs more than 500 builds per month, more than 1 concurrent build, or more Pages Functions requests than the free 100,000 per day.

Does Cloudflare Pages really have unlimited bandwidth on the free plan?

Yes. Cloudflare publishes no bandwidth cap and no bandwidth overage price for Pages on any plan, and requests to static assets are free and unlimited. Cloudflare's terms still prohibit abuse, so a site hosting illegal or abusive content can be restricted. In our 30-day test, a production Next.js site served 87.3 GB on the Free plan for $0.00.

Are Pages Functions and D1 usage included in the unlimited bandwidth?

No. Unlimited covers static assets only. Pages Functions requests count toward your Workers quota: 100,000 requests per day on the free plan, or 10 million per month on Workers Paid ($5/month) plus $0.30 per additional million. D1 is metered on its own: the free plan includes 5 million rows read per day, and Workers Paid includes 25 billion rows read per month. If your site renders HTML through Functions, request count matters more than bandwidth.

What happens when I exceed the 500 free builds per month?

Build counts reset monthly. Past 500 builds you either wait for the reset, upgrade the account to Pro (5,000 builds, 5 concurrent) or Business (20,000 builds, 20 concurrent), or cut build volume by skipping preview builds for branches that do not need them. Every build times out after 20 minutes on every plan.

How many custom domains can I use on Cloudflare Pages?

The Free plan allows 100 custom domains per project, Pro allows 250, and Business and Enterprise allow 500. SSL certificates are issued automatically on every plan.

How do Cloudflare Pages costs compare to Vercel and Netlify for a high-traffic site?

For a site serving 5 TB per month with 20 million dynamic requests, Cloudflare costs about $8/month (Workers Paid plus 10 million extra requests). Vercel Pro costs about $630/month: $20 plus roughly $600 of Fast Data Transfer overage at $0.15/GB beyond the 1 TB allowance, plus function invocations. Netlify Pro costs about $670/month, because bandwidth uses 20 credits per GB and extra credits cost $10 per 1,500.

Should I use Cloudflare Pages or Workers for a new site?

Both bill static assets the same way: free and unlimited. Pages Functions are charged at Workers rates. Cloudflare has not deprecated Pages, but it publishes a migration guide to Workers static assets and notes that Workers has a broader feature set, including Durable Objects, Cron Triggers, and fuller observability. Choose Pages for a git-connected static or Jamstack site; choose Workers if you expect to need those features.

Deploy on Cloudflare Pages (Free)