Hetzner Cloud vs DigitalOcean for Self-Hosted Apps: Real Cost and Performance Gap
You're paying $48/month for a DigitalOcean Droplet with 4 vCPUs and 8 GB of RAM, and a colleague mentions they're running the same stack on Hetzner for under $15. That gap is hard to ignore. Before you fire up a migration script, though, you need to know exactly what you're trading and where the real differences bite you.
This article is based on practical experience running self-hosted workloads β web apps, databases, background workers, and monitoring stacks β on both platforms. The goal is a straight comparison, not a vendor advertisement.
What you'll learn
- How Hetzner and DigitalOcean pricing actually compares at equivalent tiers
- Where each platform's network performance holds up and where it doesn't
- Which developer tooling and ecosystem features matter for day-to-day ops
- What the hidden costs and operational risks look like on each side
- How to decide which platform fits your specific workload
Prerequisites
You should be comfortable SSHing into a Linux server, have a rough idea of your app's resource requirements, and understand basic concepts like vCPUs, RAM, and block storage. No deep networking knowledge required.
The Pricing Reality
DigitalOcean's basic Droplets start at $6/month for 1 vCPU and 1 GB RAM, which sounds reasonable until you need more headroom. Scaling to 4 vCPUs and 8 GB RAM brings you to around $48/month. Their premium AMD and Intel Droplets cost more still.
Hetzner's CX series starts at roughly β¬3.29/month (around $3.50 at typical exchange rates) for 2 vCPUs and 2 GB RAM. Their CX32 β 4 vCPUs, 8 GB RAM β runs about β¬5.99/month. Even with VAT considerations for EU billing, you're looking at a cost that's roughly three to four times cheaper for equivalent specs on paper.
Hetzner also sells dedicated AMD and Intel instances under the CPX and CCX lines. A CPX31 (4 dedicated vCPUs, 8 GB RAM) comes in around β¬9.49/month. That's still dramatically below DigitalOcean's equivalent.
The raw price gap is real and it is large. If you're purely comparing specs-per-dollar, Hetzner wins decisively at every tier.
CPU Performance: Shared vs Dedicated
Both providers offer shared and dedicated CPU options, and this distinction matters more than the headline spec count.
Shared vCPUs
Hetzner's shared-CPU instances (CX line) use AMD EPYC processors on shared host machines. Under bursty load they perform well; under sustained CPU pressure you'll hit throttling because you're competing with neighbours. DigitalOcean's basic Droplets are also shared and behave similarly β the difference is that Hetzner shares the same core across more tenants, which can produce more variance under load.
For web apps with typical request patterns, this variance rarely matters in practice. If you're running batch jobs or compilation workloads that peg a core for extended periods, you'll notice it on both platforms but more on Hetzner shared instances.
Dedicated vCPUs
Both platforms offer dedicated CPU tiers. Hetzner's CCX series gives you exclusive access to physical cores. DigitalOcean's CPU-optimized and general-purpose premium Droplets do the same. The performance gap between them is small at equivalent specs; the price gap is large. Hetzner dedicated is still significantly cheaper.
For CPU-heavy workloads β video transcoding, machine learning inference, heavy data processing β go dedicated on either platform. Don't run that work on shared instances if you need consistent throughput.
Network: Where the Geography Tax Hits
This is the single most important non-price factor for most self-hosted apps.
Data centre locations
DigitalOcean has regions in New York, San Francisco, Amsterdam, London, Frankfurt, Singapore, Toronto, Bangalore, and Sydney. If your users are globally distributed, you have solid options for edge-adjacent placement.
Hetzner has Nuremberg, Falkenstein, Helsinki, and Ashburn (US East). That's it. The US presence (Ashburn, Virginia) is relatively new. If your users are primarily in Europe, Hetzner's coverage is excellent. If you need Southeast Asia, South America, or Australia, Hetzner cannot help you today.
Bandwidth pricing
Hetzner includes generous outbound traffic in every plan β typically 20 TB per month on the CX32, scaling up on higher tiers. Overage is charged at a low per-TB rate.
DigitalOcean includes 4 TB on their comparable Droplet and charges more per TB over. For bandwidth-heavy apps β video, large file downloads, high-traffic APIs β Hetzner's included traffic alone can justify the switch.
Latency to end users
If your users are in Europe: Hetzner is excellent. Typical latency from Nuremberg to major EU cities is under 20ms. From DigitalOcean Frankfurt it's comparable, but you'll pay significantly more for it.
If your users are in North America: DigitalOcean's NYC or SFO regions will outperform Hetzner Ashburn for West Coast traffic, and DigitalOcean simply has more options. Hetzner Ashburn is competitive for East Coast US.
Developer Ecosystem and Managed Services
This is where DigitalOcean pulls ahead in ways that aren't immediately obvious from a spec sheet.
Managed databases
DigitalOcean offers managed PostgreSQL, MySQL, Redis, MongoDB, and Kafka clusters. You pay a premium, but you get automated backups, failover, connection pooling, and monitoring out of the box. This is a real time-saver if you don't want to operate your own database cluster.
Hetzner has no managed database offering. You install and operate PostgreSQL yourself, or you use an external provider like Supabase or PlanetScale. Self-hosting a database is absolutely doable and many teams do it well, but the operational burden is yours.
Object storage
DigitalOcean Spaces is an S3-compatible object storage product, fully integrated into their dashboard. It works reliably and the S3 API compatibility means most tooling connects without modification.
Hetzner Object Storage (based on S3-compatible API) is available and works, but it's newer and the ecosystem integration is slightly rougher around the edges. For most use cases it's fine; for heavy production reliance you'll want to test your toolchain specifically.
Load balancers and firewalls
Both platforms offer managed load balancers and cloud firewalls through their dashboards and APIs. Hetzner's load balancer pricing is, again, substantially cheaper. DigitalOcean's UI is more polished and their documentation is more thorough.
Kubernetes
DigitalOcean's managed Kubernetes (DOKS) is a mature product with good tooling, a reasonable free control-plane, and solid community support. Hetzner has no managed Kubernetes, but Hetzner is extremely popular as the underlying infrastructure for self-managed Kubernetes using tools like k3s, k0s, or the Hetzner Cloud Controller Manager. The Hetzner CCM integrates load balancers and volumes into your cluster automatically.
If you want managed K8s with minimal ops work, DigitalOcean wins. If you're happy managing your own cluster and want cheap node instances, Hetzner is a favourite in the homelab and indie-hacker communities for good reason.
Reliability and Support
Both platforms have SLA commitments around uptime. Hetzner publishes a 99.9% availability SLA on most products. DigitalOcean's SLAs are comparable.
In practice, both providers have outages. Hetzner has experienced some significant network incidents affecting their Nuremberg and Falkenstein data centres over the years. DigitalOcean has had its own incidents, including storage-related issues in the past. Neither is immune.
Support is a meaningful difference. DigitalOcean's paid support tiers give you faster response times and named contacts. Hetzner's community forum and ticket-based support work fine for most issues, but response times can be slow for complex problems and there is no phone support. If your app is revenue-critical and you need guaranteed SLA-backed response, budget for DigitalOcean's support plans or factor in the cost of a managed service layer.
Common Pitfalls When Choosing
- Ignoring data centre location: Choosing Hetzner because it's cheap, then discovering your latency to US users is 100ms+ from Nuremberg. Map your user geography first.
- Underestimating ops overhead: Switching from managed databases to self-hosted PostgreSQL on Hetzner is not free. Budget the time for backups, monitoring, and upgrade management.
- Forgetting egress costs in comparisons: DigitalOcean's included bandwidth looks lower, but if you're not hitting those limits, it's a non-issue. Measure your actual outbound traffic before making this a decision factor.
- Assuming shared vCPUs are equivalent: A Hetzner CX32 and a DigitalOcean 4 vCPU basic Droplet are both shared-CPU machines, but they will behave differently under sustained load. Test your workload, don't trust the number on the tin.
- Conflating price with value: For a solo developer's side project, Hetzner's low cost is pure upside. For a team running production SaaS with paying customers, the operational conveniences in DigitalOcean may be worth the premium.
A Simple Decision Framework
Run through these questions before picking a platform:
- Where are your users? Primarily Europe or East Coast US β Hetzner is a viable primary. Global or Asia-Pacific focus β DigitalOcean or a multi-cloud setup.
- Do you need managed databases? Yes and you want to stay in one dashboard β DigitalOcean. You're comfortable with self-hosted or using external managed DB services β Hetzner.
- What's your team's ops capacity? Small team, minimal ops bandwidth β DigitalOcean's managed services reduce toil. Ops-comfortable team or solo dev who enjoys the stack β Hetzner is excellent value.
- Is this revenue-critical? If downtime means direct revenue loss and you need fast SLA-backed support β factor DigitalOcean's support plans or Hetzner + third-party monitoring and alerting into your budget.
- How much bandwidth do you use? High-bandwidth apps benefit significantly from Hetzner's included traffic. Low-bandwidth apps probably don't care.
Wrapping Up
The cost gap between Hetzner and DigitalOcean is not a pricing error β it reflects genuine differences in location coverage, ecosystem maturity, and managed service breadth. Neither provider is universally better.
Here are four concrete actions to move forward:
- Benchmark your actual workload on a Hetzner CX32 or CPX31 for a week. Spin up your stack and run realistic load tests before committing to a migration.
- Audit your managed service dependencies. List every DigitalOcean managed product you use β databases, load balancers, Spaces. Decide which you'll replace, which you'll self-host, and which you'll source from a third party.
- Check latency from Hetzner's regions to your key user locations using tools like
ping,traceroute, or a public latency map before assuming European DCs are close enough. - Start with non-critical workloads. Move a staging environment or background worker to Hetzner first. Get comfortable with the operational model before migrating your primary production database.
- Model the full monthly cost including any third-party services you'd need to add (managed DB, CDN, monitoring). The headline savings can shrink once you account for the full stack.
π€ Share this article
Sign in to saveRelated Articles
Comments (0)
No comments yet. Be the first!