Skip to main content

Three 'Top 10 Heroku Alternatives' Guides, Three Self-Crowned Winners: A Line-by-Line Migration Reprice

10 min readDora NodaDora Noda
Share
On this page

On February 6, 2026, Heroku's chief product officer announced the platform was moving to a sustaining engineering model: security and stability only, no new features, no new Enterprise contracts for new customers. In the eight months since, every vendor with a PaaS to sell has published a "Top 10 Heroku Alternatives" guide. Here is the funny thing about three of them: Qovery's ranks Qovery the #1 choice, Kuberns' names Kuberns the best Heroku alternative, and Back4App's compared-and-ranked list puts Back4App first.

A ranking whose author always wins is not an evaluation. It is an ad with a table. The migration anchor that actually works is the opposite shape: a rubric with explicit, re-weightable criteria plus your own workload repriced line by line on every live vendor's current meter. This post gives you both. First the worked math, up front, on a starter-scale fresh stack — one API, one worker, Postgres with 5 GB of data, 50 GB of NA/EU egress, October 2026 list prices:

StackAPI (0.5 vCPU / 512 MB)Worker (same)Postgres + 5 GBEgress (50 GB)Total
Heroku (frozen baseline)$7 (Basic dyno)$7 (Basic dyno)~$9 (Essential-1)$0 (bundled)~$23
Railway (Hobby)~$6 (RAM $5 + CPU ~$1)~$5.50 (RAM $5 + CPU ~$0.50)~$11.75 (RAM $10 + CPU $1 + vol $0.75)$2.50~$26
Render$7 (Starter)$7 (Starter)$7.25 ($6 + $1.25 storage)$3.75~$25
Fly.io (self-managed PG)~$3.19 (shared 512 MB)~$2 (shared 256 MB)~$2.75 (machine ~$2 + vol $0.75)$1.00~$9
Fly.io (Managed Postgres)~$3.19~$2~$39.40 ($38 + $1.40 storage)$1.00~$46
Hetzner CX22-class boxon-boxon-boxself-run, on-box$0 (inside 20 TB)~$5

Read the ranking, then distrust it — that is the entire thesis. Day-one cheapest: Hetzner ~$5, Fly.io self-managed ~$9, then a three-way near-tie (Heroku ~$23, Render ~$25, Railway ~$26), with Fly.io's managed-Postgres answer ~$46 dead last. The frozen platform is price-competitive with its successors at starter scale, and one vendor occupies both second place and last place depending on a single checkbox. No fixed ranking survives contact with that table. A rubric you can re-weight does.

Check my math: every line derived​

A reprice you cannot audit is just another ranking, so here are the inputs. Heroku's row is the frozen list price: Basic dynos at $7 per month each (512 MB, always-on) and Postgres Essential-1 at ~$9 for the 10 GB tier your 5 GB of data requires, since the $5 Essential-0 only holds 1 GB. Bandwidth is bundled. Nothing here has moved since February, which our sustaining-mode breakdown covers in full — the price list froze along with the roadmap.

Railway meters actual consumption per second at $20 per vCPU, $10 per GB of RAM, $0.05 per GB of egress, and $0.15 per GB of volume storage per month, and each period bills the plan fee or usage, whichever is higher — so the $5 Hobby fee vanishes inside a $25.75 usage total. The CPU lines deserve a note: Railway bills measured CPU-seconds, not allocation, and I use the shape from Railway's own worked example (~$1 of CPU for the API and Postgres, ~$0.50 for a mostly-idle worker). A busy API meters more; an idle one meters less. That variability is the point of per-second billing, and also why a single Railway number without a utilization assumption is fiction.

Render is flat per service: $7 Starter for the API, $7 Starter for the worker, Postgres Basic-256mb at ~$6 per month plus about $1.25 for 5 GB of storage (see the per-hour derivation in our September ledger). Egress is where the April 2026 replan bites: roughly 25 GB included, then $0.15 per GB — so 50 GB total means 25 billable gigabytes at exactly $3.75. Solo workspaces pay no platform fee; teams add the flat $25 Pro workspace. Note the replan's direction: included bandwidth shrank while overages went from $30 blocks to metered $0.15 per GB, which makes Render's egress slope the steepest of the managed rows.

Fly.io has two honest answers because it has two Postgres products. Compute is per-second Machine billing: shared-cpu-1x at 512 MB runs ~$3.19 per month continuous, 256 MB ~$2, and NA/EU egress is $0.02 per GB. Self-managed Postgres on a 256 MB machine plus a 5 GB volume costs $2.75 — you run backups and failover. Managed Postgres Basic starts at $38 plus $0.28 per GB of storage ($39.40 with our data), with no hobby tier. Same vendor, same app, $9 versus $46: the database decision outweighs every other line on the invoice combined.

Hetzner's row needs a correction, not just a price. The CX22 this comparison is named for was deprecated on January 1, 2026 and stopped being orderable in the June 15 generation rotation that replaced it with the CX23 — quoting "CX22 at €3.79" today names a plan you cannot buy at a price that no longer applies. The CX22-class successor (2 vCPU, 4 GB RAM, 40 GB NVMe, 20 TB of included traffic) lists around €4.35 per month, roughly $5.

Everything — API, worker, self-run Postgres — fits on the one box, and 50 GB of egress disappears inside the allowance. The honest caveats: single node, no HA, and your ops time is unpriced.

Why three guides crowned three winners​

Return to the opening receipts, because the mechanism matters more than the punchline. Qovery's top-10 table is benchmarked for "reliability, BYOC capability, and 2026 pricing" — criteria its own bring-your-own-cloud product is defined to win. Kuberns' top-10 checked pricing against official pages in July 2026, then concluded the author is best for full-stack backends. Back4App's ranked guide leads with its own CaaS plus BaaS.

None of them states numeric weights, so none of them can be re-weighted. You cannot ask "what if I don't care about BYOC?" because the scoring function is never published. That is what separates a ranking from a rubric: a rubric shows its inputs.

Contrast the third-party evaluations that do. Techsy's benchmarks-and-pricing comparison re-audited every number against live pricing pages in July 2026 and published per-tier winners you can disagree with — our verdict-table audit did exactly that, crown by crown. CheckThat.ai's July 2026 pricing census put the three meters on one table with stated rates. Hacker News threads supply the deployment reality no price list contains: the Coolify-on-a-$5-Hetzner comment that prices the self-hosted row in one sentence, the long DevEx nostalgia threads that explain why teams stay past the point of reason. You can re-weight all of these. You cannot re-weight "our platform is #1."

The most instructive vendor artifact sits in between: Railway's own blog post pricing a frontend plus API plus Postgres stack at $21.95 on Railway versus ~$38 on Render. It is marketing, but it is checkable marketing — every input is printed. I reproduced its Render egress line exactly ($3.75 for 25 billable GB) while building my table.

Its omissions are also visible once you look: no Fly.io row, no Hetzner row, no mention that the managed-Postgres answer elsewhere starts at $38, and CPU lines that assume a quiet API. A vendor worked example with inputs beats a vendor ranking without them — and still loses to your own recompute, because only yours prices the topology you will actually run.

Re-weight it yourself: the winner flips three times​

Here is the demonstration no fixed ranking can give you. Take the table above and read it under three weight profiles a real migrator might hold.

Profile 1: cheapest day one. You are moving a side project or a pre-revenue app and every dollar is yours. Hetzner ~$5 wins, Fly.io self-managed ~$9 is the managed runner-up, and the Heroku-to-Render-to-Railway cluster at ~$23–26 costs roughly triple. The catch is operational, not financial: both winners make Postgres your job — backups, version upgrades, and the 3 a.m. failover belong to you.

Profile 2: egress-heavy. Your API serves 500 GB a month instead of 50. The metered rows jump: Railway gains $22.50 (to ~$48), Fly.io gains $9 (to ~$18), Render gains $71.25 past its included pool (to ~$96) — while Heroku and Hetzner do not move at all. Render goes from mid-pack to most expensive managed row on one variable, which is precisely the tripwire the April replan installed. Any ranking that weights egress at zero — and no vendor ranking tells you its egress weight — hides this flip entirely.

Profile 3: database-serious. You need production-grade Postgres on day one: point-in-time recovery, standby, a support contract. Heroku's Essential-1 (~$9) climbs to Standard-0 ($50), adding $41 — the single biggest tier cliff in the comparison, taking Heroku to $64. Render's Basic climbs to Standard ($20), adding roughly $13. Fly.io's managed answer was already the production shape at $38, so it barely moves — suddenly the most expensive day-one row looks like the honest one. Railway's Postgres stays metered compute plus volume, scaling with the footprint you give it.

Three profiles, three different winners, one table. That is the whole argument for anchoring on a rubric instead of a ranking: the "best Heroku alternative" is not a property of the vendor. It is a function of your weights, and only an evaluation that publishes its inputs lets you substitute your own.

What the freeze actually forces​

The table contains one more surprise worth naming: at starter scale, price is not the reason to leave Heroku. ~$23 for two always-on dynos and 10 GB of Postgres is competitive with every managed successor — the migration is not a rescue from an absurd bill. What the freeze forces is everything around the bill: the Postgres tier cliff ($9 to $50 the moment you need production), dynos that jump $7 to $25 per formation member, sharp edges that will never improve (the 30-second router timeout, the AWS-only US/EU region map), no Enterprise contract to buy when your security review demands one, and the stack-EOL clocks that keep ticking under a shrinking team. Our stay-plan-move framework works through those clocks in detail; the short version is that sustain mode raised the priority of the decision without raising its urgency — except for teams already at a wall.

So the decision rule for the migrator this post is written for: reprice your actual topology, not the marketing page's — both Postgres answers, your egress, your seat count — then weight the table by what breaks you first. If bandwidth breaks you, the flat rows win. If database operations break you, price the managed tier, not the starter row. And if a guide's scoring function is unpublished, treat its crown as an ad and move on. The best Heroku alternative for your stack is computable. Compute it.

Bex.co is the open-source, AI-native Render alternative — push a git repo, get a running HTTPS service on machines you own, with flat-rate economics instead of a meter on every dimension. Star the repo on GitHub or deploy your first app today.

Related articles

Check your move before you migrate

Free browser tools: check a render.yaml or your Render scripts against bex, or turn a Heroku app or docker-compose.yml into a draft render.yaml. Nothing you paste leaves your browser.

Open the migration tools