Last month I finally did some math I'd been putting off: how much I was actually paying to keep a bunch of sites online.
$39/month on Hostinger (about R$200, I'm in Brazil). For hosting 10+ sites: product landing pages, blogs, a couple of small tools. Every month, on autopilot, straight off the card.
Then I asked myself the obvious question I'd been avoiding: out of those 10+ sites, how many actually need a server running 24/7?
Answer: none.
What these sites actually are
A product landing page doesn't need PHP processing a request. A blog doesn't need a database query on every page view. A marketing site doesn't change its content every second.
That's HTML, CSS, and JS you can generate once and serve from a CDN. In other words: a static site.
A few real examples I migrated:
- eduardovillao.me → my personal blog, built with Astro
- formroute.dev → a SaaS landing page, plain HTML
- wpfeatureloop.com → a dev tool landing page, plain HTML Three different kinds of sites (blog, SaaS, dev tool), two different stacks, and none of them needed a server running around the clock just to exist.
The reason I hadn't migrated sooner wasn't technical. It was inertia. "It's already paid for, it already works, leave it alone." Classic.
The migration
I moved everything to Cloudflare Pages. The reasoning is boring because it's so simple: it's free, global CDN, automatic SSL, Git-based deploys, custom domains at no extra cost. For static sites, there's really nothing to debate.
The process, in short:
- Each site became a repo (or a folder inside a monorepo, depending on the case)
- Connected the repo to Cloudflare Pages
- Set up the build, mostly plain HTML, Astro for the blog where I wanted content collections and a proper writing workflow
- Pointed the domain, SSL came up on its own
- Cancelled hosting for that domain on Hostinger Repeated that site by site. No magic, just repetitive work, but each one took about 20-30 minutes. (If you want the technical deep dive on one specific migration, including the AI-assisted scripts and what actually broke, I wrote that up separately. This post is more about the bigger picture across the whole portfolio.)
Result: 11 sites, $0/month in hosting.
What was left: email
Static hosting solves the site, but not email. If you have contact@yourdomain.com, that's a separate service, not "hosting," and most people don't even realize they're paying for it bundled into a hosting plan.
For that I moved to EmailSpaces: custom domain email for $0.98/month, per domain. Point the MX records, done.
Doing the math: $39/month became roughly $1 per domain that actually needs professional email (not all of them do). In practice, total cost dropped over 95%.
Every new product I ship now starts this way
This wasn't just a one-time cleanup, it became the default. wpfeatureloop.com, for example, launched static from day one, no "I'll figure out hosting later." The question changed from "where do I host this" to "does this actually need to stop being static at some point."
Spoiler: it rarely does.
The piece that's still missing: forms
There's a real limitation, though. A static site doesn't run a backend. So how do you receive a contact form, a waitlist signup, or a lead if there's no server to process that POST request?
That's literally the problem that led me to build FormRoute: a form backend you point your <form>'s action to (or use the SDK for), and that's it, you get the submissions without needing your own server or backing out of the decision to go fully static.
It's the piece that closes the loop: free static hosting + ~$1/month email + working forms with no server = a product live with zero infrastructure cost until it actually gets traction.
The final numbers
- Hosting: $39/month → $0/month
- Email: bundled (and hidden) in the plan → ~$1/month per domain, only where needed
- Forms: would've needed a server → solved with FormRoute This isn't really about saving $38/month, though that already covers a coffee a day. It's about realizing that most of the sites we keep on "real hosting" never actually needed it. We just never stopped to question the plan that was already running.
And this matters more now than it did a couple of years ago. With AI, spinning up a new landing page, a new experiment, a new idea you want to test in public takes minutes, not days. If shipping the idea is fast but hosting it still feels like a decision (pick a plan, pay monthly, remember to renew), that friction is the thing slowing you down, not the idea itself. Free static hosting removes that friction completely. You ship, you see if it sticks, and if it doesn't, you didn't lose anything by trying.
If you've got a list of sites sitting on Hostinger, GoDaddy, or any traditional host today, it's worth asking that question for each one: "Does this site change in real time, or is it content I generate and serve?" If it's the second one, you're probably paying for something that should be free.
Top comments (0)