Home Services About Blog FAQ Contact
← Back to blog

Hosting on Vercel vs Cloudflare vs your own VPS: an honest 2026 take.

Pricing has shifted. Free tier restrictions are sharper. And VPS compute is cheap enough now that the math actually flips at a certain scale. Here's how we think through this decision for every new project.

Someone asked us last week which platform we'd pick if we were starting a new project from scratch. A year ago, the answer would have been Vercel by default for anything touching Next.js. That's less true now. Free tier restrictions have teeth, bandwidth overages cost more than they used to, and a Hetzner VPS at €4.50/month has gotten hard to ignore for a certain class of project. Here's the honest breakdown.

Vercel: when it's the right call

Vercel is still the cleanest path to a deployed Next.js app. Git push, instant preview URL, branch environments, edge functions — all of it works without touching a config file. For the web development work we take on that's heavily Next.js, preview deployments alone change how client reviews happen. That's worth something.

The commercial restriction on the Hobby plan is the first thing to know. It covers personal projects only. Any site you're building for a client, any side project generating revenue — that's Pro territory from day one, at $20 per user per month. A two-person team costs $40/month before you've written a line of business logic.

What changed in 2026: bandwidth overage on Pro now runs $40 per 100GB, up from the historical $30. The Pro plan includes 1TB of Fast Data Transfer and 10M edge requests per month, which is enough for most small-business sites under normal traffic. But a launch, a press hit, or a social post that lands — any of those can send an invoice somewhere you didn't expect.

Where it makes sense: Next.js projects that need the full feature set (ISR, server components, app router, React Server Actions), teams that want preview deployments built into their review process, and clients who understand and accept the per-seat pricing before signing. The developer experience is genuinely better than alternatives for Next.js specifically. Just don't start a client project on the free tier expecting to stay there.

Cloudflare Pages + Workers: the value case

Cloudflare's pitch for static and near-static sites is hard to argue with. Pages gives you unlimited bandwidth on the free plan — actual unlimited, not "unlimited with a usage policy that kicks in at 100GB." Static asset requests are free and uncapped on every tier. Workers Free adds up to 100,000 requests per day with 10ms CPU time per invocation, which covers most simple serverless use cases: a contact form, a product lookup, a webhook handler.

Workers Paid is $5/month for 10M requests and 30M CPU milliseconds. You'd have to work at it to outgrow that on a small-business site.

The runtime difference matters, though. Workers runs in V8 isolates, not Node.js. Some npm packages won't work, Node-native APIs are unavailable, and debugging is different from what most developers are used to. Cloudflare has a Next.js adapter, but it's not as feature-complete as Vercel's native support. If your app relies heavily on app-router server components, ISR, or Next.js middleware, you'll hit compatibility walls.

Cloudflare Pages is the right answer for any project where "static or near-static with a few edge functions" describes what you're actually building.

Where it wins: marketing sites, portfolio sites, documentation, anything where content is static with a few serverless endpoints bolted on. Also any situation where you're building multiple small client sites and $5/month vs. $20+/month across a fleet actually adds up to a meaningful number at the end of the year.

Running your own VPS: when the math flips

Managed platforms got expensive enough that the VPS argument is worth making again. Hetzner's CX22 — 2 vCPU, 4GB RAM, 40GB NVMe — costs €4.50/month (roughly $5) with 20TB of monthly egress included. DigitalOcean's smallest Droplet starts around $4/month. Linode (now Akamai Compute) runs $5/month for 1 vCPU, 1GB RAM, and 1TB transfer.

The egress number matters more than the compute price. DigitalOcean charges $0.01/GB after the first terabyte free. At 10TB of extra transfer per month, that's $90 in egress fees on top of the base price. Hetzner's 20TB inclusion makes that effectively zero. For anything bandwidth-heavy — media delivery, file downloads, video assets — that difference compounds fast over a year.

The tradeoff is maintenance. A VPS doesn't run itself. OS updates, certificate renewal, backup jobs, uptime monitoring — someone has to own those tasks. If that person doesn't exist on your team, the cost savings disappear quickly in support bills or downtime you didn't budget for.

The VPS becomes the right call when your app needs a collocated database, when you're running Docker containers with services Vercel and Cloudflare don't support (a self-hosted n8n instance, a Ghost blog, a Directus CMS), or when traffic is predictable enough that flat-rate compute undercuts per-request pricing by a meaningful margin. It's also the most portable option — whatever you build there moves to any other provider without code changes.

How we actually decide

Three questions, in the order they matter:

Who maintains it? If no one on the team will reliably SSH in when something breaks at 2 AM, pick Vercel or Cloudflare. VPS only works if someone owns it.

What does the runtime require? Full Next.js feature set: Vercel. Standard static plus a few edge endpoints: Cloudflare. Custom runtime, Docker, or a database that needs to be collocated: VPS.

What does the cost look like at 12 months? A solo developer on Vercel Pro is $240/year. A three-person team is $720/year. Hetzner handles the same static workload for under $60/year with no per-seat cost. And Cloudflare Pages sits at $0 for most small static builds. The math shifts fast as teams grow and traffic changes.

For most of our projects, we end up on Vercel for Next.js client work (preview deployments change client reviews in a way that's hard to replicate elsewhere), Cloudflare for static marketing builds, and Hetzner for self-hosted tools and automation stacks. None of those are permanent — the right platform changes as a project grows. We've moved clients between all three.

Pick the platform your team will actually maintain, at a price that won't be awkward to explain at renewal.

If you're picking a hosting stack for a new project and want a quick gut-check, reach out. We'll give you a straight answer — including "this one's simple, you don't need us for this."

— Cole

Sources

Not sure which platform fits your project?

Tell us what you're building. We'll tell you where it should live — and whether a simpler setup would work just as well.

Talk to us →