🚀 Why I Switched from Vercel to Cloudflare Pages
I’ve been using Vercel for a long time to host my Next.js dynamic projects. It’s a powerful platform with excellent developer tools, easy integration, and fast deployment.
But here’s the catch — serverless costs can grow unexpectedly, and the free plan limits are tighter when your traffic scales.
Recently, I migrated my projects from Vercel to Cloudflare Pages, mainly for cost-effectiveness, performance, and simplicity. If you mostly serve static or semi-dynamic content, Cloudflare’s ecosystem just makes sense.
💡 The Core Reason: Serverless Without Credit Card Anxiety
In the serverless world, you never know how your bill might grow — edge functions, bandwidth, cold starts… all add up.
But Cloudflare Pages changes that.
- ✅ Unlimited bandwidth
- ✅ Unlimited visits
- ✅ Built-in CDN edge caching (worldwide)
- ✅ Free D1 database (SQLite-based)
- ✅ Automatic SSL + Cache + Firewall
Basically, it gives you the global power of a CDN + serverless edge — with no surprise billing.
That’s what I needed — edge hosting without worrying about unexpected credit card charges.
🧠 My Tech Stack Comparison
| Feature | Vercel | Cloudflare Pages |
|---|---|---|
| Framework Used | Next.js | Hugo |
| Database | SQLite (Vercel + D1 test) | D1 (Cloudflare SQLite) |
| Server Type | Serverless Functions | Edge Functions |
| Language/Runtime | Node.js | Workers Runtime |
| Deployment Tool | Vercel CLI / Git | Wrangler CLI |
| Cost | Free tier limited, scales fast | Practically free for static + D1 |
| Performance | Fast, but depends on function cold starts | Global CDN edge cache, super fast |
| Build Speed | Moderate (Next.js heavy builds) | Extremely fast (Hugo static builds) |
| Bandwidth Limit | Limited | Unlimited |
🧩 My Workflow Migration
When I decided to move from Vercel → Cloudflare Pages, here’s what I did technically:
- Extracted SQL Data
From my D1 SQLite database on Cloudflare (previously Next.js API). - Converted SQL → Markdown
Using a custom Node.js script, I converted my data into.mdfiles compatible with Hugo. - Rebuilt Site with Hugo
Hugo is insanely fast — it builds static files in seconds. This means no runtime cost, no cold starts, no API load. - Deployed with Wrangler CLI
wrangler pages deploy ./public— done. My Hugo-generated static site was live instantly on Cloudflare’s global edge network.
🌍 The Result
olimiah.pages.dev → lightning fast, fully static, globally cached
olimiah.vercel.app → still dynamic, but slower under load and limited in free usage
Performance-wise, Cloudflare Pages wins for my kind of projects. And financially, it’s unbeatable — no hidden costs, no billing surprises, no bandwidth limits.
⚖️ Final Verdict
If your site:
- doesn’t require heavy real-time dynamic content
- can be statically pre-rendered or cached at the edge
- and you want freedom from surprise bills
👉 Then Cloudflare Pages is the smarter choice in 2025.
But if you’re running complex React SSR apps or APIs that need dynamic rendering — Vercel still holds the edge (pun intended).
🔗 Useful Links
- 🌐 My Sites:
- 🧰 Tools I Used:
💬 My Takeaway
Cloudflare Pages is not just a “free alternative” — it’s a powerful edge-first platform that makes static and hybrid sites incredibly efficient.
And for solo devs, students, or freelancers like me who care about speed, simplicity, and zero-cost scaling — it’s absolutely worth it.
