Some links on this page are affiliate links: if you sign up through them, this site earns a commission at no extra cost to you. Prices and recommendations are not affected.

We queried the Hetzner API twice in one day while writing this. At midday, the cheap plan every comparison recommends was unavailable in all three European locations. Five hours later, the same plan was orderable again in two of them. Nobody who copies a price out of another comparison can tell you that, because it is not in the price.

So this one is built differently. The performance numbers come from a box we pay for and benchmarked ourselves. The prices come from the vendors’ own APIs, read on the day of writing, with the plan ID next to every figure so you can check them yourself.

TL;DR

  • Hetzner wins on price for self-hosting: CX23 (x86, 2 vCPU / 4 GB / 40 GB) at €5.49/mo, about 4x cheaper than the equivalent Droplet, with 5x the included traffic.
  • Check availability before you plan around it. CX23 is not orderable everywhere, and whether it is orderable at all changes during the day. The always-available fallback is CAX11 (Arm, €5.99/mo); the x86 fallback is CPX22 at €19.49/mo, which is only about 20% under DigitalOcean.
  • DigitalOcean ($24/mo) buys you the best API and docs, per-second billing since January 2026, and 4 TB of transfer.
  • Vultr ($20/mo) buys you reach: 31 locations, plus a genuinely free 512 MB tier most comparisons claim doesn’t exist.

Live prices, read today

The 2 vCPU / 4 GB tier is where most self-hosters land: a few containers, a database, a reverse proxy.

PlanvCPU / RAM / diskPriceIncluded trafficOver-usage
Hetzner (x86)CX232 / 4 GB / 40 GB€5.49/mo20 TB€1.00/TB
Hetzner (Arm)CAX112 / 4 GB / 40 GB€5.99/mo20 TB€1.00/TB
Hetzner (x86)CPX222 / 4 GB / 80 GB€19.49/mo20 TB€1.00/TB
DigitalOceanBasic2 / 4 GB / 80 GB$24.00/mo4 TB~$0.01/GB
Vultrvc2-2c-4gb2 / 4 GB / 80 GB$20.00/mo3 TB~$0.01/GB

Hetzner bills a public IPv4 separately at €0.50/mo. IPv6 is free. Add it to the Hetzner rows if you need a v4 address, which you probably do.

Prices change. Every number above was read from the vendors’ own pricing APIs on the date of this post, not copied from another comparison.

The availability trap nobody mentions

Search for a VPS recommendation and you will be told to buy the cheapest Hetzner CX box. The price is right. Whether you can buy it is a different question, and the answer changes.

Here are our two reads of the Hetzner API, the same endpoint, the same day:

  • Midday. CX23 (2 vCPU / 4 GB / 40 GB, €5.49) listed a price for Falkenstein, Nuremberg and Helsinki, and an empty availability list. Price visible, server not orderable anywhere in Europe.
  • Five hours later. The same plan came back as orderable in Nuremberg and Helsinki. Falkenstein still not.

Neither read was wrong. Capacity moves. What matters is that the number everyone quotes is not the number that tells you whether you can deploy:

  • The prices[] array still lists locations you cannot order in, at their old prices. It is not an availability signal.
  • The signal is server_types[].locations[].available, per location, and it is live.
  • If you order anyway, the API fails with invalid_input: unsupported location for server type, which reads like you passed a bad region rather than like the plan is gone.
  • GET /v1/datacenters was removed in June 2026 and returns HTTP 410, so there is no second place to look.

Practical advice: check availability for your target location immediately before you order, try a second European location before giving up, and keep a fallback plan in mind. Today that fallback is CAX11, which has been orderable in all three locations every time we looked.

What actually matters when you self-host

1. Egress is the silent budget killer

Nextcloud, photo sync, backups: traffic adds up faster than compute. This is where the three split hardest.

  • Hetzner includes 20 TB on every Cloud plan, then bills €1.00/TB, in 100 MB blocks. Not free beyond the cap - but ten times cheaper than the other two, and the cap is high enough that most self-hosters never reach it.
  • DigitalOcean includes 0.5-6 TB depending on plan (4 TB at the tier above), then about $0.01/GB - roughly $10/TB.
  • Vultr includes 0.5-5 TB (3 TB at this tier), then about $0.01/GB.

Hetzner notifies you at 75% and 100% of the included traffic. Those are notifications, not a cap: usage keeps billing either way.

2. vCPU is marketing, not performance

All three sell “vCPU”, but a shared Hetzner core and a dedicated DigitalOcean core are not the same unit. The only way to know is to measure - which we did, for the one box we own.

3. Snapshots and backups are not free anywhere

  • Hetzner: snapshots at €0.0143/GB per month on the compressed size; backups are a flat 20% of the server price and give you 7 slots.
  • DigitalOcean: snapshots $0.06/GB/month; backups 20% (weekly) or 30% (daily) of Droplet cost.
  • Vultr: snapshots billed per GB of stored data.

Nobody in this bracket gives you free snapshot storage. Budget it.

The benchmark: a real Hetzner box, measured

We took a Hetzner Cloud server we run in production - 2 vCPU shared x86 (Intel Xeon Skylake), 4 GB RAM, 40 GB SSD, Nuremberg - and ran standard, reproducible tests. These numbers are ours.

CPU (OpenSSL speed, single thread):

TestResult
AES-256-CBC (16 KB blocks)~630 MB/s
SHA-256 (16 KB blocks)~255 MB/s

Disk (40 GB SSD):

TestResult
Sequential write (fdatasync)468 MB/s
Sequential read, cold1.1 GB/s
Sequential read, warm (cached)6.0 GB/s

Network (single stream):

TestResult
Download from OVH mirror175 MB/s
Download from Ubuntu mirror82 MB/s

The box sits on a 1 Gbit/s port with IPv6. For a shared-vCPU plan at this price the disk is the quiet star: 468 MB/s sustained write is plenty for a database and a media stack on the same host.

Three honest caveats. This is a CX-line x86 box, the same 2 vCPU / 4 GB / 40 GB spec as the CX23 we recommend, but not the Arm CAX11. We do not rent from DigitalOcean or Vultr, so their figures here are vendor-published, not measured. And a single-thread OpenSSL run on a shared core is a floor, not a guarantee: noisy neighbours are the trade-off of the shared tier.

How the prices actually compare

Against DigitalOcean’s $24 for 2 vCPU / 4 GB:

  • CX23 (x86) at €5.49 - roughly 4x cheaper, with 5x the included traffic. Half the disk (40 GB vs 80 GB), and subject to the availability caveat above.
  • CAX11 (Arm) at €5.99 - the same gap, always orderable so far, if your stack runs on arm64. Most upstream container images ship arm64 builds now; check the ones you depend on.
  • CPX22 (x86) at €19.49 - about 20% cheaper, with 5x the traffic and the same 80 GB disk. This is your number if CX23 is unavailable and you need x86.

That last line is the one missing from every comparison we read. The Hetzner price advantage is 4x when the cheap line is available and roughly a fifth off when it is not, and which of those you get depends on the hour you sign up. Add €0.50/mo for IPv4 to any of them.

When to pick which

Pick Hetzner if:

  • You’re in or near Europe, or your users are.
  • You run Nextcloud, a media stack, or backups - anything traffic-heavy.
  • You want the most compute per euro, and you can check plan availability before you commit.

Pick DigitalOcean if:

  • You want the smoothest API and the best docs.
  • You need per-second billing for short-lived workloads.
  • You want one-click apps instead of configuring a stack by hand.

Pick Vultr if:

  • You need a region the others don’t cover - 31 locations against Hetzner’s five.
  • You want to test on the free tier before paying.
  • You run bursty workloads and spin instances up and down often.

Our recommendation

For European self-hosting, Hetzner Cloud is the pick, and the benchmark above shows the cheap shared tier is not slow. Order CX23 at €5.49/mo if it is available in your location; take CAX11 at €5.99/mo if it is not and your stack runs on Arm; fall back to CPX22 at €19.49/mo if you need x86 either way. Check availability first, in that order, and the decision takes a minute.

If your users are in the US or Asia, DigitalOcean and Vultr are both solid - just model the egress before you sign up.

FAQ

Is Hetzner good for self-hosting? Yes, and it is still the price leader in Europe. Two caveats: the identity verification step at signup, and plan availability that changes without notice - check your target location before ordering.

Why can’t I order the cheap Hetzner plan everyone recommends? Because CX-line availability varies by location and over time, while the price stays visible on comparison sites and in the API’s own price list. Availability is a separate field and it flips: we saw CX23 unavailable across all of Europe and orderable in two locations five hours later. Try another European location, then fall back to CAX11.

Does DigitalOcean charge for egress? Yes. Beyond the included transfer (4 TB at the 4 GB tier) it’s about $0.01/GB, roughly $10 per TB. Model this before you sign up if you serve media or move backups.

Does Vultr have a free tier? Yes - a 1 vCPU / 512 MB / 10 GB instance in a small number of locations, with no included bandwidth. There is also a $2.50/mo plan, but it is IPv6-only and limited to two locations. The cheapest generally useful plan is $5/mo.

Which VPS has the best price-to-performance? At 2 vCPU / 4 GB, Hetzner leads on both price and included traffic by a wide margin when its cheap line (CX23, CAX11) is available. If you are pushed onto CPX22, the gap narrows to roughly 20%, which is close enough that DigitalOcean’s tooling or Vultr’s regions can be the better buy.

Can I self-host on a $6 VPS? Yes, for a reverse proxy, a couple of containers and a small database. The moment you add media or heavy backups, the thing that breaks your budget is egress, not CPU.

What’s next

This is the first in a series. Coming up: running Nextcloud AIO on Hetzner and Caddy + Docker in production - both built on the same box we benchmarked here.