In 2021 you could stitch a side project across half a dozen generous free tiers and run it for years without touching a credit card. In September 2026, that era is over so completely you can count the survivors on two fingers. A recent survey of Python SaaS hosting options puts it bluntly: only Render and PythonAnywhere still offer a genuinely free-forever compute tier. Everyone else either killed free, fenced it to non-commercial use, or replaced it with trial credit that evaporates in week one.
So the honest question for a side project today is not "which free tier is best" but something sharper: what exactly do the last two free tiers cover, what do they quietly exclude, and at what point is a roughly €4.50/month Hetzner CX22 — 2 vCPUs, 4 GB of RAM, and 20 TB of traffic — simply the better deal? This post answers all three with line-by-line numbers.
The short version, up front: Render's free tier is real compute with a 30-day database cliff hiding inside it. PythonAnywhere's free tier is real hosting fenced to one small Python app with no custom domain. And a Hetzner CX22 costs about USD 60 a year to give you eight times the RAM, always-on processes, and a database that never expires. If your project needs to exist in month two, start on the owned side of that line.
The free-tier graveyard
Before the survivors, the fallen — because "free" on a pricing page in 2026 often means something else:
| Provider | "Free" in September 2026 | Verdict |
|---|---|---|
| Heroku | Nothing since November 2022 | Gone |
| Vercel Hobby | Free, but restricted to personal/non-commercial use | Free with a fence |
| Railway | One-time USD 5 trial credit, then a ~USD 1/mo allowance | Trial, not a tier |
| Fly.io | Pay-as-you-go for new orgs, ~USD 2/mo floor | Trial, not a tier |
| Render | Free web services + ephemeral free Postgres | Free-forever ✓ |
| PythonAnywhere | One free Beginner web app | Free-forever ✓ |
Vercel's Hobby clause deserves a pause: the moment your side project processes a real payment or serves a business purpose, you owe Pro at USD 20 per seat per month — from day one, not from profitability. That single clause flips most "free vs. USD 5 VPS" comparisons all by itself. Railway's 2026 story is subtler: after killing free entirely over crypto-mining abuse, it restored a small perpetual allowance (about USD 1/month after a USD 5 first-month credit), which covers roughly nothing running continuously. And Fly.io's free allowance is a memory — new organizations start on metered billing with a card on file.
That leaves two. Here is what each one actually gives you.
What Render's free tier actually covers
Render's free tier is the most capable free compute left in the industry, and the spec sheet reads well: 750 instance hours per month, 512 MB of RAM, 0.1 CPU, 100 GB of bandwidth, and 500 build minutes, with no credit card required. A single small web service fits comfortably inside it. Static sites are free without the strings below.
The strings:
- Sleep. Free web services spin down after 15 minutes without traffic. The first request back pays a 30–60 second cold start. Fine for a demo you open twice a day; disqualifying for anything with users, webhooks, or an uptime expectation.
- Ephemeral filesystem. Anything your app writes to local disk disappears on restart. Uploads, SQLite files, and caches need external storage from day one.
- The 30-day database cliff. Free PostgreSQL gives you 1 GB of storage and 256 MB of RAM — and expires 30 days after creation, with a 14-day grace period to upgrade before Render deletes it. This is the most frequently overlooked constraint in the free tier, and it quietly converts every "free Render stack" into a 30-day trial the moment your app needs durable data.
That last point reframes the pricing. A Render setup that still exists in month two with its data intact costs about USD 7/month (free sleepy web service plus an upgraded Starter database), and an always-on web service plus a durable database runs about USD 14/month. Those are fair prices — but they are not zero, and the cliff arrives exactly when a side project is getting interesting.
What PythonAnywhere's free tier actually covers
PythonAnywhere's Beginner account is the other survivor, and it is a different animal: narrower, simpler, and honest about what it is. You get one web app on a username.pythonanywhere.com subdomain, 512 MB of file storage, and 100 CPU-seconds per day — enough for a demo, a class project, or a low-traffic API, but a hard ceiling on anything bursty.
The strings, and there are more of them:
- No custom domain. Your app lives on PythonAnywhere's subdomain unless you upgrade to a paid plan. For anything you want to show the world under your own name, this alone ends the free-tier conversation.
- No MySQL for new free accounts. Older free accounts kept a small database; new ones do not get one at all. Durable relational data means paying or bolting on an external store.
- A monthly renewal click. The Web tab shows a "run until one month from today" button — miss it and your site quietly goes offline. PythonAnywhere emails a warning a week ahead, but "set a calendar reminder so your app stays up" is a strange thing to say about production hosting.
- Python only. This is a WSGI-shaped world: Django, Flask, FastAPI behind their wizard. A Go binary, a Node service, or a Docker image simply does not fit.
None of this is a trick — PythonAnywhere has offered roughly this shape for a decade, and for learning Python deployment it remains the gentlest on-ramp in existence. But its ceiling is a ceiling: one small Python app, their domain, their database absence, your monthly click.
Line by line: the last free tiers vs. a Hetzner CX22
Now the core comparison. Take a typical side project — one web app, one Postgres database, a custom domain, TLS, always-on — and price it three ways. The Hetzner column is a CX22: 2 shared vCPUs, 4 GB RAM, 40 GB NVMe, 20 TB of included traffic, listing around €4/month before VAT (budget about €4.50, roughly USD 5, all-in).
| Line item | Render free | PythonAnywhere free | Hetzner CX22 (~€4.50/mo) |
|---|---|---|---|
| Compute | 512 MB RAM, 0.1 CPU | 100 CPU-s/day, shared | 2 vCPU, 4 GB RAM (8× the RAM) |
| Always-on | No — sleeps after 15 min idle | Yes, with monthly renewal click | Yes, unconditionally |
| Cold starts | 30–60 s after sleep | No sleep, but CPU-capped | None |
| Postgres | 1 GB free, deleted after 30 days | Not included for new accounts | Full Postgres in Docker, never expires |
| Custom domain | Yes | No (paid only) | Yes, unlimited |
| TLS | Automatic | Automatic on their subdomain | Free via Let's Encrypt/Caddy |
| Bandwidth | 100 GB/mo | Fair-use CPU cap binds first | 20 TB/mo (200× Render) |
| Storage | Ephemeral | 512 MB persistent | 40 GB NVMe persistent |
| Languages | Any (Docker/native) | Python only | Any (it's your Linux box) |
| Services per dollar | 1 sleepy app | 1 small app | 5–10 containers comfortably |
| Year-1 total | USD 0 (or ~USD 84 with durable DB) | USD 0 | ~€54 (~USD 60) |
Three numbers in that table do most of the arguing. Eight times the RAM means the CX22 runs your app, Postgres, Redis, and a staging copy at once while a free tier nurses one process. Two hundred times the bandwidth means traffic stops being a line item you monitor. And USD 60 a year — against USD 84 a year for the cheapest durable Render setup — means the owned box is not just more capable, it is cheaper than the free tier's own upgrade path the moment your database matters.
Add Hetzner's automated backups at +20% (under €1/month) and the box still lands near USD 70 a year: below one month of Vercel Pro, below six months of durable Render.
The honest variable: your ops time
The table above prices machines, not evenings. The real cost of the CX22 column is the setup and feeding: an evening to install Docker, Caddy, and Postgres, open the firewall, and point DNS — plus ongoing OS patching, Postgres upgrades, and being your own on-call when a disk fills at 2 a.m. Render and PythonAnywhere sell the absence of exactly that work, and for a weekend experiment the absence is worth more than 4 GB of RAM.
So run the sensitivity honestly, on the variables that actually move the decision:
- Lifespan under 30 days? Free wins. A prototype you will throw away never meets the database cliff, and zero setup is zero setup.
- Python-only, learning-shaped? PythonAnywhere wins. The deploy wizards and web consoles are built for exactly this, and 100 CPU-seconds a day is plenty for coursework.
- Needs to exist in month two? Owned wins. Both free tiers have a month-one expiry shaped somewhere — Render's database, PythonAnywhere's renewal click — and migrating a live app with live data under a deadline is the most expensive migration there is.
- Custom domain, non-Python stack, webhooks, or more than one service? Owned wins, usually immediately. Each of these is either impossible or an upgrade trigger on the free tiers and a config line on your own box.
- Zero ops appetite, durable data, real users? Neither — this is the paid-PaaS slot (USD 7–14/month on Render, USD 5–20 elsewhere), where someone else carries the pager. The five-dollar VPS is cheap because you are the ops team; price your evenings accordingly.
Notice what is not on the list: traffic. At 100 GB on Render's free tier versus 20 TB on the CX22, bandwidth only binds if you are streaming video or going viral — and going viral on a service that sleeps after 15 idle minutes is a failure mode, not a plan.
Verdict: which side of the line to start on
Free-forever hosting in September 2026 is not dead, but it has narrowed to a precise shape: Render for any-stack demos with a 30-day data horizon, PythonAnywhere for Python learning and tiny tools. Both are genuine, both are capped, and both expire in spirit — if not in letter — around week five.
The decision rule that falls out of the numbers:
- Start free if the project might not survive the month, is Python-only, needs no custom domain, and has no data you would mourn. The free tiers are prototyping fuel; burn them as fuel.
- Start owned if you want the thing to exist in month two, need your own domain, run anything but Python, or will ever add a second service. A CX22-class box at ~USD 5/month is cheaper than every free tier's upgrade path and removes every ceiling at once.
- Start paid-PaaS only when you have priced your own ops time above USD 7–14/month and mean it — real users, real pager, someone else's pager.
The natural path most side projects actually take is Render free → Hetzner: prototype where deploys are git pushes and the pager is someone else's, then move home to a box you own before the 30-day database cliff makes the decision for you. The migration is a weekend — Docker Compose, Caddy for TLS, pg_dump across — and it is dramatically cheaper as a planned move than as a rescue.
The free tier earned its obituary; two survivors holding the line is not an ecosystem. The good news is that the owned side of the line has never been cheaper: for the price of one coffee a month, the ceiling is gone.
Bex.co is the open-source, AI-native Render alternative — push a git repo, get a running HTTPS service on machines you own. Star the repo on GitHub or deploy your first app today.



