Railway's own pricing page now says the quiet part out loud: every gigabyte of RAM your services hold costs about $10 a month, and every vCPU costs about $20 a month. Those aren't overage penalties — they're the canonical monthly constants behind Railway's per-second rates. And they turn the $20 Pro plan from a price into a floor: the moment your always-on footprint clears $20 of usage, every additional unit of headroom is its own line item. One developer, profiled in a 2026 PaaS cost comparison, budgeted $20 on Pro and opened a bill for $286.
So let's do the math nobody does before the bill arrives. Line by line, what does a modest multi-service app — an API, a worker, a cron job, a database — actually cost on Railway once overage kicks in? And at what exact headroom point does "just bump the plan" quietly become the more expensive default next to one owned Hetzner box?
The short answer: the crossover sits at roughly 2 vCPUs and 2 GB of RAM. Anything past that, and you're paying more than a dedicated server with ten times the headroom. Here's the full recompute.
The rate card, decoded
Railway bills per second for CPU, memory, and disk, plus per-GB egress and object storage. The per-second rates are precise but unreadable, so Railway publishes the monthly equivalents — the same rate stretched over a full billing month of always-on usage:
| Resource | Per-second rate | ≈ Per month |
|---|---|---|
| Memory | $0.00000386 / GB-s | $10 / GB |
| CPU | $0.00000772 / vCPU-s | $20 / vCPU |
| Volumes | $0.00000006 / GB-s | $0.15 / GB |
| Egress | $0.05 / GB (services) | — |
Two plan facts matter for everything below. Hobby costs $5 a month and includes $5 of usage; Pro costs $20 and includes $20. The plan fee is a spending floor, not a cap — usage beyond the included credit is billed at the rates above.
And billing is genuinely per-second, so a stopped service costs nothing. That last fact is Railway's best defense, and we'll give it full credit where it's due.
Line by line: a modest app on Railway
Take the most ordinary production footprint imaginable: a stateless API, a background worker, a nightly cron job, and a managed Postgres, moving about 100 GB of egress a month. Nothing exotic, no GPU, no multi-region heroics. On Pro, with everything always on except the cron job:
| Service | Footprint | Monthly cost |
|---|---|---|
| API | 1 vCPU + 2 GB RAM | $20 + $20 = $40 |
| Worker | 1 vCPU + 2 GB RAM | $20 + $20 = $40 |
| Postgres | 1 vCPU + 4 GB RAM | $20 + $40 = $60 |
| Cron (5 min/day) | 0.5 vCPU + 0.5 GB, metered per second | ≈ $0.05 |
| Postgres volume | 10 GB | $1.50 |
| Egress | 100 GB × $0.05 | $5.00 |
| Total usage | ≈ $146.55 |
Against the $20 included credit, the bill lands at about $147 a month: the $20 plan fee plus roughly $127 in overage.
Notice what the table is really saying. The cron job — the only workload that isn't always on — costs less than a dime, exactly as per-second billing promises. Everything else pays the full monthly constant, because always-on containers don't benefit from per-second metering at all. The API, the worker, and the database are three quiet $40–$60 subscriptions wearing a usage-based costume.
This is also where the $286-style bill shock comes from. Nothing in this footprint looks extravagant — 3 vCPUs and 8 GB of RAM is a small staging server by any self-hosting standard — yet it costs seven times the plan fee that anchored the budget.
The other side: one AX42
Now the same footprint on owned hardware. Hetzner's current price-performance sweet spot is the AX42: a Ryzen 7 PRO 8700GE (8 cores / 16 threads), 64 GB of DDR5 ECC RAM, and 2× 512 GB NVMe, for roughly €55 a month — about $60 after the June 2026 price adjustment. Traffic on dedicated servers is unmetered at 1 Gbps, subject to a fair-use policy that only bites at truly extreme volumes.
Our modest app — 3 vCPUs, 8 GB of RAM, 10 GB of disk — occupies well under a fifth of that box. CPU-wise it's under 20% of available threads; memory-wise about an eighth. The remaining headroom absorbs staging environments, preview deploys, Prometheus, backups, and the next three services before you'd ever think about a second machine.
So the comparison is stark: $147 a month on Railway versus ~$60 for one box that barely notices the load. The dedicated server isn't just cheaper — it's cheaper while carrying roughly eight times the RAM and five times the CPU the app uses. Railway's per-unit rates are fair metered prices; they just meter a footprint that dedicated hardware treats as a rounding error.
The crossover point, with sensitivity
The break-even math falls straight out of the rate card. One AX42 costs ~$60 a month. On Railway, $60 of always-on usage is:
- 2 vCPUs ($40) + 2 GB of RAM ($20) = $60
That's the line. A footprint much past 2 vCPUs and 2 GB of always-on usage costs more on Railway than the entire dedicated box — while using a small fraction of its capacity. To make it concrete across workload sizes (all on Pro, all always-on except where noted):
| Footprint | Railway/mo | One AX42 (~$60) | Winner |
|---|---|---|---|
| Side project: 0.5 vCPU, 1 GB, 20 GB egress | ~$21 | ~$60 | Railway — cheaper and zero ops |
| Modest app above: 3 vCPU, 8 GB, 100 GB egress | ~$147 | ~$60 | Hetzner — 2.4× cheaper |
| Growing: 6 vCPU, 16 GB, 500 GB egress, 50 GB volumes | ~$313 | ~$60 (still fits) | Hetzner — 5× cheaper |
Two sensitivities sharpen the picture. First, egress: at 1 TB a month, Railway's $0.05/GB adds $50 — nearly the whole Hetzner box — on top of compute, while the dedicated server's unmetered gigabit absorbs it. Egress-heavy apps cross the line even earlier.
Second, burstiness cuts the other way: workloads that genuinely sleep — preview environments, batch jobs, the cron job in our table — pay pennies on Railway and would idle on dedicated iron. The crossover math only holds for always-on footprints, which is exactly what production APIs, workers, and databases are.
What the math doesn't include
A cost comparison that stops at the invoice is a sales pitch, so here's the honest ledger for the Hetzner side:
- Ops labor. Railway deploys from
git push, provisions Postgres in a click, and handles TLS, rollbacks, and log retention. The $60 box needs an OS, a deployment story, database backups you actually test, and someone on call. For a solo developer, that labor dwarfs any invoice delta. - Elasticity. Railway scales to zero and bursts past any single machine's ceiling; our table's cron row is the proof. A dedicated box is fixed capacity — great when you're under the ceiling, a migration project the day you outgrow it.
- Failure domains. One box is one blast radius: disk, PSU, datacenter. Railway runs across its own datacenters (it completed a move off GCP onto Railway-operated infrastructure in 2025) with replicas and managed failover.
- Egress fine print both ways. Railway's metered egress is at least explicit; Hetzner's "unmetered" traffic carries a fair-use policy that has produced warning notices at extreme volumes. Neither side gives away bandwidth unconditionally.
The fair conclusion isn't "Railway is a ripoff" — it's that Railway's pricing is two different products wearing one rate card. For bursty, spiky, sleepable workloads, per-second billing is genuinely cheap and operationally free. For always-on production footprints past a couple of vCPUs, you're paying premium metered rates for capacity that dedicated hardware sells at commodity prices.
The takeaway
Railway did its customers a favor by publishing those monthly constants. $10 per GB and $20 per vCPU turn every architecture decision into arithmetic you can do in your head: count your always-on vCPUs, count your always-on gigabytes, and the moment the total clears ~$60, one Hetzner box is doing the same job for less money with most of its capacity still idle.
That doesn't mean everyone should rack a server. It means the decision has a number now — 2 vCPUs and 2 GB — and teams should know which side of it they're on before the bill tells them.
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.



