The cheapest way to host a website in 2026
A static site can cost nothing to host; here are prices and limits as checked on 17 October 2026, and three traps this site hit.
A static site does not need a hosting plan. It needs a CDN and a domain.
The hosting can cost nothing. The domain is the bill.
The verdict
For HTML, CSS and JavaScript with no server code, use Cloudflare Pages. Requests to static assets are free and unlimited on every plan1.
Cloudflare now steers new projects to Workers, where static asset requests are also free and unlimited2. Pages still works, and this site runs on it3.
The free tiers, side by side
Prices and limits as checked on 2026-10-17. Vendors change them often, so check again before you commit.
| Host | Price | Bandwidth | Main limits | Watch for |
|---|---|---|---|---|
| Cloudflare Pages | $0 | Static requests free and unlimited | 500 builds a month, 20,000 files, 25 MiB per file | Pages Functions count against Workers quotas |
| GitHub Pages | $0 | 100 GB a month, soft limit | 1 GB site; 10 builds an hour, soft | Not for online stores, SaaS or commerce |
| Netlify Free, new accounts | $0 | Billed in credits, 20 per GB | 300 credits a month; 15 per production deploy | Sites pause when credits run out |
| Netlify Free, legacy accounts | $0 | 100 GB a month, hard limit | Accounts opened before 2025-09-04 | Paid legacy plans bill $55 per extra 100 GB |
Sources: Cloudflare4, GitHub5 and Netlify6.
Do the Netlify math. With no deploys at all, 300 credits buy at most 15 GB of transfer. Requests cost extra, at 2 credits per 10,0006. Ten production deploys cost 150 credits and leave under 7.5 GB.
When the credits run out, every site on the account shows "Site not available" until the next billing cycle, or until you upgrade6. The old version of this page quoted Netlify Free at 100 GB a month7. That now holds only for legacy accounts.
Free builders cost credibility
A free Wix site carries a Wix banner ad at the top, and removing it takes a paid plan8. A consultant's site with a builder's banner tells a buyer the wrong story.
Infrastructure hosts like Pages serve your files as uploaded, with no badge. Mostly. See the second trap below.
The domain is the real bill
Cloudflare sells .com domains at cost, with no markup9. The price is $10.46 a year to register or renew, as listed on 2026-10-1510. On 1 November 2026, Verisign's wholesale .com price rises from $10.26 to $10.9711. Expect at-cost registrars to pass the 71 cents through.
The old page quoted $9.77 a year7. That figure is stale. Judge any registrar by its renewal price, not its first-year offer.
Three traps this site hit
- No 404 page means every bad link "works". Without a top-level
404.html, Pages treats a project as a single-page app and serves the home page for unknown paths12. - The edge can change your bytes. With Web Analytics on, Cloudflare adds a beacon script to every page it serves a browser.
.htmllinks cost a redirect. Pages redirects/page.htmlto/page12, so link to the extension-less path.
Before the 404 fix, five missing paths here, including robots.txt and sitemap.xml, returned the home page with HTTP 20013. On the home page, the build made no third-party request; production made one14. If you promise "no third-party requests", switch Web Analytics off or say so. My probe got a 308 for the one .html link it tried13.
One fix comes free. A _headers file in the site sets response headers, and this site has used one for its Content-Security-Policy since 2026-10-143.
How to ship it
- Build the site as plain files with relative links.
- Add
404.html,robots.txtandsitemap.xmlbefore the first deploy. - Create a Pages project, then upload the folder or connect a Git repository.
- Attach the custom domain in the project settings; Cloudflare issues the certificate.
- Request a made-up path and confirm it returns 404.
What this means for your BI team
- Static hosting suits public, read-only material: a KPI glossary, a data dictionary, a migration runbook or a public chart.
- Never put internal data there: a static URL is public unless you add access control.
- Keep edge settings in the repository: headers, redirects and the 404 page get reviewed like code.
- Probe production, not the build: what the edge serves can differ from what you shipped.
- Read the pricing model, not only the price: credits, soft limits and hard pauses behave differently on your busiest day.
Notes
- Cloudflare Docs, Pages Functions pricing, accessed 2026-10-17. ↩︎
- Cloudflare Docs, Cloudflare Pages, which says "Start new projects with Workers", and Workers static assets: billing and limitations; both accessed 2026-10-17. ↩︎
creation-test/danieljin-site/claude-opus-5.5_max/index.md, Deploy section and "2026-10-14: Content-Security-Policy". ↩︎- Cloudflare Docs, Pages limits, accessed 2026-10-17. ↩︎
- GitHub Docs, GitHub Pages limits, accessed 2026-10-17. ↩︎
- Netlify Docs, Credit-based pricing plans, How credits work, Legacy pricing plans and Resume paused projects, accessed 2026-10-17. ↩︎
- The old page,
creation-test/danieljin-site/claude-opus-5.5_max/site/research-cheapest-hosting.html, published 2026-09-04. ↩︎ - Wix Help Center, Removing the Wix banner ad and favicon, accessed 2026-10-17. ↩︎
- Cloudflare Docs, Cloudflare Registrar, accessed 2026-10-17. It says domains are bought and renewed "at cost, without markup fees". ↩︎
- cfdomainpricing.com, a third-party tracker of Cloudflare Registrar prices run by NameBeta, updated 2026-10-15 and accessed 2026-10-17. ↩︎
- Verisign, Verisign Reports First Quarter 2026 Results, 2026-04-23, as filed with the SEC, accessed 2026-10-17. Domain Incite reported it on 2026-04-27. ↩︎
- Cloudflare Docs, Serving Pages, accessed 2026-10-17. ↩︎
creation-test/danieljin-site/claude-opus-5.5_max/tools/live-probe.txt, probe of danieljin.com at 2026-09-24 19:25 CDT. ↩︎creation-test/danieljin-site/claude-opus-5.5_max/index.md, claims 30 and 31, checked inlive-verification.json. ↩︎
Sources
Weighing a move between Tableau and Power BI?
Email Daniel