Railway hasn't had a real free tier since August 2023. What replaced it is a one-time $5 credit that burns down over 30 days and then never comes back — after that, you're on a "Free" plan that isn't free ($1/month with a matching $1 of usage) or the $5/month Hobby plan most small projects actually land on. Here's the number that plan's marketing doesn't lead with: a single bare-bones 512MB web service already costs $6-9/month in Railway's metered RAM and CPU alone, before a database or a background worker enters the picture. Add both — the web-plus-worker-plus-Postgres shape almost every real hobby app actually has — and a typical month lands around $25, with a realistic range of $12 to $51 depending on load. The identical stack on a single Hetzner box costs a flat $6.50/month, metering included.
That's the whole recompute in one sentence: Railway's advertised $5/month plan and the bill a real three-service app actually generates aren't the same number, and the gap is wide enough that it's worth walking through exactly where it comes from — and what "no free tier, ever" says about the economics underneath it.
The Trial-Credit Bait and Switch
Railway's original free tier gave every account $5/month in recurring compute credit, no strings attached. It didn't survive contact with the internet. Crypto miners and torrent seedboxes farmed that recurring credit hard enough that Railway killed the whole tier in August 2023, according to the company's own migration-guide postmortem.
What replaced it wasn't a smaller recurring credit — it was a one-time $5 grant on a 30-day clock. Spend it or let the clock run out, and the account drops to a plan Railway calls "Free" that costs $1/month and includes $1 of usage. Calling a $1/month plan "Free" is the tell: there is no tier left on Railway that doesn't require a card on file and a nonzero bill.
Three years on, that credit still hasn't come back, and nothing in Railway's public roadmap suggests it will. Recurring free compute turned out to be a standing invitation to abuse, not a growth lever, and platforms that learn that lesson tend not to unlearn it.
How Railway Actually Bills Usage
Once the trial credit is gone, Railway bills the way most usage-based PaaS platforms do: a flat subscription fee that's credited against metered consumption, not stacked on top of it. Railway's own pricing documentation lists the exact per-resource rates:
| Resource | Rate |
|---|---|
| CPU | $20 / vCPU / month ($0.000463 / vCPU-minute) |
| RAM | $10 / GB / month ($0.000231 / GB-minute) |
| Network egress | $0.05 / GB |
| Volume storage | $0.15 / GB / month |
| Hobby plan | $5/month subscription, includes $5 of the above usage |
The "includes $5 of usage" part matters: if your metered consumption for the month is $3, you still pay the $5 subscription and nothing more. If it's $7, you pay $7 total — the $5 subscription covers the first $5, and you're billed the $2 difference on top. Past the included $5, your bill is your usage. That's the mechanism that makes the sticker price and the real price diverge as soon as a project needs more than one lightweight service.
Reconciling the $6-9 Number
Do the arithmetic for the smallest possible always-on deployment — one web service, 512MB of RAM, no database, no background job — and you land close to what gets quoted as "Railway's real cost." Holding 0.5GB of RAM for a full month is 0.5 × 43,200 minutes × $0.000231/GB-minute ≈ $5 in RAM alone. Add whatever sliver of CPU that service actually burns while mostly idling (roughly 0.05-0.2 vCPU on average for a lightly-trafficked Node or Python app) and the total lands at $6-9/month — in line with the RAM-dominated napkin math everyone quotes.
That number is real. It's also not a real app. A single stateless web service with no database and no background job is a demo, not a hobby project anyone ships. The moment you add the two things almost every actual app needs — somewhere to persist data, and somewhere to run a scheduled job or a queue worker — the bill stops being a RAM calculation and starts being three separate metered services added together.
The Real Bill: Web + Worker + Postgres
Here's that recompute at three load levels, using Railway's own published rates end to end. Every service pays for its held RAM and its average CPU utilization independently; Postgres additionally pays for its data volume.
Light — a genuinely quiet project: one web service, no separate worker (cron runs inline), a small Postgres instance.
| Service | RAM | CPU (avg) | Storage | Egress | Cost |
|---|---|---|---|---|---|
| Web | 0.5 GB → $5.00 | 0.15 vCPU → $3.00 | — | — | $8.00 |
| Postgres | 0.25 GB → $2.50 | 0.05 vCPU → $1.00 | 0.5 GB → $0.08 | — | $3.58 |
| Egress | — | — | — | 2 GB → $0.10 | $0.10 |
| Total | ≈ $11.70/month |
Typical — the shape most real hobby apps actually run: web service, separate background worker, a Postgres instance holding real data.
| Service | RAM | CPU (avg) | Storage | Egress | Cost |
|---|---|---|---|---|---|
| Web | 0.5 GB → $5.00 | 0.25 vCPU → $5.00 | — | — | $10.00 |
| Worker | 0.25 GB → $2.50 | 0.10 vCPU → $2.00 | — | — | $4.50 |
| Postgres | 0.5 GB → $5.00 | 0.25 vCPU → $5.00 | 1 GB → $0.15 | — | $10.15 |
| Egress | — | — | — | 5 GB → $0.25 | $0.25 |
| Total | ≈ $24.90/month |
Heavy — real but busy: more headroom on every service, meaningfully more egress.
| Service | RAM | CPU (avg) | Storage | Egress | Cost |
|---|---|---|---|---|---|
| Web | 1.0 GB → $10.00 | 0.50 vCPU → $10.00 | — | — | $20.00 |
| Worker | 0.5 GB → $5.00 | 0.25 vCPU → $5.00 | — | — | $10.00 |
| Postgres | 1.0 GB → $10.00 | 0.50 vCPU → $10.00 | 2 GB → $0.30 | — | $20.30 |
| Egress | — | — | — | 20 GB → $1.00 | $1.00 |
| Total | ≈ $51.30/month |
All three tiers blow through the $5 credit bundled into the Hobby plan, so in every case the bill is effectively just the usage total. The "typical" three-service hobby app — the one the original $5/month plan implicitly promises — actually runs almost 5x the sticker price, and the honest range is $12 to $51 depending on how much the app actually does.
The Hetzner Side: One Box, No Meter
Run the identical stack — web container, worker container, Postgres container, all three in one docker-compose.yml — on a single Hetzner Cloud CX23 (2 vCPU, 4GB RAM, 40GB SSD, 20TB of included traffic) and the bill is flat: €5.49/month, roughly $6.50 at current exchange rates, per Hetzner's own June 15, 2026 price-adjustment documentation.
Worth being direct about that price: it's already gone up twice in 2026 — an across-the-board April adjustment Hetzner attributed to a spike in DRAM contract prices, then a second repricing on June 15 that renamed and re-tiered the whole shared-vCPU line (the CX23 replaces what used to ship as the CX22). Even after both hikes, it's a single flat number with 20TB of bandwidth bundled in — no per-GB egress meter, no per-vCPU-minute meter, no per-GB-of-RAM-held meter running underneath it. The ARM-based CAX11 (same specs, Ampere cores) runs €5.99/month if your images build for ARM.
There's no sensitivity table needed on the Hetzner side, and that's the point: the box costs the same whether the Postgres instance is quiet or the worker is churning through a queue. The variable that made Railway's bill swing from $12 to $51 doesn't exist here — you provisioned fixed capacity, and you can run it flat-out without a bill that follows.
The Delta and What It Actually Means
| Railway (Hobby) | Hetzner CX23 | |
|---|---|---|
| Light usage | $11.70/mo | €5.49 ($6.50)/mo |
| Typical usage | $24.90/mo | €5.49 ($6.50)/mo |
| Heavy usage | $51.30/mo | €5.49 ($6.50)/mo |
| Multiple | 1.8x – 7.9x | 1x (flat) |
That gap isn't a trick of picking an unflattering Railway config — it's what metered-per-resource billing does structurally once an app has more than one service. The honest counterpoint is that Railway's $25/month typical bill buys real things a bare Hetzner box doesn't hand you for free: managed TLS, zero-downtime deploys from a git push, database backups, a dashboard, and no SSH session required to keep any of it running. Self-hosting on a CX23 means you're the one running Docker Compose (or Kubernetes), issuing your own certificates, and writing your own backup cron job. That's real work, and it's the actual tradeoff — not a hidden gotcha, just the other half of the sentence "self-hosting is cheaper."
Closing that gap without giving up the box is exactly what a self-hosted PaaS is for. Bex.co runs on Hetzner-class machines you own — push a git repo, get an HTTPS service with managed TLS and zero-downtime deploys, without a per-vCPU-minute or per-GB meter running underneath any of it. It doesn't manage your database for you (run your own CNPG/Postgres instance, same as you would on a bare box) — but the deploy-from-git layer that usually justifies Railway's meter is the part it replaces.
The Durable Signal
The specific dollar figures here will drift — Railway's rates and Hetzner's prices are both numbers a company sets, not physical constants, and Hetzner has already repriced twice in 2026. What doesn't drift as easily is the structural fact underneath the $5-credit-then-nothing history: a platform that tried a recurring free tier, watched it get farmed by abuse, and replaced it with a one-time trial that's never been reinstated in three years is telling you something about its own unit economics. Metered per-resource billing isn't a pricing preference — it's what a hosted platform has to do to stay solvent once free compute stops being a marketing line item and starts being a real cost center. Owning the box doesn't relocate that meter to a cheaper vendor. It removes the meter.
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.
Sources
- Railway Pricing Plans — Hobby/Pro subscription fees and included usage credit
- Railway Pricing — per-resource metered rates (CPU, RAM, egress, volume)
- Railway Migration Guide for Pricing and Plans, 2023 Edition — the August 2023 free-tier removal
- Railway Free Trial docs — the one-time $5/30-day trial credit mechanics
- Hetzner Price Adjustment, June 15 2026 — CX23 and CAX11 post-hike pricing
- Hetzner Cloud cost-optimized plans — CX23/CAX11 specs and included traffic