Draft, not yet published
Hetzner vs AWS for a small SaaS: what you're really paying for
7 July 2026· 6 min read · by Stackbastion
You’ve got a small SaaS with a few hundred users, one database, and a background worker. You keep reading that Hetzner is way cheaper than AWS. That’s true, but the price tag isn’t the whole story. Here’s what each one actually charges you for, and where the cheap option costs you later.
The raw numbers
Let’s price a realistic setup: one app server, one Postgres database, some storage, and enough bandwidth to serve real traffic. Say 4 vCPU, 16 GB RAM, 160 GB disk, and about 1 TB of outbound traffic a month.
| Item | Hetzner | AWS |
|---|---|---|
| Compute (4 vCPU / 16 GB) | ~€16/mo (CPX41) | ~€110/mo (t3.xlarge on-demand) |
| Managed Postgres | Self-run, €0 extra | ~€120/mo (RDS db.t3.large) |
| 1 TB outbound traffic | Included (20 TB cap) | ~€85/mo (€0.09/GB after 100 GB free) |
| Block storage 160 GB | Included on the box | ~€16/mo (EBS gp3) |
| Rough monthly total | ~€16-40 | ~€330 |
That’s not a typo. The AWS bill for the same shape of workload runs roughly 8x to 10x the Hetzner one, and bandwidth is the biggest hidden driver. AWS charges about €0.09 per GB to send data out. Hetzner gives you 20 TB with the box and charges around €1 per extra TB. If your app serves images, files, or lots of API responses, egress alone can dwarf your compute cost on AWS.
What the AWS premium actually buys
AWS isn’t overpriced by accident. You’re paying for things Hetzner doesn’t sell:
- Managed services breadth. RDS handles Postgres failover, patching, and backups for you. There’s also managed Redis, queues (SQS), object storage (S3), and dozens more. On Hetzner you run all of that yourself.
- Global regions. AWS has data centers on every continent. Hetzner has Germany, Finland, and a few US locations. If you need low latency in Singapore or Brazil, AWS covers it and Hetzner doesn’t.
- Elastic scale. AWS can hand you 100 servers in five minutes and take them back an hour later. Hetzner scales fine for steady growth, but it’s not built for sudden 50x spikes.
- Compliance paperwork. AWS ships SOC 2, HIPAA, and a long list of certifications enterprise buyers ask for. Hetzner has ISO 27001 and solid EU data residency, but a shorter list overall.
If any of those map to a real need you have today, the premium is buying you something. If they map to a need you imagine having someday, you’re paying for insurance you may never claim.
The part the sticker price hides
The Hetzner box is cheaper, but “self-run Postgres” isn’t free. Someone has to set up backups, test that a restore actually works, patch the OS, watch disk space, and handle the 2 a.m. page when the disk fills. On RDS, AWS does most of that. On Hetzner, that’s you or someone you pay.
For a lot of small SaaS apps, that work is a few hours a month once it’s set up right. For others, it’s the thing that eats every weekend. The honest version: Hetzner saves you €300 a month in cash and costs you some hours in ops. Whether that trade is good depends on how much your hours are worth and how comfortable you are running a database.
If you want the real math on that trade, we broke it down in the total cost of ownership post.
A concrete example: an app that serves images
Numbers on a table are easy to wave away, so here’s a real shape. Say you run a small SaaS where users upload and view photos: a design tool, a real-estate listing app, whatever. Traffic is modest, maybe 500 daily users, but each page view pulls several images. That adds up to about 3 TB of outbound traffic a month.
On AWS, that 3 TB of egress alone costs around €260 a month at €0.09 per GB, on top of your compute and RDS bill. Your total lands north of €500. On Hetzner, that 3 TB sits comfortably inside the 20 TB the server already includes, so your egress cost is €0. Same app, same traffic, and the bandwidth line goes from €260 to nothing.
This is the case where the Hetzner gap stops being “nice savings” and becomes “different order of magnitude.” Media-heavy apps, file downloads, video, and chatty APIs all hit this. If your app is text-light and mostly serves small JSON responses, the gap shrinks and AWS’s managed convenience looks more reasonable. Know which kind of app you’re running before you pick.
What switching later actually costs
People worry about picking wrong and getting stuck. The good news: if you build on standard tools, moving between Hetzner and AWS is a database dump and a redeploy, usually a day of work. Postgres is Postgres on either one. Docker containers run the same place. A plain Linux app doesn’t care which company owns the metal.
The trap is leaning on AWS-only services. If you wire your app to DynamoDB, Lambda, SQS, and Cognito, you’re not on AWS the way you’re on Hetzner, you’re on AWS the way a house is on its foundation. Ripping those out later is a rewrite, not a migration. If keeping your options open matters, stick to portable tools and treat the managed services as a convenience you can walk away from, not a dependency you build around.
Or, we do it for you
We run apps on Hetzner so you get the cheap-infrastructure price without the ops work: tested backups, patching, monitoring, and a human on call. See what that costs on our pricing page.
FAQ
Is Hetzner reliable enough for production?
Yes. Hetzner runs real production workloads for thousands of companies, with solid uptime and ISO 27001 certification. The difference from AWS isn’t reliability of a single server, it’s the managed services and global reach around it. A well-configured Hetzner box is not a weekend-project risk.
Why is AWS bandwidth so expensive?
AWS charges about €0.09 per GB for outbound traffic, and that adds up fast for any app serving media or heavy API responses. It’s one of the least visible parts of an AWS bill and often the biggest surprise. Hetzner includes 20 TB per server, which covers most small apps completely.
Can I start on Hetzner and move to AWS later?
Yes, and plenty of teams do the reverse too. If you build on standard tools (Postgres, Docker, plain Linux) rather than AWS-only services like DynamoDB or Lambda, moving between them is straightforward. The lock-in risk comes from leaning on proprietary managed services, not from the server itself.
Does cheaper hosting mean worse performance?
No. A Hetzner CPX41 and an AWS t3.xlarge give you similar CPU and memory. For a lot of workloads Hetzner’s dedicated-core plans actually feel snappier than AWS burstable instances, which throttle CPU once you exhaust credits. You’re paying AWS for services and reach, not for raw speed.