Skip to main content

Railway vs Render vs Fly.io Re-Benchmarked: What the July 2026 Numbers and Render's New Billing Lines Mean for the Self-Host Math

10 min readDora NodaDora Noda
Share
On this page

On February 6, 2026, Salesforce moved Heroku into sustaining engineering: no new features, no new enterprise contracts, maintenance only. Thousands of teams started comparison-shopping, and one comparison absorbed most of that traffic: Techsy's Railway vs Render vs Fly.io: Benchmarks & Pricing (2026), with every price, region count, and plan name re-checked against live pages on July 19, 2026.

The pricing half of that comparison has been audited exhaustively since — including on this blog. The halves nobody has put under one roof are the benchmark half (deploy speed, cold starts, regions, scale-to-zero) with an October status stamp, and the fallout from Render's April 23 team-pricing restructure: not just the flat seat fee everyone covered, but the two genuinely new billing lines it introduced. Those lines, plus the benchmarks, are what actually decide the self-host math. Here is the table first, then the bill.

The benchmark table, July 19 numbers with October status​

Techsy's figures are theirs, re-verified July 19. The status stamps are mine, checked against each vendor's docs and changelogs in October.

BenchmarkRailwayRenderFly.ioOctober status
Time to first deploy~2 min, zero-config Railpack3–5 min, dashboard-first5–10 min, you write fly.tomlHolds
Cold startN/A — paid plans never scale to zero30–60s on the free tier (15-min spin-down)300ms–2s on Machines wakeHolds
Regions4, on second-gen Metal5 (Virginia newest)18Holds
Scale-to-zeroNo (stays warm on paid)Free tier onlyYes, auto_stop_machinesHolds
Managed PostgresTemplate + experimental HAPITR, replicas, HA standbyExplicitly unmanaged; Managed v2 in betaRailway still experimental; Fly softening
Startup price (~500 req/min)~$25–40/mo~$50–60/mo~$20–35/moRoughly holds; Render plan IDs redrawn
Scale price (10K+ req/min)~$250–400/mo~$350–500/mo~$150–250/moHolds; the gap is still egress

Two things stand out before any prose. First, the performance rows barely moved in three months — benchmarks are stickier than price lists. Second, the rows that did move all sit on the database and billing side, which is exactly where the self-host decision lives. Take each in turn.

What moved since July 19​

Render redrew the compute ladder on August 26. Memory-optimized tiers at every step, a new 12-CPU tier reaching 96 GB of RAM, and spec-based plan IDs (2c-8g) replacing the old Starter-to-Pro-Ultra names — check the Render changelog for the rollout. The entry price points held, so Techsy's tier ranges still scan, but any bill built on the old plan names needs re-reading against the new IDs. This was the "coming soon: high-memory compute" line from the April announcement, delivered.

Render's legacy plans are gone for everyone. The April 23 replan gave legacy workspaces until August 1 to migrate; as of that date, every workspace is on Hobby ($0), Pro ($25/mo), Scale ($499/mo), or Enterprise. The old per-seat prices now exist only in old invoices. Any comparison still quoting $19/seat is describing a product you can no longer buy.

Railway's HA Postgres is still experimental. The March 13 changelog shipped one-click Patroni-based HA to Priority Boarding with an explicit "not production-ready, don't upgrade a production database to it yet" — and no GA announcement has superseded it. Prisma's October 8 platform check still lists Railway backups, point-in-time recovery, high availability, and PgBouncer pooling as opt-in rather than managed defaults. Reliability context for the benchmark rows: Northflank reports five major Railway incidents between November 2025 and May 2026 including an 8-hour full outage, against published availability targets of 99.9% (Hobby), 99.99% (Pro), and 99.999% (Enterprise). Fast deploys are worth less when the platform underneath them has that kind of half-year.

Fly.io exited GPUs on July 31 — twelve days after Techsy's re-verification. The deprecation notice, foreshadowed by Fly's own "We Were Wrong About GPUs" post, means inference workloads have no Fly.io column at all now. The offsetting softening: Managed Postgres v2 entered beta in May 2026, so the "explicitly unmanaged" row is aging out — but beta is not GA, and the self-run Fly Postgres most teams still operate carries the same you-own-recovery warning it always has.

The seat wars ended, and one team size pays more​

The April restructure's headline was simple: no seat fees. Pro at $25/mo and Scale at $499/mo include unlimited members, replacing Professional at $19/member/mo and Organization at $29/member/mo. The before-and-after, scored on the old Professional rate:

Team sizeBefore (Professional, $19/seat)After (Pro, $25 flat)
1 engineer$19/mo$25/mo — pays more
5 engineers$95/mo$25/mo
20 engineers$380/mo$25/mo

The 5- and 20-person rows are why Render says 75% of paying customers pay the same or less. The 1-person row is the under-reported member of the other 25%: a solo dev who was on Professional now pays $6/mo more for the workspace before any compute. (Teams needing SSO, SCIM, or HIPAA land on Scale at $499/mo — compare Organization's $29/seat, which crossed $499 at 18 seats — so large regulated teams roughly break even while small regulated teams pay up.)

Seats are now $0 of marginal cost on Railway Pro too ($20/workspace with unlimited members), so the seat line no longer separates the vendors. What separates them is what Render added to the invoice in exchange.

The new billing lines: bandwidth granularity and the domain tax​

Killing seat fees removed the subsidy that used to fund generous bandwidth allowances, so Render repriced bandwidth the same day: overages moved from $30-per-100GB blocks to metered $0.15/GB, and the included allowances shrank to 5 GB (Hobby), 25 GB (Pro), and 1 TB (Scale), with private-link traffic at the much lower $0.03/GB. The unit rate equals the old block rate ($30/100 GB is $0.15/GB) — the change is granularity plus a smaller included base, and those two cut opposite ways.

Granularity helps the slightly-over. Under the old blocks, 30 GB of overage cost a full $30 block; metered, it costs $4.50. But past roughly one old block of overage, you pay the same rate on a smaller included base — pure increase. Worked on Pro's 25 GB allowance:

Monthly egressRender (over 25 GB @ $0.15)Railway (@ $0.05/GB)Fly.io NA/EU (@ $0.02/GB)
100 GB$11.25$5$2
500 GB$71.25$25$10
1 TB~$150~$51~$20

Render's overage rate is 3x Railway's and 7.5x Fly.io's NA/EU rate — and this is the line that decides Techsy's Scale crown, where the hosted gap ($150–250 vs $350–500) is almost entirely bandwidth. (Fly.io's own tripwire, in its pricing docs: traffic in Africa or India bills at $0.12/GB, 6x its headline rate.)

The second new line is smaller per unit and stranger in shape: custom domains past the included count bill at $0.25/domain/month, with 15 included on Pro per Render's own migration notice. Fifteen is plenty for one product with a staging twin. It is nothing for a multi-tenant SaaS that issues a domain per customer:

Tenant domains on ProDomain line
15 (a product + staging + previews)$0
25 (10 extra)$2.50/mo
115 (100 extra)$25/mo — a second Pro fee
515 (500 extra)$125/mo — before a single container boots

A 500-tenant platform pays $25 workspace + $125 domains + compute. Nobody's benchmark crown captures that, because benchmarks score one app, not five hundred hostnames. If you run multi-tenant custom domains, this line — not the compute ladder — is the first row of your Render bill to model.

The self-host column, with the ops labor priced in​

Same stacks on owned Hetzner capacity, at post–June 15 repricing lists (USD prices Hetzner publishes directly, IPv4/VAT extra), whole stack per tier on one box:

Same benchmarkOwned Hetzner box
Startup stack (~500 req/min)~$10/mo (CX33 shared, $9.99)
Growth stack (~2K req/min)~$18/mo (CX43 shared, $18.49)
Scale stack (10K+ req/min)~$35/mo (CX53-class cloud, $34.99; ~$70 as an app/data pair)
Egress at every row above$0 (the 20 TB EU allowance swallows all three)
Seats, any team size$0
Custom domains, any count$0 (your DNS, your certs)
Deploy speedBuildpack git-push matches Railway-class DX — the bar a self-hosted PaaS must clear
Scale-to-zeroNo savings available: flat hardware bills flat idle or busy
RegionsOne box, one region — Fly.io's global row is unmatchable
PostgresSelf-run: backups, PITR, and 3 AM pages are yours

The honest version of this column prices the last row. A ~$35/mo box fleet plus two on-call hours a month valued at a conservative $100/hr is ~$235/mo — at which point Render's managed Postgres premium is the cheapest on-call engineer you will ever hire, and the managed column wins for data-critical teams without platform practice.

But observe what the labor math does to the new billing lines: domains and seats cost $0 of ops labor at any count, and egress inside 20 TB costs $0 of attention. The ops burden concentrates entirely in Postgres and failover. Automate those two (declarative fleet + tested backup/restore), and the marginal ops cost of the next tenant, domain, or gigabyte is ~$0 — which is exactly where the hosted meters keep running. That is the self-host pitch in one sentence: the box wins 2–5x on steady, single-region workloads the day your Postgres automation is boring.

Verdict: pick by workload shape, not by crown​

Your workloadHonest answer
Hobby / idle-heavy (10% duty cycle)Render's $0 free tier if you tolerate 30–60s cold starts; Fly.io scale-to-zero (~$1–2/mo) if you don't
Steady, single-region, Startup tier and upThe box: 2–5x under every hosted number
Global / latency-sensitiveFly.io's 18 regions — neither the box nor the single-region vendors match it
Multi-tenant, domain-heavyModel Render's $0.25/domain line first; the box charges $0 per hostname
Data-critical with no ops practiceRender's managed Postgres — the premium is an on-call hire, not a tax

Techsy's July re-verification holds up well in October: the benchmarks stuck, the tier ranges scan, and the crowns survive. What changed is all on the invoice — Render's flat seats, metered bandwidth, and per-domain line — plus one exit (Fly.io GPUs) and one still-experimental asterisk (Railway HA). Score your workload's shape against the rows above before you score vendors against each other, and add the fourth column before you sign: the meter you stop paying is worth more than the crown you pick.

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.

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