Custom domain guide
How to connect a Cloudflare domain to GitHub Pages
The exact records to add at Cloudflare, written the way its form asks for them, for both www and the bare domain.
Checked 16 October 2026
In short
The records you'll add
- Type
- CNAME
- Name
- Target
Replace the capitals with your own value from the host's dashboard.
- Type
- CNAME
- Name
- Target
Replace the capitals with your own value from the host's dashboard.
Your user or organization name, without the repository name
| Type | Name | Target |
|---|---|---|
| CNAME | Replace the capitals with your own value from the host's dashboard. | |
| CNAME | Replace the capitals with your own value from the host's dashboard. Your user or organization name, without the repository name |
Step by step
Set it up
- 1
Add the domain in GitHub Pages first
In GitHub Pages, go to Repository→Settings→Pages→Custom domain and enter your domain (for example www.example.com). With records for both www and the bare domain, GitHub Pages redirects one to the other. GitHub recommends making www the main address.
Custom domains are free.
- 2
Open the DNS records at Cloudflare
Sign in, then go to your domain→DNS→Records
The domain has to be on Cloudflare's nameservers.
- 3
Clear what's in the way
Look for existing A, AAAA or CNAME records on the same name: Cloudflare won't let a CNAME sit next to them.
- 4
Add the record for www
Click Add record and add:
- Type
- CNAME
- Name
- Target
Replace the capitals with your own value from the host's dashboard.
Your user or organization name, without the repository name
Type Name Target CNAME Replace the capitals with your own value from the host's dashboard.
Your user or organization name, without the repository name
- 5
Point the bare domain
Cloudflare flattens a CNAME on the bare domain, so one record pointing at GitHub Pages is enough.
- Type
- CNAME
- Name
- Target
Replace the capitals with your own value from the host's dashboard.
Type Name Target CNAME Replace the capitals with your own value from the host's dashboard.
- 6
Wait, then check
Changes at Cloudflare take effect within minutes. Once GitHub Pages sees the records, it issues the certificate for https by itself. Use the check below to see what the world sees.
Check your domain
Once the records are in, see whether the world can see them pointing at GitHub Pages.
Changes can take from a few minutes to a day to show up everywhere.
Good to know
Common snags
- Add the domain in the repository's Pages settings before creating the records, so nobody else can claim it.
- Never use a wildcard record (*.example.com): it lets others take over your subdomains.
- Turn on Enforce HTTPS once it becomes available, which can take up to 24 hours.
- A CNAME at @ is allowed: Cloudflare flattens it automatically, so there's no ALIAS record type.
- Set Proxy status to DNS only (grey cloud) for another host's records, unless that host's guide says otherwise. Proxying can stop the host from issuing its certificate.
Still not working?
Questions
Before you start
Should I use www or the bare domain with GitHub Pages?
With records for both www and the bare domain, GitHub Pages redirects one to the other. GitHub recommends making www the main address. www always works with a single CNAME; the bare domain depends on what Cloudflare offers, covered in step 5.
Why does my site show a certificate error?
The certificate is issued once GitHub Pages sees your records, which can take a while after DNS changes. If it stays, check for old records on the same name (parking pages, AAAA records) and, at Cloudflare, that the record is set to DNS only.
Will this affect my email?
No. Email uses MX records, which these steps don't touch. Only change the records for @ and www.
Rather skip git and build settings?
99helpers puts a file, a folder or a built site online in seconds, then a single CNAME connects your domain, with passwords, analytics and AI editing built in.
Connect a Cloudflare domain to 99helpersOr skip the setup
Drop it in. It's online in seconds.
A file, a folder or a whole site: 99helpers puts it online at its own address, with no git, no build settings and no DNS to start with. Add your own domain whenever you're ready.