You can run a website for free. Not “free with a catch buried on page 9,” but actually $0/month. The trade-offs are real-subdomains, usage caps, sometimes branding, and limited support-but if your site is static or a small app, you have solid zero-cost paths in 2025. I’ll map them out, give you simple steps, and flag the gotchas so you don’t get surprised by throttling or surprise bills.
You probably want to do a few things right now:
- Pick a free hosting stack that won’t go offline next month.
- Know if you can use your own domain or must live on a subdomain.
- Ship a site today (portfolio, blog, landing page, or a basic app) with free SSL.
- Avoid provider limits that quietly kill performance or features.
- Learn when to upgrade so you keep costs tiny and predictable.
- TL;DR: Free is realistic for static sites and small serverless apps. Dynamic, high-traffic sites usually need at least a cheap plan.
- Best $0 stacks: GitHub Pages, Cloudflare Pages, Netlify, Vercel, Firebase Hosting. For blogs: WordPress.com Free, Blogger (subdomain), or static blog generators.
- Custom domain isn’t free. Expect $10-$15/year. SSL is free via Let’s Encrypt on most modern hosts.
- Watch quotas: bandwidth caps, function limits, build minutes, and daily request ceilings. Set usage alerts on day one.
- Rule of thumb: if your site is static, under ~50 pages, and under ~50k monthly pageviews, you can likely stay at $0 with smart caching.
What “free” really means in 2025
Think in parts: domain, DNS, hosting, compute, storage, bandwidth, database, SSL, email, and support. Some are free now, some aren’t.
- Domain: Not free. Standard .com or .org is about $10-$15/year. “Free domains” tied to obscure TLDs or promos often lead to instability or clawbacks. Stick to reputable registrars.
- DNS: Often free. Cloudflare’s free plan is popular and fast. Your registrar usually includes basic DNS too.
- Hosting (static): Truly free on GitHub Pages, Cloudflare Pages, Netlify, Vercel, and Firebase Hosting. You connect a repo, they build and serve.
- Compute (serverless): Free tiers exist (Cloudflare Workers, Vercel Functions, Netlify Functions) with request/time caps. Good for small APIs, forms, and light logic.
- Database: Free tiers exist (e.g., Supabase, Neon, Firebase). Enough for prototypes and low-traffic apps. Expect caps on storage, connections, or throughput.
- SSL: Free and automatic almost everywhere via Let’s Encrypt. No reason to run without HTTPS.
- Bandwidth/CDN: Free tiers vary. Static hosts rely on global CDNs, but fair-use policies apply. Media-heavy sites (videos, big images) hit limits fast.
- Email/contact forms: Email sending usually needs a provider. Free tiers exist (limited daily/monthly sends). For simple contact, use Netlify Forms or a privacy-friendly form service on a free plan.
- Analytics: Google Analytics is free. Cloudflare Web Analytics is free. Privacy-focused options like Plausible cost a few dollars but are lightweight.
- Support and uptime: Free plans have community support and best-effort uptime. No SLAs. If your site is critical, budget even a small paid tier.
So, can you run a website for $0? Yes, if you:
- Accept a subdomain (e.g., username.github.io or yoursite.netlify.app), or buy a domain separately.
- Keep your site lightweight and cacheable.
- Design around free tier caps: function calls, builds, storage, and bandwidth.
I’ve shipped portfolios, landing pages, and small Next.js apps this way. They load fast, get good Core Web Vitals, and stay free until traffic grows. When it does, the upgrade path is smooth-most hosts let you keep the same stack.
Three zero-cost blueprints you can ship today
Pick the path that matches your site type. I’m giving you the shortest workable steps so you can go live today, not next week.
Blueprint A: 10-minute static site on GitHub Pages (portfolio/docs)
- Create a GitHub account. Make a new public repo named username.github.io (replace with your GitHub username).
- Add an index.html (start simple) or use a static site generator like Jekyll/Hugo/Astro locally, then commit the built output.
- In repo settings, enable GitHub Pages. Choose main branch / root or /docs.
- Wait 1-2 minutes. Your site appears at https://username.github.io by default with HTTPS on.
- Optional: If you own a domain, add a CNAME file and point your DNS to GitHub’s Pages endpoints. HTTPS will auto-issue via Let’s Encrypt.
- Good for: resumes, portfolios, docs, small blogs. No server-side code needed.
- Watch for: bandwidth cap (~100 GB/month commonly cited in GitHub Pages docs) and repo size (about 1 GB). Avoid bundling huge images and fonts.
Pro tip: Use an image pipeline. Export images at 1400-1600px max width, compress to WebP, lazy-load below-the-fold media. That alone keeps you safe under free caps for a long time.
Blueprint B: Static site with custom domain on Netlify, Vercel, or Cloudflare Pages
- Choose a static generator (Astro, Hugo, Next.js static export). Create your project locally.
- Push your repo to GitHub. Keep dependencies lean; ship as few client-side scripts as you can.
- Connect the repo to your host (Netlify, Vercel, or Cloudflare Pages). Set the build command and output directory.
- On deploy, you’ll get a free subdomain (e.g., yoursite.netlify.app). Add your custom domain if you have one and let the host issue SSL.
- Set basic headers: caching for assets, security headers (Content-Security-Policy, X-Frame-Options), and redirects.
- Why this path? You get CI/CD, instant rollbacks, environment variables, and a CDN-still at $0 on free tiers.
- Typical free limits (as of 2025): Netlify offers starter bandwidth and build minutes; Vercel Hobby allows custom domains and serverless with fair-use caps; Cloudflare Pages gives generous builds and rides on Cloudflare’s global CDN. Check each provider’s pricing page for exact current numbers.
- Extras: Netlify Forms (limited free submissions), Vercel/Cloudflare image optimization, and KV/Edge DBs on free allowances for simple use cases.
Pro tip: If you need a blog UI, use a git-based CMS like Decap (formerly Netlify CMS). It’s free, works with static sites, and edits content in your repo.
Blueprint C: A small dynamic app on serverless + a free database
- Stack pick: Next.js or Remix on Vercel/Netlify/Cloudflare Pages for the frontend plus serverless functions for API routes.
- Database: Start with a free tier-Supabase (Postgres + Auth + Storage), Neon (Postgres), or Firebase (NoSQL + Hosting). Create a project and note credentials.
- Environment: Add DB credentials as environment variables in your host. Ship a minimal schema and a migration script.
- Auth: Use the provider’s built-in auth (e.g., Supabase Auth) or a simple OAuth library to dodge building auth from scratch.
- Rate limits: Add caching (CDN or edge), debounce expensive API calls, and paginate results so you stay under daily request caps.
- Good for: MVPs, dashboards, simple APIs, tiny SaaS experiments.
- Reality check: Free DBs have storage and connection caps. Serverless has cold starts and execution time limits. It’s fine at low volume; plan to upgrade if you hit traction.
What about free WordPress? Two paths:
- WordPress.com Free: Easy, includes a subdomain (yoursite.wordpress.com), no plugins, and WordPress.com may show ads. Great for personal blogs.
- Self-hosted WordPress: Truly free hosting is rare. You can run it on a free VPS (e.g., always-free tiers from some clouds), but server admin and reliability become your responsibility. For non-technical users, this is not worth the stress.

Real limits, comparisons, and where “free” bites
Free tiers are generous enough to be useful, but they aren’t bottomless. A quick glance helps you plan around caps.
Platform | Type | Custom Domain | Ads/Branding | Typical Free Limits (as of 2025) | SSL | Best For |
---|---|---|---|---|---|---|
GitHub Pages | Static hosting | Yes | No forced ads | ~1 GB repo; ~100 GB/mo bandwidth; build rate limits | Auto via Let’s Encrypt | Portfolios, docs, simple blogs |
Cloudflare Pages | Static + Functions | Yes | No forced ads | Generous CDN; ~500 builds/mo; Workers free request caps | Auto | Static apps with light API logic |
Netlify (Starter) | Static + Functions | Yes | No forced ads | Build minutes + bandwidth caps; forms/logins limited | Auto | Marketing sites, landing pages |
Vercel (Hobby) | Static + Serverless/Edge | Yes | No forced ads | Fair-use bandwidth; function/edge quotas; cold starts | Auto | Next.js apps, prototypes |
Firebase Hosting (Spark) | Static + Functions | Yes | No forced ads | Hosting storage ~10 GB; egress ~360 MB/day (Spark) | Auto | SPAs, PWAs with Firebase backend |
WordPress.com Free | Managed blog | No (paid feature) | WordPress.com branding/ads | ~1 GB storage; limited customization | Auto | Personal blogging |
Wix Free | Site builder | No (subdomain only) | Wix branding/ads | ~500 MB storage; ~1 GB bandwidth | Auto | Quick drag-and-drop sites |
Blogger | Blog platform | Yes (you must own domain) | No forced ads | Storage tied to Google account; simple templates | Auto | Simple blogs on a budget |
These numbers are from provider docs/pricing pages as of September 2025. They can change. Before you ship, eyeball the latest plan details and set alerts.
Common cost traps and how to dodge them:
- Big media files: Host videos on YouTube/Vimeo or a dedicated streaming service. For images, compress and serve WebP/AVIF.
- Uncached APIs: Add cache headers or a small KV cache at the edge. Most free costs are driven by uncached requests.
- Build minutes: Pick a fast generator (Hugo/Astro). Avoid rebuilding the world for tiny content edits.
- Forms/Email: Use a free form endpoint or mailto link for low volume. For email sending, pick a provider with a free tier and verified domain to protect deliverability.
- Spikes: If you get on Hacker News or Reddit, free tiers can throttle. Set a quick upgrade plan (keep a payment method ready, cap spend, and enable CDN-level caching).
Quick heuristic if you’re unsure:
- Static, low-traffic, or content-first → a free static host is perfect.
- Needs login, checkout, or heavy queries → start free but plan a cheap paid tier. Expect $5-$20/month once you have real usage.
- Mission-critical (business site that must be up) → pay a little from day one for support and SLAs.
Checklists, FAQs, and when to upgrade
Here’s the practical stuff I wish people always had on one screen.
Free launch checklist (static):
- Pick host: GitHub Pages, Netlify, Vercel, or Cloudflare Pages.
- Repo ready: README, license, and a clean package.json if applicable.
- Build config: define build command and output folder; test locally.
- Assets: compress images, self-host only the fonts you use, preload your main font, defer non-critical scripts.
- SEO basics: title/description tags, open graph tags, a sitemap.xml, robots.txt, canonical URLs.
- Analytics: add GA or Cloudflare Web Analytics.
- SSL: confirm HTTPS is active; force HTTPS via redirects.
- Backups: keep your repo on GitHub and mirror to a second remote or enable branch protection.
Free launch checklist (dynamic):
- Serverless host chosen and project scaffolded (Next.js/Remix).
- Database created (Supabase/Neon/Firebase), env vars set in the host.
- Schema and seed script ready; run migrations in CI.
- Auth chosen; session management tested; CSRF protection on forms.
- Cache strategy: edge cache for GET routes; stale-while-revalidate where possible.
- Rate limits: serverless middleware to cap abusive traffic.
- Monitoring: basic logging enabled; set alert emails for errors and quota thresholds.
Security and reliability basics (even on free):
- Use security headers. A minimal Content-Security-Policy stops many common issues.
- Rotate API keys if you commit them by mistake; never keep secrets in the repo.
- Enable 2FA on all provider accounts.
- Keep a copy of env vars and DNS records in a secure notes app or password manager.
Mini‑FAQ
- Can I get a truly free domain? No, not for common TLDs. Subdomains are free (e.g., yoursite.netlify.app). “Free domain” promos are unreliable or short-lived.
- Do free hosts show ads? Some builders do (Wix Free, WordPress.com Free). Developer-centric hosts (GitHub Pages, Netlify, Vercel, Cloudflare Pages) do not inject ads.
- Is SSL free? Yes. Modern hosts issue and renew Let’s Encrypt automatically on subdomains and custom domains.
- Will my site be slow? Static sites on a CDN are fast. Heavy client-side scripts and big images are what make sites slow-trim them.
- What about email at my domain? Email hosting isn’t covered by most free plans. Use forwarding (some providers offer a free tier) or budget a few dollars/month.
- Can I run e-commerce for free? You can place a static catalog on a free host and embed buy buttons from a processor. For carts, inventory, and webhooks, expect to leave free tiers quickly.
- Will my free site disappear? Providers can change limits or disable inactive projects. Keep local backups and a path to migrate.
Next steps and troubleshooting by scenario
- Student portfolio: Use GitHub Pages or Cloudflare Pages with a static generator. Buy a domain if you can swing $12/year-it looks far more professional. Add a PDF resume and a projects page.
- Local business site: Start on Netlify or Vercel with a clean static template. Keep it fast and simple. If you need a contact form, use a form endpoint with spam protection. If calls-to-action are phone/email, you can keep it free indefinitely.
- Personal blog: If you hate setup, WordPress.com Free or Blogger is fine. If you like speed and control, use Hugo/Astro + Git-based CMS on a free static host.
- Indie hacker MVP: Next.js on Vercel + Supabase/Neon. Launch on free tiers with rate limits and logging. Add a paid plan the moment you see consistent users.
- Nonprofit/club: Cloudflare Pages for the site, Cloudflare DNS, and a cheap domain. Keep content static and forms simple. Ask for nonprofit discounts early if you plan to upgrade later.
When to upgrade (and by how much):
- Traffic >50k pageviews/month or assets >1-2 GB: move to a small paid tier on the same host to lift bandwidth caps.
- Dynamic features growing: pay for a DB plan with predictable connections and backups.
- Mission-critical site: pay a little for support and SLAs. Think of it like insurance.
Final thought: free is great to prove value and ship fast. Once the site matters to you or to users, spending a few dollars per month is not waste-it’s how you buy stability. Until then, ride the free tiers and build the habit of small, fast, boring deployments. It works.
Oh, and if you’re comparing hosts, one keyword to remember is free website hosting. Just make sure “free” also means “fast enough” and “stable enough” for your specific use case. That’s what actually matters.