I needed a $20-ish/month VPS to host a side project — a small job queue and API, nothing exotic — and instead of picking whichever provider I'd used last time out of habit, I decided to actually test five of them against each other on the same workload. This is that comparison, with real numbers, not marketing benchmarks.
I signed up for a plan at each of five providers at a comparable price point ($18-$24/month, 2 vCPU, 4GB RAM, NVMe storage where offered), spun up identical Ubuntu 24.04 images, and ran the same battery of tests on each: sysbench CPU, fio for disk, iperf3 against a fixed reference point, and a crude real-world test — building and running my actual app's Docker image and hitting it with a small load test.
Here's the shortlist I tested: DigitalOcean, Hetzner Cloud, Vultr, Linode (now Akamai Cloud Compute), and OVHcloud. All five let you sign up and have a box running in under five minutes, which says more about how commoditized basic VPS hosting has become than anything else in this post.
The five providers, plans, and what I paid
| Provider | Plan tested | Price/mo | vCPU / RAM |
|---|---|---|---|
| Hetzner Cloud | CPX21 | $18.49 | 3 vCPU / 4GB |
| DigitalOcean | Premium AMD, 4GB | $24.00 | 2 vCPU / 4GB |
| Vultr | High Frequency, 4GB | $24.00 | 2 vCPU / 4GB |
| Akamai Cloud Compute (Linode) | Dedicated 4GB | $36.00 | 2 vCPU / 4GB |
| OVHcloud | Comfort, 4GB | $21.00 | 2 vCPU / 4GB |
I let the price gap on Akamai/Linode stand rather than downgrading the plan, because their 4GB tier at a comparable price to the others only offers shared CPU, and I wanted to test what most people would actually pick.
CPU and disk benchmarks
Sysbench CPU (events per second, single-threaded, higher is better):
- Hetzner CPX21: 4,812
- DigitalOcean: 4,390
- Vultr: 4,260
- OVHcloud: 4,105
- Akamai/Linode (dedicated): 5,120 — unsurprising given it's dedicated rather than shared CPU
Disk, via fio random 4k write (IOPS):
fio --name=randwrite --ioengine=libaio --rw=randwrite \
--bs=4k --direct=1 --size=1G --numjobs=4 --runtime=60 \
--group_reporting
Hetzner CPX21: 61,400 IOPS
DigitalOcean: 44,200 IOPS
Vultr: 38,900 IOPS
OVHcloud: 29,700 IOPS
Akamai (Linode): 52,100 IOPS
Hetzner's NVMe performance at that price point is genuinely startling compared to the others — it's the one number in this whole test that made me say "that can't be right" and run it three more times. It was right.
Network and real-world app performance
iperf3 throughput to a fixed test point in Frankfurt varied more by physical datacenter location than by provider, which is a fair reminder that "network performance" is mostly about where you and your users are, not which company's logo is on the invoice. For the actual app test — building my Docker image and running a 500-request load test against a simple CRUD endpoint — median response time came in within 8ms of each other across all five providers once warmed up. At this workload size, the app itself was never the bottleneck; database connection pooling settings mattered more than host provider.
Bandwidth, snapshots, and the costs that aren't on the pricing page
The advertised monthly price is never the whole story, and this is where the providers actually diverge the most. Hetzner includes 20TB of outbound traffic before any overage, which for a small side project is effectively unlimited; DigitalOcean and Vultr both include smaller pools (around 4TB and 3TB respectively at this tier) before charging per-gigabyte overage, which matters if your project ever serves media or has a traffic spike you didn't plan for. Snapshot pricing varies just as much — some providers charge per-GB-month for snapshot storage regardless of how often you take one, others bundle a generous free allowance into the plan. None of this shows up clearly on the comparison pages marketing teams build, and all of it is worth reading the actual billing documentation for before you commit, especially if you expect to grow past a toy workload.
I also priced out what it would cost to double the plan size on each provider, since side projects tend to need more headroom within the first year, not less. Hetzner and Akamai/Linode both had the smoothest upgrade path — resize in place with a short reboot, no data migration required. DigitalOcean and Vultr were similar. OVHcloud required slightly more manual intervention to resize the plan I'd chosen, which is a small thing until you're doing it during a traffic spike at an inconvenient hour.
Support and sign-up friction
I filed an identical low-priority support ticket with each provider ("does your block storage support online resize?") to get a feel for response time on a budget plan, where you often get deprioritized support:
- Hetzner: 4 hours, correct and specific answer
- DigitalOcean: 2 hours, correct answer with a docs link
- Vultr: 6 hours, correct but generic answer
- OVHcloud: 22 hours, eventually correct
- Akamai/Linode: 3 hours, correct and detailed
Sign-up friction was close across the board, though Hetzner and OVHcloud both ran manual account review on a new signup from a residential IP, which delayed my first server by about ninety minutes each — worth knowing if you need a box running in the next ten minutes rather than the next two hours.
So which one would I actually recommend
For this side project, I kept it on Hetzner. The price-to-performance ratio isn't close, and the support response was fast enough for a budget tier. The honest caveats: Hetzner doesn't have as many regions as DigitalOcean or Akamai, so if your users are concentrated somewhere Hetzner doesn't serve well, that matters more than the benchmark numbers. And if you want the broadest ecosystem of one-click app installs, managed databases, and tutorials for every possible stack, DigitalOcean's docs and community content are still the best of the five, which is worth something even at a slightly higher price.
If I were choosing for a team rather than a side project, I'd lean toward whichever provider your cloud spend is already concentrated with for billing and support-contract reasons — the performance differences here, while real, are small enough that vendor consolidation usually wins on a longer time horizon.