Skip to main content
Logo
Overview

Railway vs Render vs Fly.io vs Koyeb: PaaS Pricing 2026

May 7, 2026
11 min read

A friend texted me last week with a screenshot of his Fly.io invoice. $217 for a side project that gets maybe 200 visitors a month. He’d assumed scale-to-zero would handle it. It didn’t. Three idle Postgres machines and an outbound bandwidth quirk had been quietly burning money for half a year.

This is the PaaS reality in 2026. The “just push to git and forget” promise is real, but the bills are real too, and every platform has its own way of surprising you. Heroku’s days as the default option are long gone. Koyeb killed its free compute tier. Railway has been iterating its pricing roughly twice a year. Render keeps adding bandwidth charges that don’t show up in the headline number. Fly.io is still the most flexible and still the most likely to mug you.

So here’s where I’ve actually landed after a year of running production workloads, hobby projects, and one mid-sized SaaS across all four. No referral links, no “they’re all great” copout.

What “PaaS” even means in 2026

Before the comparisons, a quick framing. I’m not putting Railway, Render, Fly.io, and Koyeb in the same bucket as Vercel, Cloudflare Pages, or AWS App Runner. Those have a different story (edge-first or function-first). The four here all do roughly the same thing: take a Dockerfile or a buildpack, give you a long-running container with a public URL, attach a Postgres, and bill you per second of compute. Heroku’s model, basically, but split four ways with different opinions baked in.

Render leans corporate-friendly. Railway leans developer-experience-first. Fly.io leans global edge with manual control. Koyeb leans European, serverless-ish, and increasingly enterprise. They all overlap, and they all have an axis where they meaningfully win.

Pricing as of May 2026 (the honest version)

I’m going to give rough numbers. Pricing pages on all four have changed within the last 90 days, so check the current docs before you commit. But the shape of these numbers has been stable enough that the relative ranking won’t flip.

Railway charges around $5/month for a “Hobby” seat that comes with $5 of usage credit, then per-resource on top — roughly $0.000463/GB-hour for memory and $0.000231/vCPU-hour, plus storage and egress. A small always-on app with a 512 MB Postgres lands around $10–15/month in practice. The pricing model rewards apps that idle (Railway will scale CPU down) and punishes apps with lots of small services (each one accrues its own base costs).

Render has a $7/month starter web service and a $7/month starter Postgres (1 GB). Together with their “free static sites,” you can run a small full-stack app for ~$14/month and predict the bill exactly. Bandwidth is where they get you: the included egress is modest (around 100 GB on starter) and overages are billed per GB. If you serve images or a podcast feed from Render, check this carefully.

Fly.io is by far the cheapest at the bottom — a shared-cpu-1x machine with 256 MB runs around $1.94/month if you actually run it 24/7, and Fly will auto-stop machines for you. But Fly bills separately for outbound bandwidth (with a regional pricing table that punishes Asia and South America), volumes, and Postgres machines. Their managed Postgres is genuinely cheap if you size it right; their unmanaged Postgres clusters (the older default) need babysitting and the upgrade path has bitten people.

Koyeb removed its free compute tier in 2024 but kept aggressive paid pricing. Their “Starter” instance is around $0.000274/second (~$7/month if always on), and they include scale-to-zero on serverless services. A managed Postgres starts around $20/month. Koyeb’s edge here is global multi-region deployment without the manual machine management Fly.io requires.

For a typical $5–50/month indie SaaS, the order from cheapest to most expensive is roughly Fly.io < Render ≈ Railway < Koyeb, but that flips above ~$200/month once Fly.io’s bandwidth catches up with you and Koyeb’s predictable serverless pricing starts looking attractive.

The hidden costs nobody warns you about

This is the section I wish someone had written for me three years ago.

Fly.io’s idle machine trap. Fly bills for any machine in the started state, not just machines serving traffic. The auto_stop_machines flag in fly.toml exists precisely because of this, but it’s off by default in older app templates. If you forked a fly-rails or fly-django starter from 2023, double-check it. Even with auto-stop on, Postgres machines don’t stop. Volumes don’t stop. A Redis you spun up “just to test” doesn’t stop.

Render’s bandwidth markup. Render’s pricing page lists “bandwidth included” but the included amount is much smaller than people assume, and overage is billed per GB at a rate that’s cheaper than AWS but not free like Cloudflare. If you’re hosting a media-heavy app, route your assets through R2 or Bunny CDN, not Render’s egress.

Railway’s “always on” surprise. Railway used to have a starter tier that allowed 500 hours/month of free compute. That’s gone. The current Hobby plan includes $5 of credit, which on a 24/7 always-on container with even modest memory you’ll burn through in about three weeks. Plan for $10–20/month minimum if your app needs to be always reachable.

Koyeb’s “global by default” gotcha. Koyeb makes it easy to deploy to multiple regions. Each region is a separate billable instance. If you spun up “frankfurt + washington + singapore” because the dropdown was right there, you’re paying 3x. Most apps don’t need it.

The Postgres trap on all four. Managed Postgres on a PaaS is convenient but never the cheapest option. Neon’s branching free tier, Supabase’s $25 plan, or even a $4 DigitalOcean managed DB will beat the included offering on volume. The break-even comes around 5 GB of data or when you need read replicas. I now default to Neon for new projects regardless of where the app runs.

Free tiers in May 2026

Quick truth check, because every comparison post lies about this.

  • Railway: no free tier. Hobby plan starts at $5/month with $5 credit. You will spend at least $5/month.
  • Render: free static sites, free web services that spin down after 15 minutes of inactivity (cold starts hurt), free Postgres for 30 days then deleted. The free Postgres expiring is not a typo. People lose data to this constantly.
  • Fly.io: no free tier in the traditional sense, but the pay-as-you-go pricing means a hobby app with auto-stop can cost under $1/month. They sometimes promote $5 in monthly credit for new accounts; check current terms.
  • Koyeb: no free compute tier since 2024. They give a free trial credit for new signups.

If you genuinely need $0/month and don’t want a deletion timer, you’re looking at Cloudflare Workers + D1, Vercel hobby, or running on Oracle Cloud’s always-free tier. None of those are PaaS in the same sense, but they’re what people end up using when “free PaaS” fails them.

Developer experience: the part the pricing tables won’t tell you

Pricing decides the floor; DX decides whether you’ll still be on the platform in two years.

Railway is the one that consistently makes me smile. The dashboard is the prettiest of the four, deploys from GitHub work without thinking, environment variables can be referenced across services, and the new templates ecosystem (one-click clones of common stacks) is the most polished. Logs and metrics are good enough. The CLI is fine. Where Railway falls short: limited regions, no built-in cron in the way Render has it, and the lack of a real free tier means you can’t onboard a teammate to “just try it.”

Render feels enterprise. It’s the most boring in a good way. Blueprints (render.yaml) are mature, preview environments are first-class and actually work, the dashboard is unglamorous but explicit, and their managed Postgres has been the most stable for me. Render’s downside is performance sometimes — cold starts on free services are brutal, and even paid services occasionally feel slower than they should. Their support is responsive but not fast.

Fly.io is the platform you have to learn. The CLI is the primary interface, fly.toml is the primary configuration, and most things assume you know what a region is. When it works, you’re running globally distributed machines for less than the price of a coffee. When it doesn’t, you’re on community Fly.io forums trying to figure out why your Postgres replica diverged. Their support story has improved meaningfully but is still the weakest of the four for paying customers under enterprise tier.

Koyeb sits between Render and Fly.io. The dashboard is cleaner than Fly’s, the CLI is competent, the docs are good, and serverless behavior (real scale-to-zero on web services) actually works without the gotchas Render’s free tier has. The trade-off is a smaller community and fewer “I had this problem and someone solved it on Stack Overflow” answers. If you’re stuck, you’re emailing support.

Postgres, persistent disks, and the database question

A pattern I’ve watched play out: people pick a PaaS, use its managed Postgres for six months, then realize they could halve their bill by moving the database elsewhere. Here’s where each one lands.

Render’s Postgres is the most boring and most reliable. Backups work. Restores work. Connection pooling works. It’s expensive at scale.

Railway’s Postgres is fine for development, has improved a lot through 2025, and the per-resource billing means you only pay for what you use. Backups are now standard. I’d use it for hobby and early-stage SaaS.

Fly.io managed Postgres (the new one, not the older fly pg create cluster) is solid and cheap if you size your machines right. The older clusters are still around and still trip people up.

Koyeb’s managed Postgres exists but feels like an afterthought; for production data I’d pair Koyeb with Neon or Supabase rather than rely on it.

For anything where data really matters, I now treat the database as a separate decision from the compute platform. Neon for serverless Postgres, Supabase if I want auth and storage bundled, Crunchy Bridge for serious workloads. Decoupling the database from the PaaS is the single best architectural decision you can make to avoid lock-in regret later.

Global, multi-region, and the edge story

Fly.io is still the king here. If you genuinely need to put your app in 8 regions and have a global Anycast IP route users to the nearest one, no other PaaS in this comparison comes close. The catch is bandwidth pricing, which is regional and brutal in some places.

Koyeb is a credible second. Multi-region deployment is a UI checkbox. Their global load balancer routes correctly. You pay per region, but you can pull regions out as easily as you added them.

Render added more regions through 2025 but is still a “pick one region” platform in practice for most users.

Railway is mostly US-East and EU. Fine for most apps; not where you go for global edge.

Honest take: the number of apps that genuinely need multi-region is much smaller than people think. A single us-east-1 deployment plus Cloudflare in front of static assets covers 95% of “I need global performance” requirements. Don’t pay the multi-region tax for vibes.

Which one should you actually pick?

Decision-matrix time.

Solo SaaS, $10–50/month budget, predictable billing matters more than absolute lowest cost — Render. The dashboard makes sense, the bill doesn’t surprise you, and the free static + cheap web service combo covers a typical “marketing site + app” stack cleanly.

Indie hacker shipping fast, you want the prettiest DX and don’t mind paying $5–15/month — Railway. Templates, dashboards, and the GitHub integration are the smoothest of the four. You’ll spend more time building, less time configuring.

Global edge, low traffic, you’re fluent in CLI tooling — Fly.io. Set auto_stop_machines = true, enable scale-to-zero, watch the bandwidth invoice every month, and you’ll be running a multi-region app for the price of a sandwich.

You want serverless web services with real scale-to-zero, deployed in EU, with predictable per-second billing — Koyeb. Best fit if you’re shipping to European customers and want a platform that takes GDPR and data residency seriously.

You want zero monthly cost — none of these. Use Cloudflare Workers + D1, Vercel hobby, or Oracle Cloud free tier. The PaaS category is no longer the right answer for $0.

You’re scaling past $1k/month on any of them — start pricing AWS App Runner, ECS Fargate, or moving compute to your own EKS. The PaaS premium becomes painful fast above that line, and you’ll have outgrown the things they automate.

One thing to try this week

If you’re already on a PaaS, open your last three months of invoices and find the line item you don’t recognize. There almost always is one. For me, on Fly.io, it was outbound bandwidth from a webhook that was retrying every 30 seconds. On Render, it was a build cache I’d forgotten about. On Railway, an old preview environment. The fix is usually three minutes; the savings are usually enough to justify a year of whatever you’re paying.

And if you’re picking a platform fresh in May 2026, pick the one whose pricing model you can hold in your head. The cheapest platform on paper isn’t the cheapest one in practice — it’s the one whose bill you can predict.