Building a Website for Literally Nothing: The 2025 Free Stack That Actually Works Together
Photo: Michał Frąckowiak, CC BY-SA 2.0, via Wikimedia Commons
Everybody talks about the $100 startup. Nobody talks about the $0 startup. Turns out it's still possible in 2025 — you just have to know which free tools get along, because some of the most popular ones actively fight each other in ways that won't show up until 11 PM on a Tuesday when your contact form dies for no apparent reason.
Here's the stack we'd build today, from a standing start, with a wallet containing lint.
Layer 1: The Hosting (Free, Obviously)
For a static or mostly-static site, GitHub Pages or Cloudflare Pages remain the gold standard: no forced ads, no surprise suspensions, and decent speed out of the box. If you need something dynamic — a WordPress blog, say — a reputable free-tier host works, but read the resource limits like a contract, because they are one.
The trap to avoid: stacking a free WordPress host and a free CDN and a free security plugin. Each layer adds its own caching, and three caches disagreeing with each other is the single most common 'my site is broken but only sometimes' complaint we see.
Layer 2: The Domain Workaround
You can't get a free .com (anyone offering one is selling you something else). Your realistic options:
- Free subdomains — is-a.dev, GitHub's github.io, or your host's subdomain. Fine for a portfolio, rough for a business.
- Cheap first-year domains — .xyz, .site, and .online routinely run $1–3 for year one via US registrars running promotions.
One warning: some free hosts require you to use their nameservers, which conflicts with pointing a Cloudflare-managed domain at them. If your host and your DNS provider both demand control, pick one to win. Usually the DNS provider, because you can move hosts later without re-doing everything.
Layer 3: Email — The Part Everyone Gets Wrong
Free hosting email is where dreams go to die. Free plans almost never include real SMTP sending, and if they do, your messages are landing in Gmail's spam folder anyway.
The move: keep your website on the free host, but route email through a free tier of a transactional email service or a forwarding service (ImprovMX and Cloudflare Email Routing both have generous free plans). Forward [email protected] to your personal Gmail, and send via Gmail's 'Send As' feature with your own SMTP credentials.
Compatibility alert: if you use Cloudflare for DNS and their Email Routing, don't also add a third-party forwarding service. MX records can only point one direction, and the second service will silently overwrite the first.
Layer 4: Analytics Without the Bloat
Google Analytics 4 is free and fine. Plausible and Fathom are better but paid. Umami has a free self-hosted tier if you're feeling ambitious.
The conflict nobody warns you about: ad blockers now aggressively block anything named 'analytics' or loaded from Google's domains. If your audience is, say, developers on Reddit, expect GA4 to undercount by 30–50%. That's not your stack breaking — that's your audience's browser extensions doing their job.
Layer 5: The CDN (Or Not)
Cloudflare's free tier is genuinely excellent and pairs well with almost everything. The one combo that fights: Cloudflare's caching + a free WordPress host that also caches + a caching plugin. Pick exactly one caching layer. If your images look stale or your CSS updates take hours to appear, this is why. Purge everything, then delete two of the three caches permanently.
The Combinations That Fight Each Other
Quick reference from our own support-ticket archaeology:
- Two caching layers → stale content, random 500 errors
- Two email forwarders on one domain → mail black-holed
- Free host nameservers + external DNS → DNS conflicts, intermittent downtime
- Free SSL from host + CDN SSL → redirect loops (the classic 'too many redirects' white screen)
- Free analytics + aggressive security plugin → your own visits blocked
The Bottom Line
The winning 2025 stack for $0: static site on GitHub Pages or Cloudflare Pages, domain on a $2 promo, email forwarded through Cloudflare or ImprovMX, GA4 or Umami for numbers, and one — count it, one — caching layer.
Build it in this order: hosting, domain, email, analytics. Add complexity only when something actually breaks, not before. Broke today, bulletproof tomorrow.