Railway vs Render vs Fly.io vs Koyeb: PaaS Pricing 2026
What a small always-on app actually costs on each, and the specific line item on each platform that turns a $10 bill into a $200 one.
If you only want the number: a small always-on app with a small Postgres runs somewhere between two and fifteen dollars a month on all four of these, and the platform you pick matters far less than the one line item on each that quietly multiplies.
Checked against the vendor pricing pages on 21 August 2026. All four have changed pricing inside the last year, so verify before you commit anything.
The floor, for a small always-on app
Fly.io is cheapest at the bottom. A shared-cpu-1x machine with 256MB run continuously is about $1.94 a month in Ashburn and $2.02 in Amsterdam. There is no free tier and no monthly credit; you simply pay very little.
Railway has a Free plan at $0 with $1 of monthly usage credit and one vCPU and half a gig per service, plus a 30-day $5 trial that needs no card. Hobby is $5 a month including $5 of credit, and Pro is $20 per workspace including $20. Metering is per second: roughly $0.0139 per GB-hour of memory and $0.0278 per vCPU-hour. If you have read that Railway has no free tier, that was true and is not any more.
Render gives every workspace 750 free instance hours a month, and spun-down services do not consume them. As of mid-2026 an always-on Starter web service plus a small Postgres on a Hobby workspace runs about $13 a month before bandwidth.
Koyeb removed its free compute tier back in 2024 and kept aggressive paid pricing, with real scale-to-zero on web services and a managed Postgres that starts noticeably above the others. Multi-region deployment is a checkbox rather than machine management.
Below about $50 a month the ordering is roughly Fly, then Render and Railway together, then Koyeb. Above a couple of hundred it reshuffles, because Fly’s bandwidth catches up with you and Koyeb’s predictability starts to look like a feature.
The line item that actually gets you
Fly bills machines in the started state, not machines serving traffic. auto_stop_machines in fly.toml exists precisely for this and is off in older templates, so a starter you forked in 2023 is probably still burning. Even with auto-stop on, Postgres machines do not stop, volumes do not stop, and the Redis you spun up to test something does not stop. This is the single most common way a side project quietly runs up a three-figure invoice.
Render’s included bandwidth is per workspace and smaller than people assume, with overage billed per gigabyte. Cheaper than the big clouds, not free like putting assets behind a CDN. If you serve images or media, route them through object storage rather than through your web service.
Railway’s credit burns faster than a month. Five dollars of included credit on an always-on container with any real memory does not last thirty days. Budget ten to twenty a month if the app must always be reachable, and treat the credit as a discount rather than a plan.
Koyeb makes multi-region a dropdown, and each region is a separate billable instance. Picking Frankfurt, Washington and Singapore because they were right there means paying three times for an app that almost certainly needed one.
Bandwidth is regional, and one region is six times another
Fly publishes granular data transfer rates and the spread is worth knowing before you pick a region: $0.02 a gigabyte in North America and Europe, $0.04 across Asia Pacific, Oceania and South America, and $0.12 for Africa and India. Inbound and same-region transfers are free on the granular rates.
That is a six-fold difference between your cheapest and most expensive users, and it is the part of the invoice nobody models in advance.
Free tiers, honestly
Railway: a genuine $0 plan with $1 of monthly credit, plus a 30-day trial credit. Small, real.
Render: 750 free instance hours per workspace per month, and free services spin down when idle so a sleeping service costs you nothing from that allowance. Free Postgres expires 30 days after creation, with a 14-day grace period before deletion. People lose data to that timer constantly, and the grace period is the only reason more of them do not.
Fly: no free tier, but pay-as-you-go plus auto-stop means a hobby app can genuinely cost under a dollar.
Koyeb: no free compute since 2024, trial credit for new signups.
If you actually need zero dollars a month with no deletion timer, none of these is your answer. That is a Workers-plus-D1 or an always-free VM situation, which is a different kind of product.
The database is a separate decision
The pattern worth internalizing: people pick a platform, use its managed Postgres for six months, then discover they can halve the bill by moving the database somewhere else.
Render’s Postgres is the most boring of the four, which for a database is the highest compliment. Backups work, restores work, pooling works, and it is expensive at scale. Railway’s has improved a lot and per-resource billing means you pay for what you use, which suits hobby and early-stage work. Fly’s newer managed Postgres is solid and cheap if you size the machines correctly, while the older self-managed clusters are still around and still catch people on upgrades. Koyeb’s exists and feels like the least developed of the four.
For anything where the data actually matters, decouple it from the compute platform. A dedicated Postgres provider will usually beat the bundled offering above a few gigabytes or as soon as you want read replicas, and it removes the worst kind of lock-in, the kind where moving your app also means moving your data.
Developer experience, which decides whether you are still there in two years
Pricing sets the floor. Ergonomics decide whether you renew.
Railway has the nicest dashboard of the four, GitHub deploys that work without thought, environment variables that reference across services, and a genuinely polished set of templates. Fewer regions, and cron is less first-class than Render’s.
Render is the boring enterprise-shaped one, in a good way. render.yaml blueprints are mature, preview environments are first-class and actually work, and the dashboard is explicit rather than pretty. Cold starts on free services are rough.
Fly is the one you have to learn. The CLI is the interface, fly.toml is the configuration, and everything assumes you know what a region is. When it works you are running globally distributed machines for the price of a coffee. When it does not, you are reading community forum threads about diverged replicas.
Koyeb sits between Render and Fly. Cleaner dashboard than Fly, competent CLI, good docs, and real scale-to-zero without Render’s free-tier caveats. Smaller community, so when you are stuck you are emailing support rather than finding someone who already hit it.
Global, if you actually need it
Fly is still the one for genuine multi-region with anycast routing to the nearest machine, and the bandwidth table above is the price of that.
Koyeb is a credible second, with regions you can add and remove as easily as you added them, as long as you remember each one is billable.
Render and Railway are pick-one-region platforms in practice, which is fine, because most apps are.
What to do before you commit
Take whatever you are about to deploy, work out its memory and its monthly egress, and price those two numbers on the two platforms you are choosing between. Not the headline plan. Those two numbers.
Then go and look at whatever you already have running and check what is in the started state. That is where the surprise usually already is.