"Where should I host this?" has a dozen popular answers and they are not really competing for the same job. They differ in how much of the machine you are responsible for.
That is the axis worth understanding. Price follows from it, and so does the kind of bad day you get.
The idea
There are three categories. A managed platform takes your git repository and handles the build, the running process, the certificate and the scaling. A virtual server rents you a whole Linux machine and hands you the root password. Serverless runs your code only during the fraction of a second it takes to answer one request, and charges you for that fraction.
MORE MANAGED <----------------------------------------> MORE CONTROL
Serverless Managed platform Virtual server
---------- ---------------- --------------
Cloudflare Vercel Hetzner
Workers Netlify DigitalOcean
AWS Lambda Railway, Render Linode
you write you push to git you install Node,
one function they do the rest nginx, systemd,
certificates, updates
scales to zero zero config, real cheapest per unit,
automatically limits at the edges you are the sysadminHow it works
Published list prices, checked on 2026-08-12 against the pricing pages cited below. They move. Check the vendor's page before you commit.
| Starting point | What makes the bill grow | What you actually pay for | |
|---|---|---|---|
| Vercel | Free tier, non-commercial only | A paid plan at 20 USD per team member per month, then usage | Bandwidth, compute and image processing |
| Netlify | Free tier, commercial use allowed | Personal at 9 USD a month, Pro at 20 USD, both flat | Credits spent on deploys, bandwidth and function calls |
| Railway | Free plan with 1 USD monthly credit; Hobby 5 USD | Metered CPU, memory and traffic against that credit | Measured usage, not service count |
| Render | Free instances, 750 hours a month | A paid instance from 7 USD, per running service | Memory and uptime per service |
| Hetzner, DigitalOcean | About 6 EUR at Hetzner, plus VAT and a small charge for the IP address, or 4 USD at DigitalOcean | Almost nothing, until you outgrow the machine | The machine, whether busy or idle |
| Cloudflare Workers | Free tier, 100k requests a day | Requests and execution time above that | Requests and execution time |
Four things that catch people out:
- Vercel's free tier forbids commercial use. Its fair use guidelines define that broadly: taking payment, advertising a product, running ads, even asking for donations. A side project that starts earning has to move to a paid plan. Netlify's free plan carries no such restriction, so this is a Vercel rule rather than a rule of the category.
- A virtual server costs the same asleep as awake, and powering it off does not stop the bill. Hetzner and DigitalOcean both bill until the machine is destroyed, because the resources stay reserved for you. That is good news at a thousand users and bad news for a side project you abandoned.
- Managed platforms bill for bandwidth, and one large video or an image nobody resized can move you from free to a real invoice in a week.
- Databases are usually a separate bill, and free ones go to sleep. A Supabase project pauses after 7 days of inactivity and a Neon database scales to zero after 5 minutes, so the first request after a quiet spell is slow or fails outright.
What to do
- Match the category to your app, not to the cheapest number. A site with no login and no database is served fine by Vercel, Netlify or Cloudflare Workers. Something with a background job, a queue or a long-running process fits Railway, Render or a plain server. Wanting your data to sit in the EU does not by itself mean a plain server: Vercel, Render and Supabase all offer EU regions. Wanting the machine itself under your control is what points at Hetzner.
- Ask for the deployment cost before you build. Give your AI assistant your
package.jsonand ask which services this project will need at runtime. The answer names the bills. - Start on the free tier of a managed platform if you have never deployed. Learning Linux administration and your app's first deploy at the same time is a week of work. Moving later costs whatever you built on top of that platform. Keep the platform-specific pieces few and named, the image component, the queue, the auth helper, the edge function, and the move stays a day rather than a rewrite.
Where it breaks
The free tiers are real, and they are also the marketing. The real cost of a managed platform is that the pricing model can change under you while your app is shaped around one company's conventions. The cost of a plain server is a list this section does not walk you through: getting files onto the box over SSH, nginx in front of your app so port 443 reaches port 3000, a systemd unit so the process restarts after a crash or a reboot, Certbot for a Let's Encrypt certificate, and the security updates and the 3am reboot. None of that appears on the invoice, all of it is yours, and it is why the first deploy of your life should not be on a bare machine.
Serverless has a specific mismatch worth knowing: functions start cold, they have a hard time limit per request, and holding a database connection open across them takes extra work. A slow report generator that runs fine on a server can be impossible there.