The search for a Vercel alternative almost never starts with a technical problem. It starts with an invoice. A project does well, a post takes off, a bot crawls your image optimisation for three nights straight — and suddenly there is a number in the dashboard that no longer fits a side project. The second common trigger is quieter: a team realises that its deployment, database, image cache and logs all live with exactly one vendor whose pricing can change once a year.
This article takes both seriously. It first explains why Vercel bills behave the way they do — because without that understanding you will pick the wrong alternative and be surprised again in six months. Then we go through the realistic options: Netlify, Cloudflare Workers and Pages, Coolify on your own server, Render, Railway, Fly.io and the classic VPS with Docker. With real 2026 pricing, with what you genuinely lose, and with a migration order we have run ourselves.
Here is the uncomfortable summary up front: there is no Vercel alternative that does everything equally well and costs nothing. What exists are four different trade-offs. Which one fits you comes down to a single question — and we will ask it right away.
The one question that decides everything
Before you compare a single provider, answer this honestly:
In your project, which is more expensive — an hour of your time, or ten euros of server cost?
If you are a solo developer working on a product that needs to make money, and your day has six productive hours in it, then a self-run server costing you two hours a month is more expensive than a €60 Vercel bill. If you are an agency with fifteen client projects, the same calculation flips completely: the two hours happen once, the savings happen fifteen times.
This question sorts the alternatives more cleanly than any feature table. We come back to it in the conclusion — but keep it in mind while you read the options.
Why Vercel bills explode (and when they do not)
Vercel is not expensive because someone is greedy. Vercel is expensive because it bills by usage and runs several meters at the same time. The Hobby tier is free, the Pro tier starts at $20 per seat per month — and from there it becomes a question of consumption.
The meters that matter, as of 2026:
| Resource | What is counted | Price above the included amount |
|---|---|---|
| Bandwidth (Fast Data Transfer) | Outbound data to visitors | roughly $0.15 per GB above 1 TB |
| Fast Origin Transfer | Data from your function to the edge | roughly $0.06 per GB, from the first byte |
| Active CPU (Fluid Compute) | CPU time your code actively burns | varies by region |
| Provisioned Memory | Memory reserved over runtime | varies by region |
| Image Optimization | Transformations, cache reads, cache writes | e.g. cache writes $4.00–6.40 per million |
| Web Analytics | Events | around $0.03 per 1,000 events |
| Observability Plus | Tracked events | around $1.20 per million events |
The decisive point is not the height of any single price — those are market rate. The point is the combination: one viral page simultaneously generates bandwidth, origin transfer, invocations, CPU time, image transformations and analytics events. Six meters, one event. That is why the jump does not feel linear, it feels like a jolt.
On top of that comes an effect many people notice late: bots pay too. Crawlers, price comparison engines, AI training bots and badly configured monitoring services all generate real requests. On a server with flat-rate traffic you never notice. With usage-based billing it lands on the invoice.
When Vercel is cheap, by contrast: for a small to mid-sized site with mostly static content, moderate traffic and a team with no time for infrastructure, $20 a month is hard to beat for what you get. Preview deployments for every pull request, a global CDN, automatic TLS, instant rollbacks, analytics — building and running all of that yourself costs more than $20 worth of time. Anyone who leaves on principle and then spends three weekends fighting Traefik certificates has saved nothing.

The four ways out of Vercel
Every alternative falls into one of four categories. Holding this taxonomy in your head saves you from comparing apples with servers.
1. The drop-in replacement (managed PaaS). Netlify, Render, Railway, Sevalla, Kinsta. You hand over your Git repository and get builds, deployment, TLS and a CDN. Effort near zero, savings moderate, dependency intact — just with a different company.
2. The edge network (Cloudflare). Workers, Pages and R2. A radically different pricing model: no egress charges, very low base prices, in exchange for a more constrained runtime. Whoever fits here saves the most — but not every application fits.
3. Self-hosted PaaS (Coolify, Dokploy, CapRover). You rent a server for €5–20 and install the Vercel experience on it: git-push deploys, automatic TLS, preview URLs, one-click databases. Biggest savings for manageable effort — but from now on you are the operations team.
4. The plain server. Docker, a reverse proxy, a deploy script. Maximum control, minimum cost, maximum responsibility. For people who already know what a systemd unit is.
The most common mistake is jumping from 1 straight to 4 because an invoice hurt. The second most common is staying at 1 and believing the problem is solved.
Netlify: the obvious but smallest step
Netlify is Vercel’s historic twin and therefore the first reflex. The switch is technically trivial: connect the repository, set the build command, move the domain. For static sites, Astro, Hugo, Eleventy and most SPAs, that is an afternoon.
On price, Netlify moved to a credit model in 2026 that you have to work through once:
| Plan | Price | Credits |
|---|---|---|
| Free | $0 | 300 credits |
| Personal | $9/month | 1,000 credits |
| Pro | $20/month, unlimited members | 3,000 credits |
| Enterprise | custom | unlimited |
And this is how credits get consumed:
| Operation | Cost |
|---|---|
| Production deploy | 15 credits (~$0.10) |
| Compute | 10 credits per GB-hour (~$0.07) |
| Bandwidth | 20 credits per GB (~$0.13) |
| Web requests | 2 credits per 10,000 requests |
Run that against your real traffic before you move. At 20 credits per GB and a Pro credit pack rate of roughly $10 per 1,500 credits, you land at about $0.13 per GB of bandwidth — not dramatically cheaper than Vercel’s $0.15. Anyone fleeing because of bandwidth is fleeing to the house next door.
When Netlify is still the right call: when your problem is not price but something else — Vercel’s coupling to Next.js, a specific feature, or an unpleasant support experience. Netlify is a solid, mature provider with excellent forms and functions integration. But it is a vendor change, not a model change.
Cloudflare: the different pricing model
Cloudflare Workers and Pages are the most interesting alternative for anyone whose bill is dominated by bandwidth. The reason sits in a single sentence of the documentation: “There are no additional charges for data transfer (egress) or throughput (bandwidth).”
That is not marketing phrasing, it is a structural difference. Cloudflare earns from its network, not from the exit. The numbers for 2026:
| Free | Workers Paid (from $5/month) | |
|---|---|---|
| Requests | 100,000 per day | 10M/month included, then $0.30 per additional million |
| CPU time | 10 ms per invocation | 30M CPU-milliseconds included, then $0.02 per million |
| Duration | not charged | not charged, no limit |
| Egress | $0 | $0 |
| Builds (Pages) | 500/month, 1 concurrent | Pro: 5,000/month, 5 concurrent |
For a content-driven site that costs three figures on Vercel because it ships images and HTML in volume, the difference is brutal: a variable invoice becomes a number starting with a five.
The price for this is the runtime model. Workers do not run in Node.js but in a V8 isolate environment with a growing but incomplete Node compatibility layer. Libraries that reach deep into Node internals, need native modules, or assume a long-lived process with a local filesystem will not work unmodified. Next.js needs the OpenNext adapter, and that adapter is good — but it is a translation layer, with everything that implies when major versions land.
My honest rule of thumb: Cloudflare is superb for new projects and painful for grown ones. Starting on a green field with the platform in mind gets you a price-performance ratio nobody else offers. Bringing a three-year-old Next.js app with forty dependencies makes the move a project, not an afternoon.
Coolify: the Vercel experience on your own server
Coolify is the reason self-hosting is no longer an imposition in 2026. It is an open-source PaaS interface you install on your own server, and it does exactly what you appreciate about Vercel: connect the Git repository, push, and Coolify builds, starts the container, fetches the Let’s Encrypt certificate and puts a reverse proxy in front. Plus preview deployments per pull request, databases by click, backups, webhooks, and 280+ one-click services.
The arithmetic is uncomfortably clear. An entry-level Hetzner Cloud server sits at about €5.49 per month in 2026 for 2 vCPU, 4 GB RAM, 40 GB SSD and 20 TB of traffic. Twenty terabytes. On Vercel, 20 TB above the included allowance works out to roughly $2,850.
That comparison is deliberately unfair, and I will say why: the Hetzner box sits in one data centre, there is no CDN, no high availability, and if the machine goes down, your site goes down. Still, the core holds — you pay for capacity instead of consumption, and for content with real traffic that is the difference between two orders of magnitude.

What Coolify actually costs — in time
Here are the honest points missing from most recommendation posts:
Builds are slower. A cold Next.js build on a small server easily takes three minutes where Vercel’s parallel build infrastructure finishes in about ninety seconds. At twenty deploys a day that is a noticeable half hour.
You are the support team. When a deploy hangs in “building” — a known, occasional behaviour — you restart the Coolify container. A managed PaaS would have absorbed that silently, without you ever hearing about it.
The server needs headroom. A Next.js build happily consumes 2–3 GB of RAM. If a database runs on the same machine, the OOM killer will take out the wrong process at the worst possible moment. Treat 4 GB as the floor, 8 GB if database and app share a box.
Security is now your job. This is the point I take most seriously, because we learned it painfully ourselves: on one of our servers an outdated Next.js version ran as root, somebody came in through a Server Action and dropped a crypto miner. For five days. Discovered by pure accident. The full reconstruction is in A server, hijacked for five days — and it is the best advertisement for managed hosting I can write.
Self-hosting means you own updates, firewall, fail2ban, backups and the question of whether a service really needs to listen on a public interface. Incidentally, the rule that night burned into us: in Docker Compose files, never write "5432:5432" — write "127.0.0.1:5432:5432". The short form binds to every interface and puts your database on the open internet. That is precisely what earned us a notification from the German CERT.
Render and Railway: the comfortable middle
Between “do everything yourself” and “hand everything over” sit the container-based platforms. They cost more than a VPS and less than an escalating Vercel bill — and they bill by provisioned resources rather than requests. That makes costs predictable.
Render charges $0 for Hobby (with 5 GB bandwidth) and $25/month for Pro (25 GB bandwidth, unlimited team members) in 2026, plus compute in both cases. Instances are priced plainly: Starter $7 (512 MB / 0.5 CPU), Standard $25 (2 GB / 1 CPU), Pro $85 (4 GB / 2 CPU). Static sites are free. What you get: process-based hosting with long-running containers, real background workers, managed databases with point-in-time recovery, and autoscaling.
Railway charges a $5 (Hobby) or $20 (Pro) base fee that is credited against usage. The model is refreshingly honest — you pay for RAM and CPU hours, not for requests — and the developer experience is among the best on the market. For side projects with a database and two services, Railway is often the lowest-friction option that exists.
Both share a structural advantage over Vercel that gets too little airtime: a long-running process is a different programming environment. You can hold an in-memory cache, run a WebSocket server, keep a cron job inside the same application, and reuse a database connection instead of reinventing a connection pool on every invocation. Anyone who has fought Prisma against serverless functions and a connection limit knows what that is worth.
Fly.io, Sevalla, Kinsta and the second row
Fly.io distributes containers globally to the edge and is therefore closest to the Vercel promise without adopting its pricing model. Strength: genuine multi-region deployment and Firecracker VMs that boot fast. Weakness: the steepest learning curve of any managed provider, fly.toml wants to be understood, and cross-region database replication is a topic of its own.
Sevalla is the recommendation you see in forums whenever somebody writes that Coolify and Hetzner feel too complicated but Vercel feels too expensive. That is exactly the gap it fills: managed deployment without server administration, billed by resources.
Kinsta comes from the WordPress world and built its application hosting around it. Interesting mainly if you already run WordPress projects and want everything on a single invoice.
The plain server: what we actually do
The page you are reading right now runs on none of these platforms. It is an Astro site, built locally and pushed with rsync into a directory served by Caddy. The complete deploy procedure:
npm run build
rsync -a --delete dist/ /var/www/getmind/
No vendor, no build minutes, no spend cap, no meters. Caddy fetches and renews TLS certificates on its own — that is the one thing that genuinely used to be annoying, and it has been solved for years. Static sites are the case where the arithmetic is completely unambiguous: shipping HTML files and WebP images does not require a usage-based platform.
For dynamic applications our pattern looks like this: Next.js in standalone mode inside a Docker container, Caddy as reverse proxy in front, database bound to 127.0.0.1, systemd for restarts. Two things we learned expensively that appear in no tutorial:
Clear the cache and restart the service after every deploy. Next.js names JavaScript chunks with hashes. If a user still has an old page open pointing at a chunk that no longer exists after the deploy, they get a ChunkLoadError — a white page with nothing in your logs. Vercel solves this with atomic deployments where old versions keep serving in parallel. On your own server you have to think about it.
Check whether a port is already taken before adding a service. ss -tlnp | grep :3000 takes two seconds. We once broke three projects at the same time because two domains in the reverse proxy pointed at the same port and one service dutifully served the other one’s responses.

The full comparison
| Platform | Entry price | Billing | Egress cost | Effort | Best fit |
|---|---|---|---|---|---|
| Vercel | $0 / $20 per seat | usage, many meters | ~$0.15/GB above 1 TB | very low | Next.js teams with no infra time |
| Netlify | $0 / $9 / $20 | credits | ~$0.13/GB | very low | static sites, vendor change |
| Cloudflare | $0 / from $5 | requests + CPU-ms | $0 | low–medium | high-traffic, edge-compatible apps |
| Render | $0 / $25 + compute | provisioned resources | included per plan | low | apps with workers and databases |
| Railway | $5 / $20 base | RAM and CPU hours | usage-based | low | side projects, fast iteration |
| Fly.io | usage-based | machine runtime | usage-based | medium | genuine multi-region needs |
| Coolify + VPS | ~€5.50/month | fixed server rent | 20 TB included | medium–high | agencies, many projects |
| Plain server | ~€5.50/month | fixed server rent | 20 TB included | high | people who already know Linux |

What you actually lose by switching
Most articles skip this section because it weakens the recommendation. It is nevertheless the most important one.
Preview deployments for every pull request. Coolify does this, so do Netlify and Render. On a hand-rolled setup you rebuild it — or you skip it and notice two months later that client review has become tedious.
Image optimisation. Vercel’s next/image automatically serves AVIF and WebP at appropriate sizes. Without Vercel you need either sharp in your own container (works, costs RAM and CPU), Cloudflare Images, a service like imgproxy, or you generate variants at build time. None of it is hard, but all of it is work that used to happen invisibly.
ISR and on-demand revalidation. Incremental Static Regeneration works self-hosted — but cleanly only on a single instance, because the cache lives locally in the filesystem. From the second instance onward you need a shared cache handler, usually Redis-backed. This is the point where most Next.js migrations take longer than planned.
One-click rollbacks. On Vercel every deployment is immutable and stays reachable; one click and the old version is live again. Self-hosted, that is a tagged Docker image plus a script. Doable — but you need to have built it before you need it at two in the morning.
The global edge network. If your server sits in Nuremberg and your users sit in Sydney, they will feel it. For most German-language projects that is irrelevant; for an international SaaS product it is not. Countermeasure: put Cloudflare in front for free — that gives you a CDN and DDoS protection in front of any server, and it is a good idea anyway.
DDoS absorption and support at three in the morning. With Vercel you are also paying for somebody else being awake. Self-hosted, that somebody is you.
Migration in six steps
This is how we did it, and in this order it hurts least:
1. Measure before you move. Open the usage dashboard and look at the last 30 days. Which meter is driving the cost — bandwidth, image optimisation, invocations, CPU? The answer determines the destination. If it is bandwidth, Cloudflare or your own server is right. If it is function runtime, a container-based provider is right. Without that measurement you are moving blind.
2. Build the target in parallel. New server, Coolify installed, application deployed, reachable under a test domain. The old environment stays untouched and online. This phase is allowed to take two weeks.
3. Move the state. Database, uploaded files, environment variables, cron jobs, webhooks. The most frequently forgotten item is webhooks — payment providers, forms and CI triggers all still point at the old URL.
4. Lower the DNS TTL before you cut over. Set the record’s TTL to 300 seconds at least 24 hours ahead. Otherwise visitors stay pinned to the old target for hours, and rolling back takes exactly as long.
5. Cut over and watch for 48 hours. Status codes, error rate, response times, memory usage. And concretely: check Search Console. A migration that serves 500s costs rankings faster than you can win them back.
6. Harden the server before you forget about it. SSH by key only, firewall down to the essentials, unattended security updates, fail2ban, backups off the server — and monitoring that wakes you up. Skip this step and you will eventually do it involuntarily.
When you should stay on Vercel
I have no interest in selling you a migration. There are clear cases where staying is the right call:
- Your bill is under €50 a month. Then you are negotiating over an amount smaller than two hours of your working time.
- You are a small team with no operations experience. A self-hosted server with nobody who understands it is a security incident with a delayed timestamp.
- You use Next.js at its edges. Partial prerendering, middleware-heavy architectures, brand new features — those work on Vercel first and everywhere else later.
- Your product is not validated yet. Do not optimise infrastructure cost before you know whether the product has customers. That is the most expensive moment to move.
One pragmatic middle path many people overlook: do not leave entirely, relocate the expensive parts. Images and downloads to Cloudflare R2 (no egress), video to a specialised provider, static marketing pages to a cheap server, and only the actual application stays on Vercel. That often cuts 70% of the bill without costing a single migration evening.

Frequently asked questions
What is the best Vercel alternative?
There is no best one, there are three right ones, depending on the problem. If bandwidth is ruining you: Cloudflare Workers and Pages, because egress there is simply $0. If overall price is the issue and you are technically comfortable: Coolify on a Hetzner server for around €5.50 a month. If you want predictable cost without server administration: Render or Railway. Netlify is the most convenient switch but saves the least.
Is Vercel really expensive?
For small projects, no — the Hobby tier is free and generous. It gets expensive at the point where several usage meters rise at once: bandwidth above 1 TB at roughly $0.15 per GB, plus origin transfer, CPU time, image transformations and analytics events. A single viral post raises all six numbers simultaneously, which is why the jump feels so abrupt.
Can I host Next.js without Vercel?
Yes, completely. Next.js is open source and runs anywhere Node.js runs — in standalone mode inside a Docker container of roughly 200 MB. App Router, Server Components, Server Actions and API routes behave identically. Three things need attention: image optimisation (needs sharp or an external service), ISR across multiple instances (needs a shared cache handler), and rollbacks (you have to build them yourself).
Is self-hosting with Coolify actually worth it?
From about three projects onward, clearly. A €5.50 server comfortably carries several small applications, and the fixed cost is shared. For a single small project it barely pays financially — there you spend in time what you save in money. Also budget 30–60 minutes a month for updates, log checks and backup verification. That is not an excuse, but it belongs in the calculation.
What does your own server cost for a website?
A Hetzner Cloud server with 2 vCPU, 4 GB RAM and 20 TB of traffic sits at around €5.49 a month in 2026. For applications with a database I recommend 8 GB of RAM, which puts you at roughly €12–16. Add a domain (~€10/year) and optionally backups (20% surcharge). TLS certificates are free via Let’s Encrypt.
Is Cloudflare Pages a full Vercel alternative?
For static sites and modern frameworks, yes, and unbeatable on price. For complex Next.js applications, with caveats: Workers run in a V8 isolate environment rather than Node.js. Node compatibility has become good, but packages with native modules or deep Node access need adjustment. Next.js runs via the OpenNext adapter — solid, but an additional layer that has to keep up across major versions.
How do I move my domain without downtime?
Build the new environment in parallel and test it fully under a test domain. At least 24 hours ahead, lower the DNS TTL to 300 seconds. Then switch the A or CNAME record and keep the old environment running for another 48 hours, so requests from stale caches do not fall into nothing. Immediately after the move, verify the TLS certificate, the www redirect and every redirect rule.
Will I lose SEO rankings when changing hosts?
Not if URLs, redirects and content stay identical. Google does not care about your provider, it cares about availability and response time. Three mistakes are risky: changed URL structures without 301 redirects, an extended outage during the cutover, and a markedly slower server. Watch Core Web Vitals and Search Console coverage for two weeks after the switch.
What about vendor lock-in on databases and storage?
That is the underrated part. Changing the hosting platform is usually easier than leaving Vercel Postgres, Vercel Blob or Edge Config. If independence is your goal, start with the data, not the deployment: a standard PostgreSQL instance and S3-compatible storage (Cloudflare R2 or Hetzner Object Storage, for example) can be taken anywhere later.
Conclusion
The honest answer to the search for a Vercel alternative is a counter-question: what exactly is bothering you? If it is cost, first measure which meter creates it — for bandwidth the answer is Cloudflare or your own server, for compute time it is a container-based provider. If it is dependency, start with the database and file storage, not the deployment. If it is unpredictability, move to any model with a fixed base fee — Render, Railway or a server with flat-rate traffic.
For the three most common starting positions, my clear recommendations:
Solo project or side product: stay on the free tier as long as it holds. If you want to move, take Cloudflare Pages — free, fast, and egress never costs you anything.
Agency or multiple projects: a Hetzner server with Coolify for €5–15 a month. The effort happens once, the savings happen per client project. Budget an afternoon for hardening and set up backups before you deploy the first client project.
Growing product with real users: Render or Railway. Predictable cost, long-running processes, managed databases, no night shift required. The premium over your own server is the cheapest insurance you can buy.
And the sentence I should tell myself more often: the cheapest infrastructure is the one you have to think about least. Five euros a month is not a win if it costs you five hours — and certainly not if it lets you host a crypto miner for five days without noticing.