GitHub Pages vs Cloudflare Pages in 2026: Which Free Host Fits Your Site?
I moved a real site between GitHub Pages and Cloudflare Pages this month, so this comparison comes from hands-on use, not a feature matrix. Both hosts are genuinely free — no card, no trial — and both serve your site over HTTPS on a custom domain. The differences show up in the limits, how deploying feels, and how URLs behave.
The free-tier limits side by side
| GitHub Pages | Cloudflare Pages | |
|---|---|---|
| Bandwidth | 100 GB/month (soft limit) | Unlimited static requests and bandwidth |
| Site size | 1 GB maximum | 20,000 files per site, 25 MiB per file |
| Builds | 10 per hour (soft; custom Actions workflows are exempt) | 500 per month, one at a time, 20-minute timeout |
| Custom domain | Free, free HTTPS | Free, free HTTPS (100 per project) |
| Deploying from a private repo | Needs a paid GitHub plan | Works on the free plan |
Checked against the official docs in October 2026. Free tiers change — check current pricing and limits before you commit to a host.
How deploying feels
GitHub Pages is push-to-deploy: push to your branch and Actions publishes the site. Jekyll works out of the box, and any static generator runs through a workflow file. What you don't get natively: preview links for pull requests.
Cloudflare Pages connects to your repo and builds on every push, and every pull request gets a shareable preview URL you can send to someone before merging. It also deploys without Git: the CLI uploads a local folder straight to the CDN. That is how this blog publishes — a Python script generates plain HTML and one command pushes it live.
The URL quirk worth knowing
Cloudflare Pages serves clean URLs: /about.html permanently redirects to /about. GitHub Pages serves files exactly as written. It is cosmetic, but your canonical tags and sitemap should match the host you pick, or search engines crawl everything through a redirect. I hit this exact thing and had to regenerate the sitemap after moving.
So which one should you pick?
- A blog or anything that might get traffic: Cloudflare Pages. Unlimited bandwidth means a viral post never becomes a bill or a paused site.
- Docs, portfolio, or a project tied to its repository: GitHub Pages. Pushing is deploying, and the site lives next to the code.
- You want a preview link for every pull request: Cloudflare Pages.
- You generate the site locally (Hugo, a Python script, plain HTML): Cloudflare's direct upload, no repository wiring needed.
- Site larger than 1 GB: Cloudflare Pages — GitHub Pages hard-caps there.
Running both is also fair game: keep one as the primary host and the other as a mirror, which is exactly what this site does. For more free options, read Free Hosting for Developers.
My ebook Camera to Browser walks through a complete RTSP-to-WebRTC setup, with working code and troubleshooting.
Get the ebookNeed something like this built? I take freelance projects in streaming, web apps and automation. Get in touch.