Heroku's free tier died in November 2022 and the PaaS market has never fully settled since. Four platforms have captured most of the displaced developer traffic: Railway, Render, Fly.io, and DigitalOcean App Platform. Each one has a genuinely different pricing model, which makes comparison frustrating. One bills per GB of RAM per second. Another charges flat monthly plans. A third operates like a mini cloud with per-VM pricing. Getting an apples-to-apples comparison requires running an actual workload through each.

The workload used throughout this article: one web service (512 MB RAM, 0.5 vCPU), one Postgres database (512 MB RAM, 5 GB storage), light traffic (under 10 GB egress per month). This is the most common real-world setup for a side project or small production app. If you are coming from Heroku, this is almost certainly the tier you were on. For a broader look at the migration options, the Heroku alternatives cost breakdown covers more platforms including serverless options.

Railway: Usage-Based Billing With a Monthly Floor

Railway bills on actual consumption: $10.14/GB RAM per month, $20.31/vCPU per month, $0.157/GB storage per month, and $0.05/GB egress. The Hobby plan adds a $5/month flat fee that includes $5 of usage credits.

For the test workload running 24/7, the web service alone costs $5.07/month in RAM plus $10.16/month in CPU, totaling $15.23/month in compute. Add a Postgres instance (512 MB RAM at $5.07/month plus 5 GB storage at $0.79/month) and you are at roughly $20.46/month total before egress. The $5 Hobby credit does not cover this, so you are paying $5 for the plan plus billing on top for the overage.

The Railway Pro plan at $20/month includes $20 in usage credits. At $20.46/month in compute, you would pay $20 for the plan plus a small overage. For apps that hover around that threshold, Pro is the cleaner option.

Watch the usage clock

Railway bills for every hour your services are running, including idle time. A 512 MB web service running 24/7 costs the same whether it handles 1 request or 10,000. If your side project sleeps most of the day, Railway's usage model can work against you. Sleep mode is available on Hobby but adds cold start latency.

Render: Fixed Plans, Predictable Bills

Render's paid web service plans start at $7/month for 512 MB RAM and 0.5 CPU. There is no usage component on the compute side; you pay the monthly rate regardless of actual load. Egress is free up to 100 GB/month, then $0.10/GB after that. For the test workload with light traffic, egress costs nothing.

Render's Postgres free tier (256 MB RAM, 256 MB storage) expires after 90 days. The paid Postgres plans start at $7/month for 256 MB RAM and 1 GB storage. The test workload specifies 5 GB storage, which exceeds the $7 plan's 1 GB limit — the next tier (Basic-1gb at $19/month) is required for this workload. That brings the total to $7 for the web service plus $19 for Postgres, landing at $26/month.

Render has no affiliate program, so there is no referral link here. The pricing is straightforward: fixed monthly rates, no hidden compute charges, 100 GB free egress. For small production apps where billing surprises are not acceptable, this predictability is genuinely valuable.

Fly.io: Cheapest Compute, Most Complexity

Fly.io runs on a per-VM model with no monthly minimum. The shared-cpu-1x VM with 512 MB RAM costs $3.19/month. Fly Postgres runs as a regular Fly app on the same VM type, so another $3.19/month plus $0.15/GB/month for the volume. At 5 GB, storage adds $0.75/month, making the Postgres instance $3.94/month. Total for the test workload: roughly $7.13/month. Egress runs $0.02/GB outbound.

On raw cost, Fly.io wins this comparison by a significant margin. The problem is everything else. Fly has its own CLI, its own concept of organizations and regions, its own networking model (private IPv6 by default, shared IPv4 costs extra), and its own approach to Postgres that is not a fully managed service. You are running a Postgres container that you are responsible for monitoring and upgrading. Fly calls it "Fly Postgres" but it is closer to self-managed than managed.

Fly.io Postgres caveat

Fly Postgres is not a managed database. Backups, failover configuration, and version upgrades are your responsibility. For a side project you check once a week, this is real operational overhead. Factor that in when the $3.94/month price looks attractive.

Fly.io is powerful for teams with platform engineering experience who want fine-grained control over regions and networking. For developers who want to deploy and not think about it, the learning curve and operational responsibility make it harder to recommend at any price point.

DigitalOcean App Platform: Closest to the Heroku Model

DigitalOcean App Platform Basic runs $5/month for a single container with 512 MB RAM and 1 vCPU, including 40 GB of outbound bandwidth. The Professional tier at $12/month gives you 1 GB RAM and a dedicated vCPU with the same 40 GB bandwidth. Both tiers benefit from DigitalOcean's broader ecosystem, including managed databases, object storage, and a mature control panel.

The catch for the test workload is the database cost. DigitalOcean Managed Postgres Basic (1 GiB RAM, 10 GiB storage) runs $15.15/month. That is a real managed database with automated backups, failover, and version upgrades. Adding it to the $5/month App Platform container puts you at $20.15/month total, which matches Railway's cost but with a substantially better database offering.

The App Platform itself is the most Heroku-like experience of the four. Push to Git and it deploys. Environment variables live in the dashboard. Logs are one click away. For developers who spent years on Heroku and want the same workflow without the Heroku pricing, this is the straightest migration path. The DigitalOcean deep dive on Managed Postgres specifically is worth reading if the database cost is a deciding factor, or see the managed Postgres cost comparison for a side-by-side view across all providers.

Side-by-Side: Same Workload, Four Bills

Platform Web Service Postgres (5 GB) Egress Monthly Total
Railway (Hobby + overage) $15.23 compute $5.23 ~$0.50 ~$20/mo
Render $7.00 flat $19.00 (Basic-1gb) Free (under 100 GB) ~$26/mo
Fly.io $3.19 $3.94 (self-managed) ~$0.20 ~$7/mo
DigitalOcean $5.00 flat $15.15 managed Included (40 GB) ~$20/mo

Which Platform Wins for Which Workload

Best for side projects
Railway
~$20/mo

Usage-based billing rewards apps that sleep. Pro plan at $20 covers most small workloads with the included credits.

Best for small production apps
Render
~$26/mo

Fixed pricing, 100 GB free egress, genuine managed Postgres. No billing surprises — what you see is what you pay.

Best raw cost if you can operate it
Fly.io
~$7/mo

Cheapest compute by far but Postgres is self-managed. Worth it for experienced operators; skip it if you want to forget about infrastructure.

Best Heroku replacement
DigitalOcean
~$20/mo

Same workflow as Heroku, real managed database, bandwidth included. Higher database cost is offset by operational simplicity.

The Bottom Line

For a side project where the bill matters more than anything else: Railway on the Hobby plan works if your app is small enough to stay within the $5 credit, or the Pro plan if you know you will exceed it. Usage-based billing is genuinely better for apps with variable or low traffic.

For a small production app where you want a predictable bill and a real managed database: Render at $26/month offers fixed pricing and 100 GB free egress. It is not the cheapest option overall, but there are no billing surprises and the workflow is the cleanest of the four platforms.

For Heroku migrants who want the same workflow without thinking about it: DigitalOcean App Platform is the closest experience. The $15.15/month Managed Postgres is the expensive part, but it is a real database with backups and failover, not a container you have to babysit.

Fly.io at $7/month is the cheapest option by a wide margin, but the operational complexity of managing your own Postgres and the steeper learning curve make it a poor fit for the "deploy and forget" use case. If you have platform engineering experience and want control over regions and networking, it is excellent. If you just want your app to run without thinking about it, the other three options are better fits.

For a full breakdown of Postgres cost across managed database providers, the database cost calculator lets you run the numbers for your specific storage and RAM requirements.