Why Most VPS Comparisons Are Useless
Most VPS reviews rehash marketing claims without testing anything. We ran identical workloads on nine popular providers to see which ones actually perform. The tests covered three metrics that matter: how fast a server boots, how quickly packets reach their destination, and how fast the disk responds under load.
I provisioned the same spec on each host—2 vCPU, 4GB RAM, 80GB SSD—and ran tests from a clean Ubuntu 22.04 image. No caching tricks, no cherry-picked regions. Just repeatable benchmarks you can verify yourself.
The Test Setup
Each provider got a fresh instance in their US East region (or closest equivalent). I recorded boot time from API call to SSH availability, measured ping and MTR to three endpoints (New York, London, Singapore), and hammered the disk with fio using random read/write patterns that simulate database and web server loads.
Boot time matters when you're scaling horizontally or recovering from an outage. Network latency shows routing quality, which affects every HTTP request your users make. Disk I/O determines how fast your database queries run and how quickly your logs write.
Here's the fio command I used for random 4K operations:
fio --name=randread --ioengine=libaio --iodepth=16 --rw=randread \
--bs=4k --direct=1 --size=1G --numjobs=4 --runtime=60 \
--group_reporting
For sequential writes, I switched --rw=randread to --rw=write and bumped block size to 1M.
Boot Time Results
The spread was wider than expected. Fastest providers had instances SSH-ready in under 25 seconds. The slowest took over two minutes.
DigitalOcean and Vultr consistently booted in 20-30 seconds. Linode came in around 35 seconds. Hetzner Cloud was surprisingly fast at under 30 seconds despite their budget pricing. AWS Lightsail and standard EC2 instances both cleared 40 seconds, though EC2 varied more depending on instance type.
Contabo and OVH took the longest—often exceeding 90 seconds. If you're doing frequent deploys or auto-scaling, that delay adds up. For long-running production boxes it matters less.
One pattern I noticed: providers that offer hourly billing with instant provisioning (DigitalOcean, Vultr, Linode) optimized boot speed. Those targeting monthly customers seemed less concerned.
Network Latency and Routing
Ping times tell you the baseline; MTR shows you where packets get delayed. I tested routes to New York, London, and Singapore from each provider's East Coast location.
To New York (same region): most providers kept latency under 2ms. Hetzner and OVH added 5-8ms, likely because their US presence routes through European peering points before reaching Tier 1 networks.
To London: Vultr and Linode both hit 75-80ms consistently. DigitalOcean was slightly higher at 82-85ms. AWS stayed around 78ms. Contabo spiked to 95-110ms with occasional packet loss at a German exchange point.
To Singapore: this is where routing quality shows up. DigitalOcean and AWS both took direct Pacific routes with latency around 220ms. Vultr and Linode were similar at 225-235ms. Hetzner and OVH both exceeded 280ms, with traffic bouncing through Frankfurt before heading east.
If your users are geographically spread, routing matters more than raw bandwidth. A provider with good peering arrangements will outperform one with faster disks but poor network paths.
Disk I/O Performance
This is where the biggest gaps appeared. Storage backends vary wildly—some providers use local NVMe, others use networked SAN, and a few still run SATA SSDs.
For random 4K reads (the database query pattern): Vultr's high-frequency instances hit 95,000 IOPS. DigitalOcean's premium SSD came close at 88,000. Linode delivered 72,000 IOPS. Hetzner Cloud managed 65,000, impressive for their price point. AWS Lightsail topped out at 3,000 IOPS because it uses gp2 EBS by default; standard EC2 with gp3 reached 16,000 baseline (configurable higher).
Contabo and OVH both struggled here, delivering 8,000-12,000 IOPS. Their storage is clearly networked and shared across many tenants.
Sequential write performance (log files, backups): most providers hit 400-800 MB/s. Vultr and DigitalOcean both exceeded 600 MB/s. AWS with gp3 EBS reached 500 MB/s after tuning. Contabo and OVH stayed under 300 MB/s.
One thing to watch: "burstable" performance. Some hosts let you spike to high IOPS briefly, then throttle you. I ran tests for 60 seconds to catch throttling behavior. DigitalOcean and Vultr maintained consistent performance. Linode showed minor dips. AWS throttled hard after burst credits ran out unless you provisioned higher baseline IOPS.
What About CPU Performance?
I didn't focus heavily on CPU because most VPS workloads are I/O-bound, but I ran sysbench for 60 seconds to check for noisy neighbors.
DigitalOcean, Vultr, and Linode all delivered stable CPU performance across multiple test runs. AWS varied depending on instance family—t3 instances throttle under sustained load, m5/c5 stay consistent. Hetzner showed occasional slowdowns during peak European hours, suggesting higher contention.
Contabo had the most variance. Some test runs hit expected performance; others dropped to 60% of baseline. They clearly oversell resources.
So Which Providers Actually Deliver?
For most hosting workloads—web servers, databases, containerized apps—DigitalOcean and Vultr offer the best balance. Fast boots, low latency, strong disk I/O, and consistent performance. They cost more than budget hosts but less than AWS.
Linode sits just behind them with slightly lower IOPS but still solid performance. Their support is better than DO or Vultr if you need hand-holding.
Hetzner Cloud is the value pick. Performance is good enough for most use cases, and pricing is hard to beat. Just be aware of the longer routes to non-European destinations.
AWS works when you need specific integrations or compliance requirements. Raw VPS performance is middle-of-pack unless you tune EBS settings and pick the right instance family. The complexity tax is real.
Contabo and OVH make sense for cold storage, backups, or testing environments where performance doesn't matter much. I wouldn't run a production database on either.
How to Run Your Own Tests
Don't take my word for it. Spin up a trial instance and run these checks:
- Boot time: note when you hit "create" and when SSH accepts your key.
- Network:
mtr -c 100 -r your-target-ipto major cities your users are in. - Disk random I/O: the
fiocommand above. - Disk sequential: change
--rw=write --bs=1M. - CPU baseline:
sysbench cpu --threads=2 --time=60 runand check events per second.
Run tests at different times of day. Some providers oversell capacity and slow down during peak hours.
What to Check Before You Migrate
Performance benchmarks only tell part of the story. Check these before committing:
- Bandwidth limits: some hosts throttle after 1TB, others are unmetered.
- Snapshot costs: DigitalOcean charges per GB; Vultr includes one free snapshot.
- Backup frequency: automated daily backups vs. manual-only.
- Support quality: test response time by opening a pre-sales ticket.
- IPv6 availability: standard on newer hosts, spotty on older ones.
- API quality: if you're automating provisioning, test their API docs and rate limits.
- DDoS protection: some include basic mitigation; others charge extra.
Price per month matters less than total cost of ownership. A cheap VPS that crashes under load costs more in lost revenue than a stable host that charges 30% more.
Pick Based on Your Workload
There's no universal "best" VPS host. DigitalOcean and Vultr win for most web hosting and SaaS applications. Hetzner wins on price-to-performance if your users are primarily in Europe or you can tolerate slightly longer routes. AWS makes sense when you need ecosystem integration or specific compliance.
Contabo and OVH serve a purpose for non-critical workloads where cost matters more than speed.
Run your own benchmarks with your actual application. A WordPress site cares about different metrics than a PostgreSQL cluster. Test with real traffic patterns before you migrate production workloads.
