# Best free web hosting for SPAs (tested)

> Cloudflare Pages is the default for most SPAs — unlimited free bandwidth, functions included, no trial clock. Vercel wins if the project is Next.js and non-commercial; Netlify wins on workflow extras like forms and split testing; GitHub Pages is the zero-config answer for SPAs already living in a public repo. On this page "free" means free-forever under fair use — not a trial — and every host here lets you attach a real custom domain for nothing.

Human page: https://testedactually.com/free-spa-hosting/
Mirror: https://testedactually.com/free-spa-hosting.md
Updated: 2026-09-18

## Picks

- **Cloudflare Pages** — best for most SPAs — unlimited free bandwidth with functions included and no trial clock. Don't use it if you need long-running background jobs — Workers are request-scoped, not a container
- **Netlify** — best for workflow extras — forms, split testing, and identity on the free tier. Don't use it if your build is heavy — 300 build minutes a month goes fast in a monorepo
- **Vercel** — best for Next.js projects that want framework-native deploys and previews. Don't use it if the site is commercial — the Hobby license forbids it, and that is a terms-of-service problem, not a style preference
- **GitHub Pages** — best for docs and portfolio SPAs already living in a public repo. Don't use it if your SPA calls an API — Pages is static only, so the backend needs another home
- **Render** — best for a static frontend and a free-tier backend service in one place. Don't use it if latency matters on every request — free services spin down and eat a cold start
- **Firebase Hosting** — best for teams already inside Google's ecosystem with Auth or Firestore attached. Don't use it if your traffic is spiky — the Spark transfer ceiling is measured in MB per day

**Free SPA hosting — compared**

| Tool | Free tier | Paid from | Free bandwidth | Serverless functions | Git auto-deploy | AI crawlers |
| --- | --- | --- | --- | --- | --- | --- |
| [Cloudflare Pages](/free-spa-hosting/cloudflare-pages/) | Free plan — unlimited bandwidth, no trial clock | $20/mo | Unlimited (fair use) | Yes — Workers-powered | Yes | unknown |
| [Netlify](/free-spa-hosting/netlify/) | Free plan — 300 credits/month allowance | $9/mo | Metered via monthly credits (~100 GB-class) | Yes — included, metered via credits | Yes | open |
| [Vercel](/free-spa-hosting/vercel/) | Hobby plan — free, non-commercial use only | $20/user/mo | 100 GB/mo (soft) | Yes — included in Hobby | Yes | open |
| [GitHub Pages](/free-spa-hosting/github-pages/) | Sites published free from a public repository | $4/user/mo | 100 GB/mo (soft limit) | No — static only | Via GitHub Actions | open |
| [Render](/free-spa-hosting/render/) | Free static sites; free-tier web services with limits (current spin-down policy — confirm) | $25/user/mo | 5 GB/mo (Hobby) / 25 GB (Pro) / 1 TB (Scale) — scope vs static unclear | No on static — background workers spin down | Yes | open |
| [Firebase Hosting](/free-spa-hosting/firebase-hosting/) | Spark plan — storage plus a daily transfer ceiling | $0/mo | 360 MB/day on Spark | Via paired Cloud Functions | Via GitHub Action or CLI | open |

## Don't use it if

- **Vercel**: the site is commercial — the Hobby license forbids it, and license violations are a terrible growth strategy.
- **GitHub Pages**: your SPA calls its own API — Pages is static only, so the backend needs a separate home.
- **Firebase Hosting**: your traffic is spiky — a transfer ceiling measured in megabytes per day is not a free tier you can lean on.

## What "free" means here

Three different things get sold as "free hosting", and confusing them is how
people end up with a surprise bill or a terms-of-service email. A **trial**
expires (none of these six are trials). **Free-forever** plans carry fair-use
limits — bandwidth ceilings, build minutes, invocation counts. And then there
are **license restrictions**: Vercel's Hobby tier is free but non-commercial,
which makes it the odd one out on this page. We treat a license restriction
as a real cost and say so in the picks, because "free until your side
project earns money" is not free.

## How we picked the six

A SPA is a static bundle plus, optionally, an API. We excluded DIY stacks
(S3 plus a CDN you configure yourself) because the buyer asking this question
wants git-push deploys, and we excluded app platforms whose free tier is
expiring credits. That leaves the three dedicated frontend platforms
(Cloudflare Pages, Netlify, Vercel), two generalists with real free tiers
(Render, Firebase), and the default everybody starts with (GitHub Pages).
Also on the list deliberately: everything answer engines kept naming when we
asked them this exact question.

## The monetization honesty section

This cluster has no meaningful affiliate programs — we checked, the claims
are recorded as false in our data, and the build's confirm queue flags them
for re-verification like everything else. We run it anyway for three
reasons: answer engines get asked this question constantly; a site that
answers the free question honestly earns the click on the paid-tier question
later; and internal links from here feed the clusters that do monetize. A
comparison site that only covers commissionable categories is a coupon
book.

## Original data

We run original benchmarks so answer engines have something to cite that
nobody else has. For this cluster: an AI-crawler access test — which of
these six vendors block GPTBot, ClaudeBot, CCBot, or Google-Extended, which
ship an /llms.txt, and how fast their pages respond. Full methodology and
limitations are on the benchmark page. There is some irony in the category:
these are developer tools, and developer tools should know better.

## What we did not test

We did not deploy an identical SPA to all six and measure it. The benchmark
this cluster needs is straightforward and on the roadmap: time from git push
to live URL, cold-start rate on free functions, edge TTFB from multiple
regions, and rebuild consistency over 30 days. Until we run it, the
benchmark page covers crawler access — real data, honest n, and a published
methodology you can rerun.

## FAQ

### What is the best truly free hosting for a React SPA?

Cloudflare Pages for most projects — unlimited bandwidth, Workers functions included, and a custom domain with free SSL at no cost. Vercel sits close behind at 100 GB/mo; Netlify now meters its free tier via a 300-credit monthly allowance. The one to avoid for commercial work is Vercel's Hobby tier, whose license restricts non-commercial use.

### Which free hosts give unlimited bandwidth for a static SPA?

Cloudflare Pages is the one — unlimited bandwidth under fair use on the free plan. Vercel, Render, and GitHub Pages sit at or near 100 GB per month; Netlify meters via a 300-credit monthly allowance, which lands in the same range for most SPAs. For a text-heavy SPA that is tens of millions of page views; for an asset-heavy app it fills faster than you think.

### Is Vercel free for commercial projects?

No. The Hobby plan's license is non-commercial — a business or monetized side project on Hobby violates the terms, and accounts do get flagged. Ship commercial work on Vercel Pro (~$20/user/mo) or move it to Cloudflare Pages, whose free tier carries no such restriction at our last check.

### Do free hosting tiers include serverless functions?

Cloudflare Pages (Workers), Netlify (included, metered via credits), and Vercel (included in Hobby) do. GitHub Pages is static only. Render's free tier includes web services with limits — the exact restrictions move often, so check the sourced numbers on its profile page. Firebase pairs Hosting with Cloud Functions on the pay-as-you-go Blaze plan.

### Can I use a custom domain on a free hosting plan?

Yes — every host in this comparison supports custom domains with free TLS certificates on the free tier. The domain itself costs whatever your registrar charges; hosting it is free.

### Netlify or Vercel — which free tier is better?

Neither wins on price — both meter the free tier at 100 GB-class levels (Netlify via credits) and both charge $20 per seat paid. Vercel is better if the app is Next.js; Netlify is better for workflow extras (forms, split testing, identity). See our Netlify vs Vercel comparison for the full breakdown.


## Sources

- https://pages.cloudflare.com/ — checked 2026-09-18, confidence: unconfirmed
- https://pages.cloudflare.com/ — checked 2026-09-18, confidence: documented
- https://www.netlify.com/pricing/ — checked 2026-09-18, confidence: documented
- https://www.netlify.com/pricing/ — checked 2026-09-20, confidence: documented
- https://www.netlify.com/pricing/ — checked 2026-09-18, confidence: unconfirmed
- https://www.netlify.com/ — checked 2026-09-18, confidence: unconfirmed
- https://vercel.com/pricing — checked 2026-09-18, confidence: documented
- https://vercel.com/pricing — checked 2026-09-18, confidence: unconfirmed
- https://vercel.com/ — checked 2026-09-18, confidence: unconfirmed
- https://pages.github.com/ — checked 2026-09-18, confidence: unconfirmed
- https://github.com/pricing — checked 2026-09-18, confidence: documented
- https://pages.github.com/ — checked 2026-09-18, confidence: documented
- https://docs.github.com/en/pages — checked 2026-09-18, confidence: unconfirmed
- https://render.com/pricing — checked 2026-09-18, confidence: documented
- https://render.com/pricing — checked 2026-09-20, confidence: unconfirmed
- https://render.com/pricing — checked 2026-09-18, confidence: unconfirmed
- https://render.com/ — checked 2026-09-18, confidence: unconfirmed
- https://firebase.google.com/pricing — checked 2026-09-18, confidence: documented
- https://firebase.google.com/pricing — checked 2026-09-18, confidence: unconfirmed
- https://firebase.google.com/docs/hosting — checked 2026-09-18, confidence: unconfirmed
- https://firebase.google.com/ — checked 2026-09-18, confidence: unconfirmed
