This guide is for the solo founder or side-project builder trying to figure out where to put a small full-stack app in 2026 - think a Flask/Python API, a Next.js frontend, and a modest Postgres - without overspending or getting surprised by a scaling bill. I've shipped real projects on all four of these platforms. Bottom line: Railway is the best single-platform default for most people, but the genuinely optimal setup is often a split - Next.js on Vercel, your Python backend and database on Railway or Render.
At a glance#
| Platform | Pricing / free tier (June 2026) | What it's best at | Developer experience | Best for |
|---|---|---|---|---|
| Railway | $5/mo Hobby (incl. $5 usage) + metered; one-time $5 trial; no always-free plan | Fast full-stack deploys, great DX | Excellent - deploy in minutes | The default solo full-stack app |
| Render | Real free tier (sleeps); compute from $7/mo per service; $0 Hobby workspace, $25/mo Pro | Predictable pricing, workers and cron | Solid, slightly slower UI | Builders who want a forecastable bill |
| Fly.io | Pay-as-you-go; ~$2/mo minimal machine; no free tier for new accounts | Global low-latency containers (30+ regions) | Powerful but CLI/Docker-heavy | Apps that genuinely need multi-region |
| Vercel | Hobby free (non-commercial); Pro $20/dev/mo + usage | Next.js frontends, edge, DX | Best-in-class for frontend | The Next.js frontend, not the backend |
A note before the numbers: pricing changes constantly. Everything below is dated to June 2026 - always confirm current plans on each provider's own pricing page before you commit.
How we picked#
I weighted this for a real solo SaaS, not a hello-world. The criteria: how much the free/hobby tier actually includes (and where it stops being usable), how the bill behaves as traffic grows, time-to-first-deploy and day-to-day DX, cold starts and scale-to-zero behavior, region coverage and global latency, and whether the platform handles the boring-but-essential stuff - a real Postgres, background workers, and cron jobs - without bolting on a second service. I gave extra weight to the specific shape of this stack: a Python/Flask API, a Next.js frontend, and a small database.
Railway#
Railway is a usage-based platform-as-a-service that feels like the spiritual successor to old Heroku, but faster. You connect a GitHub repo, it auto-detects your stack (or reads your Dockerfile), and you're live in a couple of minutes. Adding a Postgres or Redis is one click, and everything - API, frontend, database, worker - lives on one canvas with wired-up environment variables.
Pricing (as of June 2026): A one-time $5 trial credit (no credit card, expires in 30 days) to kick the tires. The Hobby plan is $5/month and includes $5 of usage; if you stay under that, you effectively pay the $5 base. Pro is $20/month per seat. Critically, Railway has no ongoing always-free plan - the base fee is a minimum spend, and CPU, memory, volumes, and egress are billed per second on top. A minimal always-on service runs roughly $1/month in usage; add a Postgres and a worker and a quiet hobby project typically lands in the $5-$15/month range.
Pros
- Best time-to-deploy of the four; the GitHub-to-live loop is genuinely a few minutes.
- One dashboard for API plus Next.js plus Postgres plus worker, with automatic env var references between services.
- Buildpacks auto-detect Flask and Next.js; drop in a Dockerfile when you need control and it just uses it.
- Background workers and cron are first-class - no second platform needed.
Cons
- Metered billing means a traffic spike or a crash-looping service can run the meter past what you expected. Set usage limits.
- No real free tier - you're paying from day one (modest, but not $0).
- Fewer regions than Fly.io, so global latency isn't its strength.
- Always-on services keep billing while provisioned; there's no automatic scale-to-zero for a web service.
Who should skip it: anyone who needs a genuine $0 always-on tier, anyone whose users are spread across continents and need edge latency, and anyone who wants a fixed, predictable invoice every month rather than a meter.
Best for: the solo builder who wants their entire small stack live and wired together with the least friction.
Deploy your stack on Railway →Affiliate link · how this worksRender#
Render is the balanced middle option: it does most of what Railway does, keeps a genuine free tier, and prices paid services as a flat monthly fee per service - which makes your bill far easier to forecast.
Pricing (as of June 2026): Free web services include 750 instance-hours/month but sleep after 15 minutes of inactivity with a 30-60 second cold start, plus a free 1 GB Postgres that expires 30 days after creation (with a 14-day grace period to upgrade). Paid web services start at $7/month (Starter, 512 MB / 0.5 vCPU). Render uses a workspace model rather than per-seat pricing: the Hobby workspace is $0 plus compute, and Pro is $25/month (flat, no seat fees) plus compute. Background workers follow the same per-service compute pricing (from $7/month), and cron jobs only bill while they're actually running.
Pros
- A real free tier you can demo on without a credit card - rare in 2026.
- Flat per-service compute pricing is the most predictable bill of the four; few surprises.
- First-class background workers and cron jobs, billed only while running.
- Auto-detects common stacks via buildpacks and respects a Dockerfile.
Cons
- The free tier's 15-minute sleep and 30-60s cold start make it unsuitable for a real API anyone depends on.
- The free Postgres expiring after 30 days has bitten more than one person who treated it as permanent.
- The dashboard and deploy speed feel a step behind Railway's polish.
- Fewer regions than Fly.io; not the choice for global low-latency.
Who should skip it: anyone who needs always-on uptime for free (the free tier sleeps), anyone serving a global audience that needs edge regions, and anyone who wants Railway-level deploy speed and UI polish.
Best for: builders who want a predictable flat bill and proper workers/cron, and can either use the free tier for demos or pay the modest per-service fee.
Start free on Render →Affiliate link · how this worksFly.io#
Fly.io runs your containers close to your users across 30+ regions on an Anycast network. If your audience is genuinely global and latency matters, nothing else here competes. It's the most "infrastructure" of the four - you'll spend more time with the fly CLI and a Dockerfile, and you get more power in return.
Pricing (as of June 2026): Pay-as-you-go, no plan tiers for compute (optional support plans cost $29/$99 a month). Fly.io removed its always-free allowances for new accounts created after October 2024; new orgs get a short one-time trial, then meter. A minimal always-on shared-cpu-1x machine (256 MB) is around $2/month; a realistic single app with a 1 CPU / 1 GB VM, a volume, and a dedicated IPv4 lands roughly $10-$20/month. Volumes are $0.15/GB-month; egress is metered ($0.02/GB in North America/Europe, more elsewhere). Its autostop/autostart feature stops idle machines and you stop paying for their CPU and RAM - the closest thing to scale-to-zero for containers, though volumes keep billing.
Pros
- Genuine global deployment across many regions with Anycast routing.
- Autostop/autostart gives near-scale-to-zero compute billing for bursty workloads.
- Container-native and Dockerfile-first - excellent for non-standard stacks and system dependencies.
- Per-second billing and fine-grained control over machines, volumes, and networking.
Cons
- No free tier for new accounts; budget a few dollars from day one.
- Steeper learning curve - more CLI, more Docker, more concepts than Railway or Render.
- Machines bill by the second whether or not you remembered to stop them; easy to leak money.
- Managed Postgres is more DIY than the one-click databases on Railway and Render.
Who should skip it: the first-time deployer who wants a click-to-ship dashboard, anyone whose users are all in one region (you're paying for global plumbing you won't use), and anyone who wants a managed one-click database without touching a CLI.
Best for: apps that genuinely need multi-region, low-latency containers, run by someone comfortable with Docker and a CLI.
Deploy globally on Fly.io →Affiliate link · how this worksVercel#
Vercel is the best place to host a Next.js frontend, full stop. Push to Git, get instant preview deployments, edge delivery, and a DX that everyone else is still chasing. But be clear about what it is: a frontend and serverless-functions platform, not a general container host. You cannot run a long-lived Flask process, a persistent worker, or your own Postgres on it.
Pricing (as of June 2026): The Hobby plan is free (includes 100 GB bandwidth, 1M function invocations, and roughly 4 hours of active CPU) but is restricted to personal, non-commercial projects, with hard caps - hit a limit and things pause until the next cycle. Pro is $20/month per developer with $20 of included usage and 1 TB transfer, then uncapped pay-as-you-go (e.g. $0.15/GB beyond included transfer). Watch the 60-second function timeout on Hobby and egress overages on media-heavy sites.
Pros
- Unmatched Next.js DX: zero-config deploys, preview URLs per PR, edge network, image optimization.
- Functions are serverless and effectively scale to zero - you don't pay for idle.
- The free Hobby tier is great for personal frontends and prototypes.
Cons
- Not a container host - no place for your Flask API, background worker, or database.
- Hobby is non-commercial only; a real SaaS frontend needs Pro at $20/dev/month.
- Pay-as-you-go is uncapped on Pro; bandwidth and function overages can surprise you.
- The function timeout (60s on Hobby) breaks slow API calls, file processing, and some AI workloads.
Who should skip it for the backend: anyone who needs a long-running process, a worker, a queue consumer, or a self-hosted database - none of those belong on Vercel. Use it only for the frontend.
Best for: the Next.js (or other frontend framework) part of your stack - pair it with a backend host above.
Ship your frontend on Vercel →Affiliate link · how this worksWhich should you choose?#
- "I want one platform for everything, deployed fast." Railway. Your Flask API, Next.js app, Postgres, and a worker all live in one place, live in minutes.
- "I want a predictable monthly bill and don't mind a sleepy free tier for demos." Render. Flat per-service pricing and real workers/cron, with a free tier for prototypes.
- "My users are global and latency matters." Fly.io for the backend containers. Accept the Docker/CLI learning curve and the lack of a free tier.
- "I have a Next.js frontend and a separate Python API." Split it: Next.js on Vercel, Flask plus Postgres plus worker on Railway or Render. This is the most common 2026 setup for a reason - each tool does what it's best at.
- "I need an always-on background worker." Render or Railway. Both treat workers as first-class; don't try to do this on Vercel.
For most solo founders shipping a small SaaS this year, start on Railway, keep your frontend on Vercel if it's Next.js, and only graduate to Fly.io when global latency becomes a real problem rather than a hypothetical one.