NotCheapMAKE EVERY CREDIT COUNT

Railway vs Render vs Fly.io: Real 24/7 App Hosting Cost for an AI SaaS in 2026

The short answer: for a continuously-running 2 vCPU / 4 GB RAM service, Fly.io and Railway land close together at roughly $69.50 and $66.50 a month respectively, while Render — whose current pricing adds a separate workspace fee on top of per-instance compute — comes to about $123.75. Railway's and Fly.io's proximity is not a coincidence of similar philosophy, because the two platforms don't actually share one: Railway meters actual CPU and actual RAM consumption separately, by the second, so a service using less of either resource pays less on that specific line. Fly.io, by contrast, bills a fixed-size Machine preset for every second it is running, regardless of how much CPU or RAM the workload inside it is actually using — lower utilization does not reduce the price of a running Machine the way it reduces Railway's consumption-based lines, though stopping or suspending the Machine entirely does stop the charge.

What each vendor actually bills, and where idle time does and doesn't help

Railway (OFFICIAL, railway.com/pricing and docs.railway.com/pricing). Pro: $20/month per seat, which includes a matching $20 of usage credit — not a separate fee on top of usage, but a floor that usage bills against; if metered consumption stays under $20, the subscription fee is the entire bill. Resource rates: CPU $20/vCPU-month ($0.000463/vCPU-minute), RAM $10/GB-month ($0.000231/GB-minute), volume storage $0.15/GB-month, network egress $0.05/GB — all billed by the second except egress and object storage. Here is the detail that matters most for an always-on service: both CPU and RAM bill on actual consumption, not on reserved or allocated headroom — RAM specifically bills on the memory a running process actually holds, by the second, not on whatever ceiling the container is configured to allow. This article's $40 RAM figure assumes the service's actual memory usage averages close to the full 4 GB over the month (a reasonable assumption for a database or memory-heavy service that genuinely uses most of what it's given, though a lighter service provisioned at 4 GB but actually using less would bill less on this line). CPU bills the same way, on actual compute cycles consumed, so a service that spends most of its time waiting rather than computing pays proportionally less on the CPU line specifically. Railway's Serverless feature can put an inactive service fully to sleep, eliminating both CPU and RAM charges while asleep — a genuinely different mechanism from merely running at low utilization, available for services that can tolerate a cold start.

Render (OFFICIAL, render.com/pricing, current workspace-and-instance structure). Pro workspace: $25/month, a platform-level fee introduced in 2026, charged independent of and in addition to instance compute. Compute is billed separately, by fixed instance tier: the closest published match to 2 vCPU / 4 GB is the Pro instance at $85/month, a flat rate independent of actual CPU or RAM utilization. 25 GB of outbound bandwidth is included; usage beyond that bills at $0.15/GB. Persistent disk: $0.25/GB-month.

Fly.io (OFFICIAL, Fly.io pricing documentation, current 2026 rates). Bills a Machine — a fixed-size compute preset — for every second it is actually running, regardless of how much of its allocated CPU and RAM the workload is using in that second; a Machine running at 5% CPU utilization costs exactly the same as one running at 95%, because Fly is billing running time, not consumed compute, within that preset. Performance-2x (4 GB RAM, 2 vCPU): $66/month at full-time continuous operation (current rate effective October 1, 2026). CPU/RAM charges stop only when the Machine is actually stopped or suspended — lower utilization while running does not reduce the price the way it does on Railway's CPU meter. Fly Volumes: $0.15/GB-month. Volume snapshots: $0.08/GB-month, with the first 10 GB of snapshot storage free. Outbound bandwidth: $0.02/GB in North America and Europe — the cheapest egress rate of the three.

Why Railway's and Fly.io's "usage-based" framing means different things

This is the single most important structural distinction in this article, and conflating the two produces a wrong answer. Railway meters both CPU and RAM on actual consumption, by the second — RAM bills on the memory a running process actually holds, not on a reserved ceiling, so a lighter workload genuinely pays less on that line too, even though an always-on service's RAM usage tends to stay closer to flat over time than its CPU usage does. Fly.io meters one thing: whether the Machine is running, with no separate accounting for how hard the CPU or how much of the RAM inside it is actually being used during that time. Saying "50% busy means 50% of the compute cost" is wrong for both platforms, just in different ways: on Railway, actual utilization genuinely lowers both the CPU and RAM lines, though RAM tends to fluctuate less than CPU for a steady always-on service; on Fly.io, utilization inside a running Machine doesn't change the bill at all — only stopping the Machine does.

Normalizing the workload: 2 vCPU, 4 GB RAM, 730 hours, 100 GB egress, 10 GB volume

All ILLUSTRATIVE. This article states an explicit average CPU utilization assumption for Railway specifically, since that is the one line item genuinely sensitive to it: 50% average CPU utilization across the full 730 hours — a reasonable mid-point for a production API service with uneven traffic, neither constantly maxed out nor mostly idle.

Cost at this workload

Formula: Railway = $20 seat + max(0, [RAM: 4GB×$10, assuming actual average consumption near the full 4 GB] + [CPU: 2vCPU×50%×$20] + [Volume: 10GB×$0.15] + [Egress: 100GB×$0.05] − $20 credit); Render = $25 workspace + $85 Pro instance + max(0, 100GB−25GB)×$0.15 bandwidth overage + 10GB×$0.25 disk; Fly.io = $66 Machine + 10GB×$0.15 volume + max(0, snapshot GB−10 free)×$0.08 + 100GB×$0.02 egress.

PlatformLine itemsTotal monthly cost
Fly.io$66.00 Machine + $1.50 volume + $0.00 snapshots (within 10 GB free) + $2.00 egress$69.50
Railway$40.00 RAM + $20.00 CPU (at 50% utilization) + $1.50 volume + $5.00 egress = $66.50 usage; $20 seat fee already counted within it$66.50
Render$25.00 workspace + $85.00 Pro instance + $11.25 bandwidth overage (75 GB beyond the 25 GB included) + $2.50 disk$123.75

Render's extra cost comes from two sources this article's workload exposes directly: the separate $25 workspace fee layered on top of instance pricing, and a bandwidth overage charge, since 100 GB of egress exceeds Render's 25 GB included allowance by 75 GB at $0.15/GB. Railway and Fly.io land within about $1 of each other at this specific utilization assumption — a genuine near-tie that would shift if the CPU utilization assumption changed, since Railway's CPU line (and only that line) responds to it while Fly.io's Machine price does not move at all.

Where the two usage-based platforms diverge as utilization changes

Formula: Railway CPU cost = vCPU allocation × average utilization × $20/vCPU-month. At a lower utilization assumption — say 20% instead of 50% — Railway's CPU line falls from $20 to $8, dropping Railway's total usage to $54.50 (still above the $20 credit, so the net bill becomes $54.50), while Fly.io's $66 Machine charge does not move at all, since it bills running time, not CPU utilization. At a higher utilization assumption — 90%, a service genuinely close to CPU-bound most of the time — Railway's CPU line rises to $36, pushing Railway's total to $82.50, now meaningfully above Fly.io's flat $69.50. This is the honest shape of the comparison: Railway's CPU line rewards low average CPU utilization specifically (its RAM line does not respond to utilization the same way, since it tracks actual memory held rather than idle time); Fly.io is indifferent to CPU or RAM utilization entirely, for better or worse, as long as the Machine keeps running.

Sensitivity

  1. Average CPU utilization, for Railway specifically. The single lever that moves Railway's bill up or down within this comparison; it has no equivalent effect on Fly.io's or Render's flat compute pricing.
  2. Whether the service can tolerate sleeping between requests. Railway's Serverless feature can eliminate both CPU and RAM charges during idle periods — a different and more powerful lever than utilization-based CPU billing alone, but requiring a workload that tolerates cold starts.
  3. Bandwidth volume relative to each platform's included allowance. Render's 25 GB included allowance is the smallest of the three; a 100 GB/month workload exceeds it meaningfully, while Fly.io's and Railway's lower per-GB egress rates matter less at this volume since neither imposes as tight an included cap.
  4. Workspace/seat requirements, for Render specifically. The $25 Pro workspace fee is a platform-level cost independent of how many services or how much compute a team actually runs.

Budgeting traps

  • Assuming Railway's and Fly.io's "usage-based" billing means the same mechanism. Railway bills actual CPU and actual RAM consumption separately; Fly.io's entire Machine charge bills continuously based on running time alone, regardless of how much CPU or RAM the workload actually uses while running.
  • Saying "50% busy equals half the compute bill" without specifying which platform and which resource. True for Railway's CPU line only; false for Railway's RAM line and false for Fly.io's Machine charge entirely.
  • Forgetting Render's separate workspace fee when comparing its instance price to Railway's or Fly.io's all-in figures. The $25/month Pro workspace charge is layered on top of, not included in, the per-instance compute price.
  • Sizing bandwidth expectations off a platform's cheapest reported egress rate without checking the included allowance first. Render's low included bandwidth (25 GB) means a 100 GB workload hits overage pricing well before Railway's or Fly.io's more generous structure would.

What to ask before you buy

Measure your service's actual average CPU and RAM utilization before budgeting Railway specifically, since both — not total request volume — determine its bill; this article's RAM figure assumes average actual consumption near the full 4 GB specifically, and a workload using meaningfully less would lower that line too, unlike Fly.io's and Render's compute pricing, which stays fixed regardless of actual utilization. If your workload can tolerate occasional cold starts, ask Railway directly about Serverless sleep behavior for your specific service, since it eliminates both CPU and RAM charges during idle periods in a way simple low utilization does not.