Why I Moved My Site Off Vercel
Not a rant — a practical accounting of what pushed me to Cloudflare Pages and what I had to give up to get there.
The moment that started it
A $46 bill for a personal site. It was a bad month — a post got picked up somewhere and traffic spiked. Vercel's free tier is generous until it isn't, and the overage billing has no ceiling.
I'm not arguing Vercel is expensive for what it does. For a product company, the price is reasonable. For a personal site where I'm the only stakeholder, the risk-reward stopped making sense.
What I evaluated
I looked at three alternatives: Netlify, Cloudflare Pages, and self-hosting on a $6 VPS.
Self-hosting was immediately more work than I wanted. I maintain enough infrastructure professionally. I didn't want to manage a server for a blog.
Netlify and Vercel are similar enough that switching felt like a lateral move. The pricing model is identical in the ways that burned me.
Cloudflare was different because bandwidth is genuinely not their product. They make money on security, DNS, and enterprise Zero Trust. The bandwidth they serve for my static site costs them essentially nothing.
What I gave up
Next.js on Cloudflare is not zero-config. You need the OpenNext adapter. Image optimization works differently — you either use Cloudflare Images (paid) or drop back to plain <img> tags with manual sizing.
The deployment pipeline is also slightly less polished. Preview URLs work great. The dashboard is more complex than Vercel's.
What I gained
Zero bandwidth anxiety. One less SaaS bill. A faster global CDN — Cloudflare's network is bigger than Vercel's.
Mostly the peace of mind. The site could get linked from a major publication tomorrow and I would not think about the bill.
Would I recommend it?
If you have a product with a team and real users, stay on Vercel. The DX is better and the economics work.
If you have a personal site that occasionally gets traffic, Cloudflare Pages on the free tier is hard to beat.