Skip to main content

Only Two Free Tiers Left: What Render and PythonAnywhere Still Give Away vs. a $5 Hetzner Box

11 min readDora NodaDora Noda
Share
On this page

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 2026Verdict
HerokuNothing since November 2022Gone
Vercel HobbyFree, but restricted to personal/non-commercial useFree with a fence
RailwayOne-time USD 5 trial credit, then a ~USD 1/mo allowanceTrial, not a tier
Fly.ioPay-as-you-go for new orgs, ~USD 2/mo floorTrial, not a tier
RenderFree web services + ephemeral free PostgresFree-forever ✓
PythonAnywhereOne free Beginner web appFree-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 itemRender freePythonAnywhere freeHetzner CX22 (~€4.50/mo)
Compute512 MB RAM, 0.1 CPU100 CPU-s/day, shared2 vCPU, 4 GB RAM (8× the RAM)
Always-onNo — sleeps after 15 min idleYes, with monthly renewal clickYes, unconditionally
Cold starts30–60 s after sleepNo sleep, but CPU-cappedNone
Postgres1 GB free, deleted after 30 daysNot included for new accountsFull Postgres in Docker, never expires
Custom domainYesNo (paid only)Yes, unlimited
TLSAutomaticAutomatic on their subdomainFree via Let's Encrypt/Caddy
Bandwidth100 GB/moFair-use CPU cap binds first20 TB/mo (200× Render)
StorageEphemeral512 MB persistent40 GB NVMe persistent
LanguagesAny (Docker/native)Python onlyAny (it's your Linux box)
Services per dollar1 sleepy app1 small app5–10 containers comfortably
Year-1 totalUSD 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:

  1. 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.
  2. 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.
  3. 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.

Related articles

Run this on infrastructure you own

bex is the open-source, AI-native Render alternative — push a git repo and get a running HTTPS service on your own machines.

Get started with bex