Skip to main content

Railway Killed Its Free Tier for a One-Time $5 Credit: What a Real Hobby App Costs on Railway vs a Hetzner Box

10 min readDora NodaDora Noda
Share

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:

ResourceRate
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.

ServiceRAMCPU (avg)StorageEgressCost
Web0.5 GB → $5.000.15 vCPU → $3.00$8.00
Postgres0.25 GB → $2.500.05 vCPU → $1.000.5 GB → $0.08$3.58
Egress2 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.

ServiceRAMCPU (avg)StorageEgressCost
Web0.5 GB → $5.000.25 vCPU → $5.00$10.00
Worker0.25 GB → $2.500.10 vCPU → $2.00$4.50
Postgres0.5 GB → $5.000.25 vCPU → $5.001 GB → $0.15$10.15
Egress5 GB → $0.25$0.25
Total≈ $24.90/month

Heavy — real but busy: more headroom on every service, meaningfully more egress.

ServiceRAMCPU (avg)StorageEgressCost
Web1.0 GB → $10.000.50 vCPU → $10.00$20.00
Worker0.5 GB → $5.000.25 vCPU → $5.00$10.00
Postgres1.0 GB → $10.000.50 vCPU → $10.002 GB → $0.30$20.30
Egress20 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
Multiple1.8x – 7.9x1x (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

Related articles

Run this on infrastructure you own

bex is the open-source, AI-native Render alternative — push a git repo and get a running HTTPS service on your own machines.

Get started with bex