Most teams pick a PaaS by deploying the web app. Then they add the worker. That second service, the one that drains a queue and resizes uploads at 3 a.m., is where Fly.io, Render, and Railway actually differ, and it is where the bills split apart.

Our short version: Railway is the best PaaS for a Docker web container plus background workers in 2026, because a worker there is just another service on the same private network and you pay for the memory it really uses. Fly.io is the cheapest always-on option, about $15 a month for our test stack, if you are willing to own a fly.toml. Render costs the most for this shape (about $86 on its Pro workspace) and is worth it only when your finance team wants the same invoice every month. For the end-to-end suite that gates those deploys, Playwright sharded across CI machines is the fastest choice, and Vitest Browser Mode belongs one layer down, at the component level.

Fly.io vs Render vs Railway at a glance

Prices are list prices from each vendor's pricing page and docs, checked November 5, 2026. Fly.io prices are for its cheapest regions (Ashburn and Secaucus); other regions cost more.

AttributeFly.ioRenderRailway
Best forLowest always-on cost; multi-region appsTeams that want flat monthly pricing and a dashboard ops can readSmall teams running a web app, workers, and Redis in one project
Deploys a Dockerfile?Yes, fly deploy builds it remotelyYes, Docker runtime or a prebuilt imageYes, uses your Dockerfile when one is present
How a background worker runsA process group in fly.toml, on its own MachinesA dedicated Background Worker service typeA normal service with no public domain
Platform or workspace feeNone (Pay As You Go)Hobby $0 (1 seat); Pro $25/month flat, unlimited seatsHobby $5/month; Pro $20/month per workspace, credited against usage
Smallest always-on workershared-cpu-1x 256 MB, $2.19/month512 MB, less than 1 CPU, $7/monthBilled per second for RAM and CPU used
About 1 to 2 GB of RAMshared-cpu-1x 1 GB, $6.70/month1 CPU, 2 GB, $25/month$10 per GB-month of RAM plus $20 per vCPU-month
Free tierNone; $1 trial credit for 7 daysFree web services only (spin down after 15 minutes idle); no free workersFree plan with $1/month of usage, max 0.5 GB per service
Can a worker scale to zero?Not automatically; auto stop needs traffic through Fly ProxyNo; paid instances run continuouslyApp sleeping exists, but a polling worker never goes quiet enough to sleep
Egress to the internet$0.02/GB (North America, Europe)5 GB included on Hobby, 25 GB on Pro, then $0.15/GB$0.05/GB
Cron jobsScheduled Machines or a cron processCron Job service, from $0.00016 per minuteCron schedule on any service
Key trade-offYou own more config, and shared CPU is a slice of a coreMost expensive for this workload; RAM steps are coarseBills move with usage, so you watch them

What one web container plus one worker costs per month

Here is the stack we priced. One Docker web container and one queue worker, each holding about 1 GB of RAM, both running all month, plus 100 GB of outbound traffic. A team of several people, so Render needs its Pro workspace for the seats.

PlatformComputePlan feeEgress (100 GB)Monthly total
Fly.io2 × shared-cpu-1x 1 GB = $13.40$0$2.00$15.40
Railway (Pro)2 GB RAM = $20.00, plus 0.25 vCPU average = $5.00$20, credited against usage$5.00$30.00
Render (Pro workspace)2 × 1 CPU / 2 GB = $50.00$2575 GB over the included 25 GB = $11.25$86.25

Two caveats. Fly.io's shared-cpu-1x is a slice of a shared core, while Render's 1 CPU plan is a full CPU, so the Fly.io number buys less guaranteed compute. And Railway's total is an estimate: it bills the RAM and CPU your containers actually use, second by second, so a worker that idles at 300 MB costs less than our figure and one that leaks memory costs more.

Render does get cheaper if each service fits in 512 MB. Two $7 instances drop the total to $50.25. Plenty of Node and Go workers live comfortably there. A Python worker loading pandas will not.