Guide · Websites
Put your site online with Cloudflare Pages (free)
The full walkthrough: create a Cloudflare account, put your site online (drag-and-drop, or a free private GitHub repo that auto-publishes every change), and connect your own domain — HTTPS handled for you.
Updated 2026-07-20
You have a folder with your website in it (if not: build one with AI first). This guide puts it on the internet, free, in about 30 minutes including the domain connection.
Why Cloudflare Pages
Cloudflare runs a huge chunk of the internet’s plumbing. Pages is their static-site hosting: free with unlimited bandwidth, automatic HTTPS, and a global network that makes your site fast everywhere. The free tier is the product, not a trial — no ads, no forced upgrades. (And no, we earn nothing saying this: Cloudflare has no affiliate program. This site itself runs on Pages.)
Step 1: Create your Cloudflare account
- Go to
dash.cloudflare.com/sign-upand sign up with your email — use your own email, the same rule as owning your own domain. - The free plan is fine for everything in this guide. Skip any upsells.
Step 2: Create your Pages project
Two ways to get your folder online. Both are free — the first is simplest today, the second saves you time on every future update.
Option A: Drag and drop (simplest)
- In the dashboard sidebar, find Workers & Pages → Create → Pages.
- Choose “Upload assets” (direct upload).
- Name the project anything (
mikes-plumbing— this becomes a free preview address likemikes-plumbing.pages.dev). - Drag your website folder into the upload box. Click Deploy.
That’s it — your site is live at the .pages.dev address. Check it on your phone.
Option B: Connect a GitHub repository (updates itself forever)
GitHub is a free service where your site’s files live in a “repository” — think of it as a synced, versioned folder in the cloud. Connect it once and every change you save to GitHub goes live on Cloudflare automatically, usually within a minute. No re-uploading, ever, and you get a full history of every version of your site (so any mistake is a one-click rollback).
- Create a free account at
github.com, then create a new repository. Choose Private — your site’s files don’t need to be publicly browsable, and Cloudflare can read a private repo just fine. - Upload your website files to the repository (GitHub’s web interface has an “upload files” button — no technical tools required, though your AI assistant can also show you the
gitway). - In Cloudflare: Workers & Pages → Create → Pages → Connect to Git, authorize GitHub, pick your repository, leave the build settings empty for a plain HTML site, and deploy.
From now on, updating your site is just: edit the file on GitHub (or ask your AI to give you the new version and upload it), save, done — Cloudflare notices and publishes automatically. This is how the site you’re reading stays updated.
Which to pick? If “repository” sounds like one new thing too many today, drag-and-drop is genuinely fine — you can connect GitHub later without starting over. If you’re comfortable making an account, Option B is the better long-term setup.
Step 3: Connect your own domain
Assuming your domain is at Spaceship (the buying guide):
- In your Pages project: Custom domains → Set up a custom domain → type
yourbusiness.ca. - Cloudflare will ask you to point your domain at it. The cleanest path: it invites you to add your domain to Cloudflare (free) and gives you two “nameservers” (addresses like
ada.ns.cloudflare.com). - At Spaceship: open your domain → Nameservers → Custom, and paste in those two nameservers. Save.
- Wait. Nameserver changes take minutes to a few hours. Cloudflare emails you when it’s active, and HTTPS certificates issue automatically.
Add the www. version too when prompted, so both yourbusiness.ca and www.yourbusiness.ca work.
Step 4 (two minutes, do it now): future updates
- If you used drag-and-drop (Option A): Workers & Pages → your project → Create new deployment, drag the updated folder, deploy. Old versions are kept, so you can roll back a bad update with one click.
- If you connected GitHub (Option B): there is no step — save the change to your repository and Cloudflare deploys it automatically.
Do a practice run now while it’s fresh — change one word in your site file and update it.
Troubleshooting the two common snags
- “My domain shows an error page”: nameservers haven’t finished switching (give it up to 24h), or the custom domain step wasn’t completed inside the Pages project. Both states are visible under Custom domains — it will say “Active” when done.
- “My site looks wrong online but fine on my computer”: a photo or file didn’t make it into the uploaded folder, or is named differently than the HTML expects (
Photo.JPGvsphoto.jpg— capitalization counts online). Re-check names, re-upload the whole folder.
The receipt
Cloudflare account ................ $0
GitHub account (private repo) ..... $0
Hosting, bandwidth, HTTPS ......... $0
Your time, first deploy ........... ~30 min
Your time, every update after ..... ~2 min (0 with GitHub)