Vercel, Netlify, and Cloudflare Pages are the three dominant platforms for deploying frontend apps, Jamstack sites, and fullstack Next.js / Astro / SvelteKit projects. All three offer git-push deployments, preview URLs, and edge functions — but they differ sharply on pricing, performance, framework support, and vendor lock-in. This guide covers every meaningful dimension so you can pick without regret.
At a glance
| Vercel | Netlify | Cloudflare Pages | |
|---|---|---|---|
| Founded | 2015 | 2014 | 2021 |
| Free tier bandwidth | 100 GB/mo | 100 GB/mo | Unlimited |
| Free tier builds | 6,000 min/mo | 300 min/mo | 500 builds/mo |
| CDN locations | ~100 PoPs | ~100 PoPs | 300+ PoPs |
| Edge functions | Vercel Edge Functions | Netlify Edge Functions | Workers (same runtime) |
| Serverless functions | Vercel Functions (Node/Python/Ruby/Go/Edge) | Netlify Functions (Node/Go) | Cloudflare Workers |
| Next.js support | ⭐ First-party (built by Vercel) | Good (community adapter) | Good (OpenNext adapter) |
| Framework agnostic | Good | Excellent | Excellent |
| Analytics built-in | Yes (Vercel Analytics) | Yes (Netlify Analytics) | Yes (Web Analytics) |
| Forms | No | Yes (Netlify Forms) | No |
| CMS integrations | Many | Many | Many |
| Free custom domains | Yes | Yes | Yes |
Pricing breakdown
Free tiers (Hobby / Starter / Free)
| Feature | Vercel (Hobby) | Netlify (Starter) | Cloudflare Pages (Free) |
|---|---|---|---|
| Bandwidth | 100 GB/mo | 100 GB/mo | Unlimited |
| Build minutes | 6,000 min/mo | 300 min/mo | 500 builds/mo |
| Concurrent builds | 1 | 1 | 1 |
| Serverless executions | 100 GB-hrs | 125,000/mo | 100,000 req/day (Workers) |
| Team members | 1 (personal projects only) | 1 | Unlimited |
| Preview deployments | Yes | Yes | Yes |
| Custom domains | Unlimited | Unlimited | Unlimited |
| SSL | Yes | Yes | Yes |
| Password protection | No | No | No |
| Analytics | Limited | No | Yes (Web Analytics free) |
Key difference: Cloudflare Pages' free bandwidth is genuinely unlimited — Vercel and Netlify both cap at 100 GB and charge overage. For high-traffic sites, this is a major cost advantage.
Pro / paid tiers (per month)
| Feature | Vercel Pro ($20/user) | Netlify Pro ($19/user) | Cloudflare Pages (Free) |
|---|---|---|---|
| Bandwidth | 1 TB | 1 TB | Unlimited |
| Build minutes | 24,000 | 25,000 | 5,000 (Workers Paid $5/mo) |
| Concurrent builds | 10 | 3 | 5 |
| Preview deployments | Yes | Yes | Yes |
| Password protection | Yes | Yes | Yes (Access addon) |
| Analytics | Yes (Advanced) | Yes | Yes |
Cloudflare Pages is technically free forever — you pay only for Workers (compute), which starts at $5/month for 10M requests/day. For most projects, Cloudflare Pages stays free even at significant scale.
Performance comparison
CDN and edge network
| Vercel | Netlify | Cloudflare Pages | |
|---|---|---|---|
| PoP count | ~100 | ~100 | 300+ |
| Network owner | Third-party CDN | Akamai + own | Cloudflare (owns the pipes) |
| TTFB (global avg) | ~30-60ms | ~40-70ms | ~20-40ms |
| Cache headers | Auto + manual override | Auto + manual | Full control via Headers |
| HTTP/3 + QUIC | Yes | Yes | Yes |
| Brotli compression | Yes | Yes | Yes |
Cloudflare has the largest private network (300+ PoPs, including tier-2 cities) and typically wins on raw global latency. Vercel and Netlify rely on third-party CDNs for some regions. For truly global audiences (Southeast Asia, Africa, South America), Cloudflare Pages usually has lower TTFB.
Edge functions performance
Edge functions run at CDN nodes — closer to users than traditional serverless.
| Vercel Edge Functions | Netlify Edge Functions | Cloudflare Workers | |
|---|---|---|---|
| Runtime | V8 isolates | Deno | V8 isolates |
| Cold start | <1ms (no cold start) | <1ms | <1ms |
| Max execution time | 30s | 30s | 30s (50ms CPU) |
| Max memory | 128 MB | 512 MB | 128 MB |
| Node.js APIs | Subset (Web APIs only) | Subset + Node compat | Subset + Node compat |
| Max bundle size | 1 MB | 20 MB | 1 MB (compressed) |
| Locations | ~100 | ~100 | 300+ |
All three use V8-based edge runtimes (Deno for Netlify). Cloudflare Workers is the most mature — it's been in production the longest and has the widest feature set.
Framework support
Next.js
| Feature | Vercel | Netlify | Cloudflare Pages |
|---|---|---|---|
| ISR (Incremental Static Regen) | ✅ Native | ✅ (via adapter) | ✅ (via OpenNext) |
| App Router | ✅ Full | ✅ | ✅ |
| Server Actions | ✅ Full | ✅ | ✅ |
| Image Optimization | ✅ Native (next/image) |
✅ | ⚠️ Partial (via Workers) |
| Middleware | ✅ | ✅ | ✅ |
| Streaming SSR | ✅ | ✅ | ✅ |
Vercel built Next.js and deploys every new feature on day zero. Netlify and Cloudflare Pages both use community/official adapters and may lag 1-2 releases behind on bleeding-edge features.
Other frameworks
| Framework | Vercel | Netlify | Cloudflare Pages |
|---|---|---|---|
| Astro | ✅ | ✅ | ✅ |
| SvelteKit | ✅ | ✅ | ✅ (adapter-cloudflare) |
| Nuxt | ✅ | ✅ | ✅ |
| Remix | ✅ | ✅ | ✅ |
| Gatsby | ✅ | ✅ | ✅ |
| Hugo / Jekyll | ✅ | ✅ | ✅ |
| Create React App | ✅ | ✅ | ✅ |
| Vite | ✅ | ✅ | ✅ |
| Angular | ✅ | ✅ | ✅ |
All three are framework-agnostic for static output. Serverless/edge features depend on the framework adapter.
Build system
| Feature | Vercel | Netlify | Cloudflare Pages |
|---|---|---|---|
| Auto-detect framework | Yes | Yes | Yes |
| Build cache | Yes (aggressive) | Yes | Yes |
| Monorepo support | Yes (turborepo native) | Yes | Yes |
| Environment variables | Yes | Yes | Yes |
| Secrets | Encrypted | Encrypted | Workers Secrets |
| Deploy previews | Every PR | Every PR | Every PR |
| Branch deploys | Yes | Yes | Yes |
| Rollback | Yes (instant) | Yes | Yes |
| Build plugins | Limited | Yes (rich ecosystem) | No |
Netlify has the most mature build plugin ecosystem — things like lighthouse CI, sitemap generation, and image optimization plugins. Vercel has deep Turborepo integration for monorepos. Cloudflare Pages has the simplest build system (intentionally minimal).
Serverless functions
| Feature | Vercel Functions | Netlify Functions | Cloudflare Workers |
|---|---|---|---|
| Runtimes | Node.js, Python, Ruby, Go, Edge | Node.js, Go, Edge | JavaScript/TypeScript (V8) |
| Max execution time | 10s (Hobby), 300s (Pro) | 10s (Starter), 26s (Pro) | 30s wall, 50ms CPU |
| Max memory | 1 GB | 1 GB | 128 MB |
| Free invocations | 100 GB-hrs | 125,000/mo | 100,000/day |
| Cold starts | ~250ms | ~250ms | <1ms |
| File system access | No (read /tmp) | No | No |
| Durable Objects / KV | No | No | Yes (KV, R2, D1, Durable Objects) |
| Background tasks | Vercel Cron | Netlify Scheduled Functions | Workers Cron |
Cloudflare Workers has no cold starts — V8 isolates boot in microseconds. The tradeoff is a smaller memory limit and CPU time limit (50ms per request, not wall time). Vercel Functions have the most runtime flexibility (Python, Ruby, Go alongside Node).
Storage and databases
| Service | Vercel | Netlify | Cloudflare |
|---|---|---|---|
| Key-value store | Vercel KV (Upstash Redis) | Netlify Blobs | Workers KV |
| Object storage | Vercel Blob | Large Media (Git LFS) | R2 (S3-compatible, no egress fee) |
| SQL database | Vercel Postgres (Neon) | No native | D1 (SQLite at edge) |
| Edge caching | Yes | Yes | Yes |
Cloudflare's storage ecosystem (KV + R2 + D1 + Durable Objects) is the most comprehensive. R2 is particularly compelling — S3-compatible object storage with no egress fees, which can save significantly at scale. Vercel's integrations (KV via Upstash, Postgres via Neon) are convenient but carry the underlying service's costs.
Developer experience
Git integration
All three support GitHub, GitLab, and Bitbucket. Deployment on push to any branch, preview URLs on PRs, and comment bots posting preview links — standard across all three.
CLI
# Vercel
npx vercel --prod
vercel env pull .env.local
# Netlify
netlify deploy --prod
netlify env:list
# Cloudflare Pages
npx wrangler pages deploy ./dist
wrangler secret put MY_SECRET
Local development
| Vercel | Netlify | Cloudflare | |
|---|---|---|---|
| Local dev server | vercel dev |
netlify dev |
wrangler dev |
| Local edge functions | Yes | Yes | Yes |
| Live reload | Yes | Yes | Yes |
| Simulates production? | Close | Close | Very close (same V8 runtime) |
Analytics and observability
| Feature | Vercel Analytics | Netlify Analytics | Cloudflare Web Analytics |
|---|---|---|---|
| Privacy-friendly | Yes (no cookies) | No (server-side logs) | Yes (no cookies, no fingerprinting) |
| Real User Monitoring | Yes | No | Yes |
| Core Web Vitals | Yes | No | Yes |
| Free tier | Limited (Hobby) | $9/site/mo | Free |
| Data retention | 30 days | 30 days | 6 months |
| Pageview accuracy | High (no ad blockers) | High | High |
Cloudflare Web Analytics is free, privacy-first, and includes Core Web Vitals — a strong alternative to Google Analytics without the GDPR headaches.
Unique features
Vercel only
- Next.js ISR — native, most reliable implementation
- Fluid compute — scales serverless functions to handle traffic bursts without cold starts on Pro
- Vercel AI SDK — first-party SDK for streaming AI responses in Next.js
- Turborepo — native monorepo caching (Vercel acquired Turborepo)
- Speed Insights — built-in Core Web Vitals monitoring per deployment
Netlify only
- Netlify Forms — handle form submissions without a backend (free tier: 100 submissions/mo)
- Split testing — A/B test between branches natively
- Build plugins — 100+ community plugins (lighthouse, sitemap, etc.)
- Netlify CMS / Decap CMS — open-source Git-based CMS, originated here
- Identity — built-in JWT authentication service
Cloudflare Pages only
- Unlimited bandwidth — genuinely free, forever
- Workers ecosystem — KV, R2, D1, Durable Objects, Queues, AI (Workers AI with GPU access)
- Zero Trust / Access — fine-grained auth on preview/production URLs
- DDoS protection — enterprise-grade, included in free tier
- Email routing — free email forwarding for custom domains
- Turnstile — CAPTCHA alternative (free, privacy-friendly)
When to choose each
Choose Vercel if:
- You're building with Next.js and want first-party support (ISR, App Router, Server Actions all work best on Vercel)
- You need Python, Ruby, or Go serverless functions
- Your team uses Turborepo for monorepos
- You want the best Next.js DX with no adapter friction
- You're building AI-powered apps and want to use the Vercel AI SDK
Choose Netlify if:
- You need built-in forms without a backend
- You want A/B split testing on branches
- Your team relies on build plugins (lighthouse CI, image optimization, etc.)
- You're using Netlify CMS / Decap CMS
- You want the richest plugin ecosystem and most battle-tested Jamstack workflow
Choose Cloudflare Pages if:
- You have high bandwidth or expect traffic spikes — unlimited bandwidth is a genuine advantage
- You want the fastest global edge with 300+ PoPs
- You plan to use Workers, KV, R2, or D1 — Cloudflare's storage ecosystem is excellent
- You need enterprise DDoS protection without paying enterprise prices
- You want free analytics that are privacy-compliant out of the box
- You're on a budget — the free tier is the most generous
Migration considerations
From Netlify to Vercel
- Redirect rules (
netlify.toml→vercel.jsonrewrites/redirects) - Netlify Forms → need to replace (use a form service like Formspree, Resend, or your own API)
- Build plugins → check if Next.js handles the feature natively or build a script
From Vercel to Cloudflare Pages
- Next.js → use OpenNext or the official Cloudflare Next.js adapter
vercel.json→_headers,_redirectsfiles orwrangler.toml- Vercel Edge Functions → Cloudflare Workers (V8 runtime, similar APIs)
From Netlify to Cloudflare Pages
netlify.tomlbuild settings →wrangler.tomlor UI config- Netlify Functions → Cloudflare Workers (rewrite; different API surface)
- Netlify Forms → replace with a form service
Full comparison table
| Dimension | Vercel | Netlify | Cloudflare Pages |
|---|---|---|---|
| Free bandwidth | 100 GB/mo | 100 GB/mo | Unlimited |
| Free builds | 6,000 min/mo | 300 min/mo | 500 builds/mo |
| PoP count | ~100 | ~100 | 300+ |
| Edge function cold start | <1ms | <1ms | <1ms |
| Next.js support | ⭐ Best | Good | Good |
| Framework agnosticism | Good | Best | Best |
| Storage ecosystem | Good (via integrations) | Limited | Best (KV/R2/D1/DO) |
| Built-in forms | No | Yes | No |
| A/B testing | No | Yes | No |
| DDoS protection | Basic | Basic | Enterprise-grade |
| Analytics (free) | Limited | No | Yes |
| Python/Ruby functions | Yes (Vercel) | No | No |
| No-cold-start compute | Fluid (Pro) | No | Yes (Workers) |
| Pricing at scale | Expensive | Expensive | Cheapest |
| Vendor lock-in risk | Medium (Next.js tight) | Low | Low |
| Best for | Next.js / React | Jamstack / forms | High traffic / edge |
Common mistakes
| Mistake | Why it hurts | Fix |
|---|---|---|
| Using Vercel for non-Next.js and paying Pro | Paying for features you don't need | Cloudflare Pages or Netlify are cheaper for static sites |
| Exceeding Vercel/Netlify bandwidth on free tier | Surprise bills | Move high-traffic static assets to Cloudflare Pages or R2 |
| Netlify build minutes exceeded | Build queue, deploy delays | Cache dependencies, or switch to Vercel/Cloudflare for more build time |
| Using Node.js-only APIs in Cloudflare Workers | Runtime error at edge | Use Web APIs or nodejs_compat flag |
| Ignoring preview URLs in Netlify | PR feedback loop slow | Enable deploy previews and share links with stakeholders |
| Deploying secrets as env vars publicly | Security breach | Use encrypted secrets / Wrangler secrets, never commit |
| Assuming Cloudflare Workers = full Node.js | Runtime incompatibility | Test with wrangler dev first |
| Over-relying on Netlify Forms on paid plan | Form costs add up | Use free tier limit or switch to Resend/Formspree |
FAQ
Q: Is Cloudflare Pages production-ready?
Yes. Cloudflare Pages launched in 2021 and is used by large companies. It's the same infrastructure that powers Cloudflare Workers, which handles over 50 million HTTP requests per second globally.
Q: Can I use Vercel for non-Next.js projects?
Yes. Vercel supports any static site or serverless framework. But Next.js gets the most native support — ISR, image optimization, and Server Actions work best without adapters.
Q: Do I pay for bandwidth on Cloudflare Pages?
No. Cloudflare Pages has no bandwidth fees on any tier. You pay only if you use Workers (compute), starting at $5/month for 10M requests/day.
Q: Which has the fastest cold starts?
All three edge function runtimes (Vercel Edge, Netlify Edge, Cloudflare Workers) use V8 isolates and have near-zero cold starts. Traditional serverless functions on Vercel and Netlify can take 200-500ms cold start.
Q: Can I use Cloudflare Pages with Next.js?
Yes — use the OpenNext Cloudflare adapter or the @cloudflare/next-on-pages package. Most Next.js features work, with some caveats around Image Optimization and certain ISR patterns.
Q: Which is cheapest for a high-traffic marketing site?
Cloudflare Pages — unlimited bandwidth at zero cost for static assets. For dynamic functions, the Workers free tier (100,000 requests/day) covers most marketing sites. At scale, Cloudflare is significantly cheaper than Vercel Pro or Netlify Pro.