One Heroku dyno costs $50 a month. Nobody ever migrated off Heroku over $50 a month. But nobody runs one dyno for long — the moment you need a worker, a staging environment, and a second web process so deploys stop dropping requests, you are holding five dynos, and five Standard-2X dynos are $250 a month before the database. Five Performance-M dynos are $1,250 a month. That is the exact point where per-instance pricing stops being convenient and starts being the line item your CFO asks about.
This is not a Heroku hit piece. Qovery — a company that sells Kubernetes platforms — said it most plainly in its September 2026 costing of managed platforms: "The math flips as you scale. A Heroku Standard-2X dyno is $50/month and a Performance-M is $250/month; Render and Fly.io sit in the same per-instance band." Same band, same curve. The question is never whether the first instance is cheap. It is what the fifth one costs, and what the same five workloads cost on hardware with a flat monthly rate.
The punchline up front
Here is one instance versus five, compute only, at September 2026 list prices — beside what five equivalent workloads cost on a single flat-rate box you own:
| Platform / tier | 1 instance | 5 instances | 5 workloads, flat-rate box |
|---|---|---|---|
| Heroku Standard-2X (1 GB) | $50/mo | $250/mo | ~$45–65/mo, total |
| Heroku Performance-M (2.5 GB) | $250/mo | $1,250/mo | ~$45–65/mo, total |
| Render Standard (2 GB) | $25/mo | $125/mo | ~$45–65/mo, total |
| Fly.io performance-1x (2 GB) | ~$32/mo | ~$160/mo | ~$45–65/mo, total |
The flat-rate column barely moves because bin-packing five small processes onto one dedicated box is what containers were invented for. The per-instance column multiplies by five because that is the business model. Everything below is the working behind this table: where the numbers come from, what the database line does to each side, when the crossover actually triggers, and — just as important — when you should ignore all of this and stay put.
Qovery's September 2026 verdict: one per-instance band
Three Qovery posts from September 2026, all priced against the vendors' own pages, converge on the same picture. The Heroku-alternatives comparison benchmarks ten platforms on 2026 pricing. The PaaS comparison pulls entry prices directly from each vendor: Render web services from $7 a month, Railway usage-based at roughly $20 per vCPU, Fly.io Machines from $2.02 a month for the smallest shared preset. And the managed-platform-to-Kubernetes piece states the verdict outright: Heroku, Render, and Fly.io occupy the same per-instance band, and "that convenience premium is fine for a handful of processes."
The like-for-like base stack in Qovery's cost-visibility post makes the band concrete. One web process plus managed Postgres: Render Standard web ($25) with Pro Postgres ($55) lands around $80 a month; Heroku Standard-2X ($50) with Postgres Standard-0 ($50) lands around $100; Fly.io performance-1x with 2 GB ($32) plus a production Postgres cluster (~$82 and up) lands around $115 and up. Different logos, same neighborhood — roughly $80 to $115 a month for the smallest thing you would call production.
That framing matters because it defuses the usual platform war. There is no clever arbitrage between Heroku, Render, and Fly.io at this scale; they price the same convenience at a comparable premium. The real comparison is per-instance pricing against flat-rate capacity, and that comparison is a function of exactly one variable: how many instances you run.
The worked math: one dyno versus five
Take the most common Heroku production shape: Standard-2X dynos at $50 each with a Postgres Standard-0 database at $50 a month. Now walk the instance count up the way real teams do — one web process, then a worker, then staging, then redundancy:
| Dynos | Compute | + Postgres Standard-0 | Monthly total |
|---|---|---|---|
| 1 | $50 | $50 | $100 |
| 3 | $150 | $50 | $200 |
| 5 | $250 | $50 | $300 |
| 10 | $500 | $50 | $550 |
At one dyno the database is half your bill, which feels fine. At five, compute dominates and you are paying $300 a month for what is, resource-wise, about 5 GB of RAM and a small Postgres. At ten — two services with redundancy plus workers and a staging environment, a completely ordinary Series A shape — you are at $550 a month and climbing linearly forever.
Now run the same walk on Performance-M, the tier Heroku itself positions for high-traffic production at $250 per dyno with 2.5 GB of RAM:
| Dynos | Compute | + Postgres Standard-0 | Monthly total |
|---|---|---|---|
| 1 | $250 | $50 | $300 |
| 3 | $750 | $50 | $800 |
| 5 | $1,250 | $50 | $1,300 |
Five Performance-M dynos cost $1,300 a month including the database. For 12.5 GB of RAM. A single dedicated server with ten times that memory rents for under $100 a month. Nobody disputes that Heroku earns its premium on the first dyno — git push, TLS, logging, and rollbacks with zero ops hires is a bargain at $50. The dispute starts at dyno five, where you are paying the zero-ops premium five times over for processes that mostly sit idle next to each other.
The same curve holds on Render and Fly.io, just from a lower intercept. Five Render Standard instances ($25 each) plus Pro Postgres ($55) total roughly $180 a month. Five Fly.io performance-1x machines ($32 each) plus production Postgres (~$82 and up) total roughly $242 and up. Cheaper than Heroku, same shape: linear in instance count, with no volume discount for the fact that your five processes could share one machine.
And the sensitivity variable is not some exotic knob — it is redundancy, the thing every production checklist demands. One box is a side project. The day you need two web processes so a deploy doesn't drop traffic, a worker so web requests stop timing out on background jobs, and a staging environment so you stop testing in production, you have five instances. That day is the migration trigger, and it arrives for every team that survives.
The other side of the ledger: five workloads, one flat-rate box
The same five processes — two web, one worker, staging, plus Postgres — fit comfortably on one Hetzner-class dedicated box in the €40 to €60 a month range, running under Kubernetes managed declaratively by Cluster API (or even plain Docker Compose for the smallest shapes). The bill does not multiply by five because the hardware does not multiply: containers bin-pack, Postgres runs beside the app, and staging sips the leftover capacity. Teams report the same shape of savings over and over — one migration story cut an AWS-plus-DigitalOcean bill from $559 to $133 a month (down 76%) by moving to Hetzner; another took a $4,200 monthly average to $470 (down 89%) with Hetzner plus Cloudflare plus Backblaze; a fintech reportedly serves 180,000 users from a single $80-a-month Hetzner box. On Hacker News, teams describe moving Heroku enterprise workloads onto self-hosted Dokku backed by k3s on Hetzner hardware.
But an honest ledger prices both sides, so here is what the flat-rate column does not include. First, engineering time: someone provisions the box, upgrades Kubernetes three times a year, patches CVEs, and carries the pager. Qovery's own piece prices the managed control planes at about $73 a month each for EKS, GKE, and AKS — self-hosting on bare metal avoids that fee but not the labor. Second, utilization risk runs in reverse: Cast AI's 2024 Kubernetes cost benchmark found that on average only 13% of provisioned CPU and 20% of provisioned memory actually get used, so a badly managed cluster wastes flat-rate capacity the same way idle dynos waste per-instance spend. Third, the managed database you gave up: self-hosted Postgres needs backups, failover thinking, and restore drills, and that work is real even when the software is free.
A fair rule of thumb: the flat-rate side wins on infrastructure spend the moment instance count passes three to five, but it only wins overall once someone on the team can own the platform for a few hours a week — or once you run a platform layer that absorbs that work for you.
The honest counter-case: when staying put wins
Qovery deserves credit here: a vendor that profits when you adopt Kubernetes tells you plainly that under roughly ten services with no compliance deadline, staying on the managed platform usually wins. Kubernetes carries a standing operational tax — three minor releases a year, roughly fourteen months of patch support each, an unending treadmill of upgrades, node-pool management, and an on-call rotation that did not exist when Heroku ran it for you. The CNCF's 2024 survey found around 80% of organizations running Kubernetes in production, but the top barriers were cultural friction, missing in-house training, and security — not raw technical complexity. The technology is free; the team to run it is not.
The cautionary tale with a number attached is the startup that burned through $200,000 on a Kubernetes migration — eight months of engineering time — before retreating to a $3,500-a-month Heroku bill that had been serving 250ms responses with two outages a year all along. Their failure was not Kubernetes; it was migrating on preference ("our hires expect Kubernetes") rather than on a dated, concrete constraint. Cost pressure that your traffic genuinely creates is a constraint. Resume-driven infrastructure is a preference. Only one of them survives contact with the invoice.
So the decision rule is not "managed bad, self-hosted good." It is: stay on per-instance pricing while your instance count is small and your constraints are soft; start planning the move the day redundancy, environment sprawl, or worker count pushes you past five instances with no plateau in sight. That is the math flipping — not a feeling, a count.
Your Monday-morning checklist
If this post earned its keep, you can act on it this week. Run these four checks against your own setup:
- Count your instances, not your services. Include workers, schedulers, staging, and review-app averages — not just production web. If the total is past five with no plateau, you are past the flip.
- Separate the database line. Managed Postgres ($50 on Heroku Standard-0, ~$55 on Render Pro, ~$82-plus on Fly.io) is often the single most defensible managed line item. Price the move with the database staying managed first; migrate it second, if ever.
- Name your constraint. Redundancy need, a customer contract requiring VPC peering or data residency, per-team isolation, GPU or region requirements — if you cannot name a dated one, Qovery's rule says stay, and Qovery sells the alternative.
- Measure utilization before you migrate. If your dynos average under half their RAM, your first win is rightsizing on the platform you already pay for — the waste Cast AI measured in clusters exists in dyno fleets too.
Per-instance pricing is the best deal in infrastructure for a side project and a quiet tax on a growing one. The flip from one to five dynos is where $50-a-month convenience becomes a $300- or $1,300-a-month habit — and where a flat-rate box with a real platform on top starts looking less like a hobby and more like a strategy.
Bex.co is the open-source, AI-native Render alternative — push a git repo, get a running HTTPS service on machines you own. Star the repo on GitHub or deploy your first app today.



