Skip to main content

Guide · Domain & website

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-10-07

Browse domain & website guides

You have a folder with your website in it (if not: build one with AI first). This guide puts it on the internet, free. Set aside time for account verification, uploading, and a practice update; domain changes can take longer to become active.

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

  1. Go to dash.cloudflare.com/sign-up and sign up with your email — use your own email, the same rule as owning your own domain.
  2. 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)

  1. In the dashboard sidebar, find Workers & Pages → Create → Pages.
  2. Choose “Upload assets” (direct upload).
  3. Name the project anything (mikes-plumbing — this becomes a free preview address like mikes-plumbing.pages.dev).
  4. 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).

  1. 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.
  2. 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 git way).
  3. In Cloudflare: Workers & Pages → Create → Pages → Connect to Git, authorize GitHub, pick your repository, and fill in the settings for a plain HTML site: Production branch main, Framework preset None, Build command exit 0 (a do-nothing command that tells Cloudflare there is nothing to build; leaving it empty also works for plain HTML), and Build output directory set to the folder that holds your index.html (if index.html sits at the top of the repository, leave this at its default). Then 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 — your files can be reused later, but switching to Git integration requires a new Pages project. Cloudflare does not convert a Direct Upload project in place. Deploy the Git-connected copy first, verify it, then move the custom domain carefully; do not delete the working site first. See Cloudflare’s Direct Upload documentation. If you’re comfortable making an account, Option B is the better long-term setup.

The free plan has limits, and a brochure site fits them easily: each file must be under 25 MB, a drag-and-drop upload can hold up to 1,000 files, and your account gets 500 builds a month. Big videos belong on YouTube or similar, not in your site folder. Cloudflare lists the current limits.

Step 3: Connect your own domain

Assuming your domain is at Spaceship (the buying guide):

First, check what the domain already does. If it’s brand new, with no website or email yet, skip to the numbered steps. If it already runs email, an old website, or anything else (a booking subdomain, a Google or Microsoft verification record), switching nameservers moves all of that to Cloudflare at once, and anything that doesn’t come across stops working.

  • Save a copy of every DNS record at your current DNS provider (a screenshot or an export). The mail records matter most: MX, plus the TXT records for SPF, DKIM, and DMARC.
  • Check DNSSEC. DNSSEC is an optional security lock that proves your domain’s DNS answers are genuine; most small-business domains don’t have it switched on. If it is on at your registrar, turn it off there before changing nameservers, or the domain can become unreachable. Then wait for the old setting to clear: Cloudflare’s DNSSEC guide says that commonly takes 24 to 48 hours. Step 6 below turns it back on. Cloudflare’s setup guide and DNSSEC guide cover this.
  1. In your Pages project: Custom domains → Set up a custom domain → type yourbusiness.ca.
  2. Cloudflare will ask you to point your domain at it. The cleanest path: it invites you to add your domain to Cloudflare (free), scans for your existing DNS records, and gives you two “nameservers” (addresses like ada.ns.cloudflare.com).
  3. Compare the records Cloudflare found with the copy you saved, and add anything missing, mail records above all. Skip the old website’s records for the bare domain and www; Cloudflare points those at your new site. Cloudflare warns its scan isn’t guaranteed to find every record. (Brand-new domain: nothing to compare.)
  4. At Spaceship: open your domain → Nameservers → Custom, and paste in those two nameservers. Save.
  5. Wait. Nameserver changes usually take minutes to a few hours, occasionally up to 24. Cloudflare emails you when it’s active, and HTTPS certificates issue automatically.
  6. Once it’s active, load your site and send yourself an email at the domain to confirm mail still arrives. The email DNS checker shows your mail records at a glance. If you turned DNSSEC off, turn it back on in Cloudflare (DNS → Settings → DNSSEC → Enable DNSSEC). Cloudflare then shows a short code called a DS record; paste it into your registrar’s DNSSEC settings for the domain to finish switching it on.

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.

Step 5 (once your domain works): tell Google you’re here

A brand-new site is invisible until search engines stumble across it. Google Search Console and Bing Webmaster Tools help you submit the site and monitor indexing. Submission does not guarantee indexing or rankings: tell Google, Bing, and AI assistants your site exists. Wait until your own domain is live first, so you register the real address rather than the temporary .pages.dev one.

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.JPG vs photo.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 ........... varies
Your time, future updates ......... edit, review, publish, check

Next: set up business email on your domain →