Verdict up front: If you ship Next.js and you're under 100GB/month bandwidth, Vercel's DX is worth €20/month. If you ship anything else, or if your bandwidth is over 1TB/month, Cloudflare Pages saves you 70-95% with marginal DX cost. We host techconcepts.org on Cloudflare Pages — €0/month for ~250GB bandwidth.
The pricing math at different scales
For a 5GB Next.js app serving 500GB bandwidth/month with 1M function invocations:
- Vercel Hobby (free): blocked at 100GB bandwidth, would force upgrade to Pro
- Vercel Pro: €20/month (1TB included), this stays free
- Cloudflare Pages: €0 + €5/month Workers Paid (10M requests included) = €5/month
For the same site at 5TB bandwidth + 5M function invocations:
- Vercel Pro: €20 base + €40/100GB × 40 = €1,620/month
- Cloudflare Pages + Workers Paid: €5/month (bandwidth unmetered, requests within 10M tier)
The €1,615/month difference is real. We've audited three startups in 2025-2026 whose Vercel bill was over €1,500/month and migrated all of them to Cloudflare Pages. None lost meaningful functionality.
Edge function cold starts
Both platforms run V8 isolates instead of containers, so cold starts are measured in milliseconds, not seconds. Real benchmarks:
- Cloudflare Workers: <5ms cold start, 0ms warm
- Vercel Edge Functions: <50ms cold start, 0ms warm
- Vercel Serverless Functions (Node): 200-800ms cold start (Lambda underneath)
Cloudflare wins on raw cold-start latency. The gap matters most for low-traffic regions where functions go cold frequently — a function deployed worldwide that gets one request per hour from APAC will be cold every time on Vercel Serverless. On Cloudflare Workers it's still <5ms.
Image optimisation
Vercel's image optimisation is built into Next.js — drop in <Image> and you get on-demand resizing, AVIF, lazy loading. Cloudflare Pages doesn't auto-optimise images, but Cloudflare Images (a separate product) does — €5/month for 100k stored + 100k delivery, then €1 per additional 100k.
For a site with 500 product images and 5M views/month, Vercel includes image optimisation in Pro (1TB bandwidth applies to optimised outputs). Cloudflare Images would cost about €55/month for the same workload. Net: Vercel wins on image-heavy sites.
Analytics
Vercel Analytics: built-in real user monitoring, €10/month for 25k events. Reasonable.
Cloudflare Web Analytics: free, unlimited events. Less granular per-page breakdown but enough for 90% of teams. We use it on techconcepts.org and it's adequate.
Build limits
- Vercel Hobby: 6,000 build-minutes/month
- Vercel Pro: 24,000 build-minutes/month, €40/1000 minutes over
- Cloudflare Pages: 500 builds/month (count, not minutes), no per-minute cap
Cloudflare's "500 builds" sounds restrictive but is actually generous — that's ~17 deploys/day, which most teams don't approach. The flat-count model means a 30-minute build doesn't penalise you. Vercel's per-minute model penalises slow builds (Next.js builds with 50+ pages routinely hit 5-10 minutes).
Side-by-side
| Feature | Vercel | Cloudflare Pages |
|---|---|---|
| Free tier bandwidth | 100GB | Unmetered |
| Pro tier base price | €20/month | €0 (+ €5 Workers Paid) |
| Bandwidth overage | €40/100GB | None |
| Edge function cold start | <50ms | <5ms |
| Serverless function cold start | 200-800ms | N/A (no node runtime) |
| Next.js support | First-party | Via OpenNext (community) |
| Image optimisation | Built-in (Pro) | Separate product (€5/month) |
| Analytics | €10/month | Free, unlimited |
| Build minutes | 24k (Pro), then €40/1k | 500 builds/month, no minute cap |
| Custom domains | 50 (Hobby), unlimited (Pro) | 100 |
| Preview deployments | Yes (per PR) | Yes (per branch) |
| KV / Object storage | Vercel KV (Redis), Blob | Workers KV, R2 (S3-compat) |
| R2 / Blob pricing | €0.15/GB stored, egress charged | €0.015/GB stored, zero egress |
| DDoS protection | Included | Included (industry-leading) |
| Workers runtime | Node + Edge runtime | V8 isolates only |
When to choose Vercel
- You ship Next.js and use App Router with all the bells (ISR, PPR, Server Components)
- You are under 100GB/month bandwidth
- Image optimisation is critical (e-commerce, photography sites)
- You want first-party support contracts (Enterprise)
- Your team values DX polish over cost
When to choose Cloudflare Pages
- You ship anything other than Next.js (Astro, SvelteKit, Hugo, Eleventy, plain HTML)
- You are over 500GB/month bandwidth
- You need R2 storage with zero egress fees (replace AWS S3)
- You want to keep your stack on one cloud (DNS + CDN + Pages + Workers + R2)
- Cost matters more than incremental DX
Migration: what to expect
Most migrations Vercel → Cloudflare Pages take 1-3 days for a standard Next.js or static site. The friction points:
- ISR with on-demand revalidation needs to be reimplemented with Workers KV
- Vercel Cron Jobs (if used) need to become Cloudflare Cron Triggers
- Environment variables move 1:1, no friction
- Custom domains need a DNS update — plan for 1-2 hour propagation
Moving between Vercel and Cloudflare Pages?
We've migrated 20+ Next.js sites between Vercel and Cloudflare Pages. We know which features won't survive the move and how to handle them.
Book a discovery call