Every few months, the same question resurfaces on Hacker News and Reddit: is Railway still worth it for a side project now that the free tier is gone? The premise is three years old — Railway retired its permanent free tier in 2023 and replaced it with a one-time $5 trial credit — but the confusion is evergreen, because the $5 figure keeps getting quoted as if it were a monthly allowance. It is not. It is a single grant with an expiry date, and what happens after it runs out is the whole story.
Here is the verdict up front, for the most typical solo-developer topology there is — one web service, one background worker, one Postgres, all always-on:
| Option | Monthly cost | $0 dormancy state? |
|---|---|---|
| Railway Hobby after the trial credit | ~$23–28/mo all-in | No — $5/mo minimum plus metered usage |
| Same topology on one Hetzner CX22 | N/A — the box is yours whether it idles or burns | |
| Render Starter equivalent (for reference) | ~$20/mo paid, $0 sleeping free tier | Yes — free web tier sleeps after 15 min idle |
The self-hosted stack costs roughly a fifth of the Railway bill, every month, forever. But the raw delta is not the interesting part. The interesting part is the floor: Railway is the only platform of the three where the price of "my app exists but nobody is using it this month" cannot go to zero. That changes hobbyist behavior in ways a per-GB price list does not capture.
What the $5 trial credit actually is
Railway's pricing has three layers, and conflating them is where most estimates go wrong. The Trial plan grants a one-time $5 usage credit with no credit card required, expiring after roughly 30 days. It is a taste, sized to cover one to two weeks of a continuously running small service — enough to deploy, click around, and decide.
When the trial expires, two paths open. The Free plan costs $0 per month and grants a recurring $1 per month usage credit, capped at roughly 0.5 GB RAM and 1 vCPU per service with a handful of services per project. A three-service topology (web, worker, Postgres) cannot fit inside $1 of usage — a single 512 MB always-on service burns about $5 per month in RAM charges alone, as the next section shows. The Free plan is a parking spot for one tiny experiment, not a home for an app.
The realistic path is the Hobby plan: $5 per month, which includes $5 of usage credit, with everything above that billed metered. Pro is $20 per seat per month plus usage. So the minimum possible Railway bill for a real app is $5 per month before it serves a single request — and the meter starts from there, not from zero.
Note the asymmetry with Render, which still offers a no-credit-card free tier for web services (they sleep after 15 minutes idle, with a 30–50 second cold boot), though its free Postgres expires after 30 days and is explicitly preview-only. Railway has no sleeping state at all: a service is either running and billing, or deleted.
Line by line: where the ~$25 Railway month comes from
Railway bills actual per-second usage, not reserved limits, at published rates of roughly $10 per GB of RAM per month, $20 per vCPU per month, $0.05 per GB of egress, and $0.15 per GB-month of volume storage. The plan fee's included credit offsets the total. For a quiet but always-on side project, CPU averages stay low — the bill is dominated by RAM, which accrues relentlessly for every hour a service exists. That is the first wall every estimator hits.
Here is the worked example, using steady-state allocations a solo developer would recognize:
| Line item | Assumption | Monthly math |
|---|---|---|
| Web service RAM | 512 MB always-on | 0.5 GB × $10 = $5.00 |
| Web service CPU | ~0.1 vCPU average (quiet app) | 0.1 × $20 = $2.00 |
| Worker RAM | 512 MB always-on | 0.5 GB × $10 = $5.00 |
| Worker CPU | ~0.05 vCPU average (background jobs) | 0.05 × $20 = $1.00 |
| Postgres RAM | 1 GB always-on (the realistic minimum with buffers) | 1.0 GB × $10 = $10.00 |
| Postgres CPU | ~0.05 vCPU average | 0.05 × $20 = $1.00 |
| Postgres volume | 5 GB | 5 × $0.15 = $0.75 |
| Egress | ~20 GB | 20 × $0.05 = $1.00 |
| Gross usage | ~$25.75 | |
| Hobby plan | $5/mo incl. $5 credit | $5 + $20.75 overage |
| Total out of pocket | ~$25.75/mo |
Two honest caveats cut in opposite directions. If the app is truly idle — a staging project you barely touch — actual CPU rounds down toward zero and the bill compresses to the RAM floor of about $20 plus the plan mechanics, call it ~$20–22. If the app has real traffic, CPU averages climb and the same topology lands at $35–50 with no code changes, because the meter is linear in consumption. Community estimates cluster exactly here: small databases alone are routinely reported at $7–22 per month, and app-plus-Postgres at ~1 GB each is about $20 in RAM charges before CPU is counted.
The structural point: on Railway, growth in usage is growth in bill, starting from dollar one above the credit. There is no flat region.
The other side of the ledger: one €4.49 box
Hetzner's CX22 — 2 shared vCPUs, 4 GB RAM, 40 GB NVMe, 20 TB of included traffic — moved to €4.49 per month after the April 2026 price adjustment. That single box holds the entire example topology as containers with room to spare: the web service, the worker, and Postgres with a full gigabyte of buffers fit inside 4 GB of RAM, and a side project's traffic is a rounding error against 20 TB.
| Line item | Assumption | Monthly math |
|---|---|---|
| CX22 cloud server | 2 vCPU / 4 GB / 40 GB NVMe / 20 TB traffic | €4.49 (~$5) flat |
| Web + worker + Postgres | Containers on the same box | $0 marginal |
| Volume snapshots / backups | Hetzner snapshots + off-box backup | ~€0–2 |
| Egress | Included up to 20 TB | $0 |
| Total |
The pricing shape is the inverse of Railway's: flat until the box saturates, then a step function — a second €4.49 box, not a steeper slope. Traffic that would add dollars on Railway's $0.05-per-GB egress (100 GB of egress is $5 there, nothing here) disappears into the 20 TB allowance. For the Cluster API angle this audience cares about: the same three-container topology becomes a declarative workload, and adding a second machine is node provisioning, not a pricing-tier event. The platform work is real — you own updates, backups, and the database's bad days — but the marginal cost of the next deploy is zero until hardware says otherwise.
Why "no free tier at all" is a harder floor than a shrinking one
Price-per-unit comparisons miss the behavioral tax. A metered free tier that merely shrinks — Render's sleeping web services, Fly.io's near-zero idle machines — preserves a $0 dormancy state: the project exists, costs nothing, and wakes up when you do. Railway's floor is $5 per month plus whatever the meter says, for every project, forever. Three consequences follow.
First, experimentation gets a budget committee. On a $0-floor platform, spinning up a weekend idea and abandoning it for two months costs nothing. On Railway, every live project is a subscription, so developers learn to delete rather than pause — and deleted projects don't get revived. The $5 trial credit papers over this for the first month, which is precisely why its one-time nature surprises people: month two is when the floor appears.
Second, preview environments multiply the baseline. Each open pull request that mirrors the stack costs roughly N times production on Railway — three open PRs with full environments is about four times the baseline bill. On a flat-priced box, preview namespaces land on hardware already paid for and cost nothing until the box is full. Usage-based pricing is fair per unit and punishing per workflow.
Third, the sensitivity runs one way. A quiet month compresses the Railway bill to the ~$20 RAM floor but never below it; a busy month expands it without bound while the Hetzner box stays €4.49 until saturation. The crossover is not a point but a widening gap: the busier the app gets, the more the flat price wins, and the quieter it gets, the more the missing $0 state stings.
None of this means Railway is a bad deal in absolute terms. The honest cases for paying it are operational, not financial: zero node maintenance, no 3 a.m. Postgres pages, the fastest git-push-to-URL loop in the category, and no backup strategy to design.
For a team billing client hours, $25 a month to never think about a box is cheap. The audit only says what it says: you are renting freedom from operations at roughly a 4–5x markup over the hardware, with no offseason rate.
The bottom line
Railway's $5 trial credit is a genuinely good on-ramp — no credit card, enough runway to ship something real. Just read it as what it is: a one-time grant, not a tier. Once it expires, a web service plus a worker plus Postgres settles around $23–28 per month on Hobby, floored by always-on RAM charges, with traffic and preview environments pushing only upward.
The same topology fits on a €4.49 Hetzner box with 20 TB of traffic included. The gap is ~5x at rest and wider under load — and unlike Render or Fly.io, there is no $0 state to retreat to in a quiet month. Price the floor, not just the units: the cheapest platform for a hobbyist is the one where an idea can afford to sit idle.
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.



