# Host a SaaS MVP for Under $10

The cheapest way to host a SaaS MVP with a frontend, an API, Postgres and your own domain is a small Fly.io machine plus Neon's free Postgres, at about $2.19 a month across two bills. From one vendor on one bill, Light Cloud is the cheapest at $5 a month, with a preview of every branch and a password on the staging site included. Railway, Cloudflare and DigitalOcean also come in at $5, and Render with Neon at $7.

We make Light Cloud, the second row below. I put a cheaper setup above us because it is cheaper, and the method below says why it still might not be the one you want.

## How we ranked

The reference MVP is a React frontend, a Node.js API that runs as an ordinary server process (Express, in my case), a PostgreSQL database under 1 GB and your own domain. Traffic is about 300 requests a day: you, a few friends, the first ten people from a launch post. List prices, US dollars, checked on 2026-10-13, smallest tier that does the job.

Two rules knock out a lot of free plans, and both are about the months an MVP spends waiting for users. First, the plan's own terms must not limit it to personal or non-commercial use, because an MVP exists to take money. Vercel's Hobby plan fails here: its [fair use guidelines](https://vercel.com/docs/limits/fair-use-guidelines) restrict it to non-commercial personal use, and taking payments counts. Heroku's $5 Eco dynos are [for personal apps only](https://devcenter.heroku.com/articles/eco-dyno-hours). Second, nothing may pause or expire after a quiet week. Supabase's free plan pauses projects with [low activity over 7 days](https://supabase.com/docs/guides/platform/free-project-pausing), and a free Render database [expires after 30 days](https://render.com/docs/free).

What's left is surprisingly cheap. Most rows below use Neon's free Postgres, because Neon Free has no inactivity pause: the compute sleeps after 5 idle minutes and wakes in a few hundred milliseconds ([docs](https://neon.com/docs/introduction/scale-to-zero)). Ties are broken by the number of bills you pay, then by whether a preview of the API comes with each branch.

Kept running all month, with no scale to zero, the same MVP gets the Always on prices in the table. Light Cloud comes fifth of six there at about $56, because an always-on instance needs the $19 Starter plan and a Micro costs about $52 a month. A Worker has no documented way to stay running, so Cloudflare is listed last.

## The ranking

<div data-ranking-table>

| # | Setup | MVP a month | Always on, a month | Bills | Branch previews of the API |
|---|---|---|---|---|---|
| 1 | Fly.io + Neon | $2.19 | $2.19 | Two | GitHub Action, one app, no database |
| 2 | Light Cloud | $5 | about $56 (Starter, always-on Micro) | One | Every branch, every plan |
| 3 | Railway | $5 plus usage over $5 | $5+ | One | Every pull request, every plan |
| 4 | Cloudflare + Neon | $5 | No always-on option | Two | Worker Previews per branch |
| 5 | DigitalOcean + Neon | $5 | $5 | Two | Through GitHub Actions |
| 6 | Render + Neon | $7 | $7 | Two | One service per pull request, billed at its rate |

<p class="table-source">List prices from each vendor's pricing and docs pages, checked 2026-10-13. Neon Free is $0 within 100 CU-hours a month per project. Taxes, domain registration and bandwidth beyond included allowances excluded.</p>

</div>

### 1. Fly.io + Neon

**Best for:** the lowest bill, if two vendors and a card on file don't bother you.

The cheapest always-on Fly machine, shared-cpu-1x with 256 MB, is $2.19 per 30 days in Ashburn or Secaucus ([pricing](https://docs.fly.io/about/pricing)), and it can serve the built frontend as well as the API. Machines can stop when idle, which takes the bill below that. TLS certificates are free for the first 10 hostnames, so your domain costs nothing extra. Postgres comes from Neon Free in a nearby region, $0.

The fine print is on both sides. Fly has no free tier for new accounts, needs a card after the trial, and says it [doesn't support billing alerts yet](https://docs.fly.io/about/cost-management). Neon Free gives each project [100 CU-hours a month](https://neon.com/docs/introduction/plans), which Neon itself translates into 400 hours of its smallest compute; a database that is queried all day long runs out in about 17 days and stays suspended until the month resets. Before launch, that's rarely an issue. Previews per pull request are a GitHub Action that deploys one app, without a database.

### 2. Light Cloud

**Best for:** the cheapest single bill, with previews and a password on staging included.

The Lite plan is $5 a month, includes $5 of usage, a custom domain, five server apps and one shared PostgreSQL database ([pricing](https://light-cloud.com/pricing)). My MVP uses about $4.15 of it: $4 for the database, about 10 cents for an API at 300 requests a day (the pricing page's "quiet" example), a few cents of builds and a cent for the static frontend. So the invoice says $5 and that's the whole story. [SaaS MVP hosting](https://light-cloud.com) on one bill was the point of the plan.

Every branch you push gets its own frontend and API at their own URL, and a preview nobody opens costs nothing to run; [branch previews](https://light-cloud.com/previews) come on every plan, Free included. A visitor password on the staging site is one setting on any plan, which [the staging tutorial](/tutorials/password-protect-a-staging-site) walks through. The database is [Postgres hosting](https://light-cloud.com/databases) in the same project; you paste its connection string into the app as `DATABASE_URL`.

Where it falls short: the API scales to zero, so the first visitor after a quiet spell waits [3.1 to 3.7 seconds](/tutorials/microservices-on-light-cloud-part-4-cold-starts) for it to start. The shared database tier runs in Belgium only. There are no cron jobs, no background workers, no built-in auth or email, and branch previews use the production database until you point them at another. Our Free plan would cost $0 here, but it has no databases and no custom domain, which is why Lite is the row.

### 3. Railway

**Best for:** one bill with cron jobs and private networking built in.

Hobby is $5 a month and includes $5 of usage ([docs](https://docs.railway.com/pricing/plans)). RAM is $10 per GB a month and CPU $20 per vCPU a month, metered by actual use, so a small API and a Postgres service that average under about half a GB of RAM together stay at $5. Hobby includes two custom domains, and pull request environments that copy the whole app are on every plan.

If your MVP needs a nightly job on day one, Railway has [cron jobs](https://docs.railway.com/cron-jobs) and we don't. Two things to know: Railway [recommends its $20 Pro plan](https://docs.railway.com/pricing/faqs) for commercial apps, though its docs stop at a recommendation, and usage over $5 is billed, so set the hard usage limit (from $10) on day one.

### 4. Cloudflare + Neon

**Best for:** teams that want Cloudflare's edge, with the API as a container.

Workers Paid has a $5 monthly minimum and includes 10 million requests ([pricing](https://developers.cloudflare.com/workers/platform/pricing/)). Containers, generally available on that plan since 2026-04-13, are billed per 10 ms while they run and stop charging when they sleep, with monthly allowances of 25 GiB-hours of memory and 375 vCPU-minutes ([container pricing](https://developers.cloudflare.com/containers/platform/pricing/)). A container that sleeps most of the day stays inside them; the smallest one awake around the clock would add about $1.70 for memory and disk. The frontend goes on Pages with free custom domains, and Postgres again comes from Neon Free. Total: $5.

The upside is Cloudflare's network and no egress charges. What you give up is simplicity: a container sits behind a Worker and a Durable Object, so there are three moving parts where other rows have one. Worker Previews, launched in September 2026, give each branch its own container instances. Budget alerts only notify; they don't cap anything.

### 5. DigitalOcean + Neon

**Best for:** a fixed $5 container with nothing metered.

The smallest App Platform container is $5 a month for 512 MiB ([pricing](https://www.digitalocean.com/pricing/app-platform)), and the static frontend fits in the free tier with a custom domain. DigitalOcean's own development database is $7, which would push the total to $12, so Neon Free takes that job. Five dollars, flat.

The $5 size is limited to one instance; scaling out starts at the $12 size. A payment method is required before you can create anything, even a free static site. Previews per pull request mean maintaining a GitHub Actions workflow, and scale to zero is still a private preview you have to ask for.

### 6. Render + Neon

**Best for:** an always-on API that never cold-starts.

A Starter web service is $7 a month for 512 MB ([pricing](https://render.com/pricing)), always on, so no visitor ever waits for a container to start. The static frontend is free and the Hobby workspace includes two custom domains. Neon Free replaces Render's free Postgres, which expires after 30 days.

That $7 buys predictability, plus private networking, cron jobs and background workers when the MVP grows into them. On the free Hobby workspace a pull request gets a preview of one service at that service's rate, without a database; full-stack previews need the $25 Pro workspace, as [the Render alternatives post](/comparisons/render-alternatives) goes into.

## Where the others beat us

On price alone, Fly.io plus Neon is less than half of our $5, and nothing we do changes that. If you'll write the API for Cloudflare Workers itself rather than a container, Workers Free (100,000 requests a day, 10 ms of CPU per request) plus Neon Free costs $0 with your own domain on Pages. Render is the row where nobody ever waits for a cold start. Railway has cron, workers and private networking at the same $5. And every other row lets you keep the database next to an API outside Europe, while our shared database tier is in Belgium only.

Where we come out ahead is the single bill. Database, API, static frontend, your domain, a preview of every branch and a password on staging all come from one company for $5, and none of it depends on another vendor's free plan staying the way it is today. For an MVP that will grow into [where to host a SaaS](/comparisons/where-to-host-a-saas) territory, that's one migration you won't have to do. The [custom domain with SSL](https://light-cloud.com/domains) is part of the same $5, and you can [deploy from a GitHub repository](https://light-cloud.com/deployments) in a few minutes.

Which part of your MVP would you rather not think about for the next six months?
