15 million static sites. That’s how many GitHub Pages powers in 2026, according to their own metrics — free, reliable, and dodging the price hikes hitting Netlify and Vercel.
Deploy Jekyll to GitHub Pages? Yeah, it’s still the no-BS choice for devs who hate vendor lock-in. But the built-in builder? Crippled. Limited gems, no custom plugins. Enter GitHub Actions: your ticket to full Jekyll freedom, zero dollars.
I’ve covered this since the gh-pages branch days in 2013. Back then, it was magic — pure HTML/CSS/JS, no servers. Fast-forward (sorry, can’t help it), and everyone’s chasing ‘Jamstack’ riches. Who’s winning? Microsoft via GitHub enterprise upsells, that’s who. You’re the free user they hook.
Why GitHub Pages Beats Paid Hosts in 2026?
Look, Vercel’s got edge functions now, fancy. But $20/month for basics? Nah. GitHub Pages: unlimited bandwidth, global CDN baked in. Add Cloudflare? You’re laughing at AWS bills.
The original setup’s solid. Here’s their workflow gold:
This workflow uses the official upload-pages-artifact + deploy-pages pattern, the recommended approach since 2024 that avoids pushing to a gh-pages branch.
Smart. No more branch dance. Push to main, Actions builds with Ruby 3.3, bundles your gems — jekyll-feed, seo-tag, whatever — spits out _site, deploys. Two minutes flat.
Test locally first. Ruby 3.1+, Jekyll 4.3. Tweak _config.yml: url to your domain, baseurl empty. Gemfile locks it down. Push. Done.
Custom domain? CNAME file with ‘yourdomain.com’. Settings > Pages > enter it. Cloudflare DNS: those four 185.199 IPs, proxied. www CNAME to yourusername.github.io. Enforce HTTPS. Boom.
And Cloudflare tweaks — auto-minify, Brotli, 4-hour cache — turn it production-grade. Free DDoS shield too. Dig yourdomain.com; curl -I for headers. CF-RAY proves edge hits.
Is Full Jekyll Plugin Support a Big Deal?
Hell yes, if you’re not chasing Next.js hype. Jekyll’s Ruby heart means themes, plugins galore. Built-in builder chokes on ‘em. Actions? Unlimited. That’s the unlock.
But here’s my take — the unique bit you won’t find in tutorials: GitHub’s playing long game. Free Pages funnels you to Actions (paid minutes at scale), Copilot, Codespaces. Remember Heroku’s free tier death in 2022? GitHub won’t kill this; it’s their dev magnet. Prediction: stays free through 2030, minimum.
Skeptical? Check the feature table:
| Feature | Status |
|---|---|
| Unlimited plugins & custom gems | ✔ via GitHub Actions |
| Custom domain | ✔ CNAME file + DNS |
| HTTPS / TLS | ✔ Let’s Encrypt via GitHub |
| Global CDN | ✔ Cloudflare |
| DDoS protection | ✔ Cloudflare |
| Deploy on push | ✔ Auto via Actions |
| Cost | $0 |
Zero-cost CI/CD. Every push deploys. No Stripe nagging.
Wandered into pitfalls? Old 192.30 IPs deprecated — use 2026’s 185s or 404s forever. Cloudflare SSL: Full, not Strict (GitHub’s certs). Redirect www. Simple.
I’ve seen devs ditch this for ‘modern’ stacks. Regret it when invoices hit. Jekyll’s mature, fast builds. Actions cache bundler — sub-minute after first.
Permissions matter: contents read, pages write, id-token. Concurrency kills old builds. Polish.
One gripe: GitHub’s UI lags sometimes. Workflow_dispatch for manual. But 99.9% uptime? Rock solid.
Scale it. Portfolio? Blog? Docs site? Handles 100k pv/month easy. Cloudflare edges it global.
Who’s making money? Not you. GitHub locks ecosystem. Cynical? Sure. Effective? Damn right.
Deploy Jekyll to GitHub Pages: Step-by-Step (No Fluff)
Blank repo. Add _config.yml, Gemfile. .github/workflows/deploy.yml — copy-paste above. Settings > Pages > GitHub Actions source. Push.
Domain flow: CNAME commit. DNS set. Propagate. Enforce HTTPS. Cloudflare rules.
Verify: dig, curl. Live.
That’s it. No ‘revolutionary’ BS. Just works.
🧬 Related Insights
- Read more: One Dev’s Raw Fight to Make Unity Multiplayer Work – FishNet Edition
- Read more: Scraping DoorDash Menus in 2026: Code That Dodges the Bots
Frequently Asked Questions
What are the GitHub Pages IPs for custom domains in 2026?
185.199.108.153, 185.199.109.153, 185.199.110.153, 185.199.111.153 — proxied via Cloudflare.
Does GitHub Pages support full Jekyll plugins?
Yes, via GitHub Actions workflow — bypasses built-in limits.
How to add custom domain to GitHub Pages with Cloudflare?
CNAME file, DNS A/CNAME records, proxy on, Full SSL, HTTPS enforce.