Application platforms · July 18, 2026
Railway vs Fly.io — and three alternatives worth pricing
A solo-founder comparison of Railway, Fly.io, Render, Google Cloud Run, and Cloudflare Workers or Containers across deployment, idle cost, launch traffic, egress, forgotten resources, and cost controls.
Method
What this comparison measures
- Model one stateless web service; managed databases, third-party APIs, taxes, and support are excluded.
- Use three workloads: MVP (100k requests, 10 GB egress), traction (1m requests, 100 GB), and launch (10m requests, 1 TB).
- Normalize published compute, memory, request, volume, and egress units in US and EU regions where available.
- Treat the totals as a critiqueable envelope, not a quote: concurrency, cache hit rate, sleep behavior, and region alter the result.
The products sell different units
Railway meters CPU and memory usage, then adds storage and public egress. Fly.io sells Machines and volumes by provisioned time, with started and stopped states priced differently. Render mixes instance plans with workspace and network rules. Cloud Run meters active container time and requests. Cloudflare Workers meters requests and CPU time; Containers add active vCPU, memory, disk, and egress.
That means a single monthly total can mislead. A quiet application favors scale-to-zero. A latency-sensitive application with a warm minimum pays for idle capacity. A media-heavy application may spend more on transfer than compute.[1][3][5][7][8]
| Platform | Primary compute unit | Free entry | Card / overage behavior |
|---|---|---|---|
| Railway | Measured vCPU + RAM time | $1 monthly Free credit | Paid plans are post-paid; usage and Agent limits are separate |
| Fly.io | Provisioned Machine seconds | 7 days or 2 VM hours | All normal organizations require a card |
| Render | Instance plan + workspace usage | Free web service with sleep | No-card free service suspends; card enables overage |
| Cloud Run | vCPU/GiB seconds + requests | Always-free monthly grant | Billing account required for paid use; adjacent services bill separately |
| Cloudflare | Requests + CPU, or active container resources | Workers Free | Paid Workers start at a monthly minimum; product meters differ |
One workload, three stages
The chart uses the traffic envelope above, a cacheable response mix, 10 GB of persistent storage after the MVP stage, and no database. The MVP line deliberately uses available free or minimum plans; production readiness is not implied.
Cloudflare is inexpensive only when the workload fits Workers. Moving an arbitrary long-running container to Workers is an architecture change, not a pricing toggle. Cloudflare Containers are now generally available, but their active-resource model belongs in a separate calculation.[8][9]
The forgotten-resource test
Deleting the web application does not necessarily delete its bill. Fly.io explicitly warns that volumes bill while Machines are stopped and managed Postgres, Upstash, and Tigris services can survive app deletion. A dedicated IPv4 address and snapshots are separate meters.[4]
Railway’s common trap is topology: a database connection through its public URL creates egress, while private networking avoids it. Cloud Run source deployment can create Cloud Build and Artifact Registry charges outside the Cloud Run line item.[2][7]
Render’s free database expires, free services sleep after inactivity, and the presence of a payment method changes whether excess bandwidth or build usage becomes downtime or a charge.[6]
Which one should a solo founder choose?
Choose Railway when the repository-to-service mental model and a readable bill matter more than squeezing every infrastructure unit. Choose Fly.io when regions, Machines, private networking, and low-level control are product requirements and you accept more operational ownership.
Choose Render when you want a conventional PaaS and can live with plan-gated observability. Choose Cloud Run for bursty containerized APIs when a Google Cloud billing account and adjacent services are acceptable. Choose Cloudflare Workers when the application is naturally request-driven and edge-compatible. A zero egress line alone is not enough.
- Before revenue: optimize for a safe failure mode and an exportable repository.
- At first revenue: pay for warm latency, backups, and enough telemetry to explain a support ticket.
- Before a launch: estimate egress separately and rehearse the provider’s spend cap or maximum-scale behavior.
- After the launch: compare measured resource-hours with the envelope and revise the model instead of changing provider from one invoice.
Source register
Specifications and prices change. The links make this snapshot auditable.
Sources and commercial facts were checked on 2026-07-18. Prices exclude tax unless the source says otherwise.
- Pricing plans and resource rates ↗Railway · pricing
- Cost control ↗Railway · billing
- Resource pricing ↗Fly.io · pricing
- Cost management ↗Fly.io · billing
- Workspace plan changes ↗Render · pricing
- Deploy for free ↗Render · billing
- Cloud Run pricing ↗Google Cloud · pricing
- Workers pricing ↗Cloudflare · pricing
- Cloudflare Containers general availability ↗Cloudflare · product