If you have a static website — an HTML file, some CSS, maybe a few images — and you are paying a monthly hosting fee for it, you are overpaying. You can host it for free, on one of the fastest content delivery networks in the world, with automatic SSL, a custom domain, and unlimited bandwidth. No credit card required, no usage caps to worry about, no surprise invoices.
The service is called Cloudflare Pages, and it is what we use to host every site we build at PageDrop. This guide walks you through the entire process, from sign-up to a live site on your own domain.
Why Cloudflare Pages
There are several free static hosting options out there — GitHub Pages, Netlify, Vercel, and others. Cloudflare Pages stands out for a few reasons that matter in practice:
- Unlimited bandwidth on the free tier. Netlify's free tier uses a credit system that effectively limits bandwidth. GitHub Pages has a soft bandwidth limit. Cloudflare Pages has no bandwidth limit at all. For a local business website that might get a few thousand visits a month this will never matter, but it is nice not having to think about it.
- Global CDN with 300+ edge locations. Your site is automatically cached on Cloudflare's edge network across hundreds of cities worldwide. When someone in Bucharest visits your site, they get it from a server in Bucharest — not from a data center in Virginia.
- Automatic SSL. HTTPS is set up for you the moment you deploy, including for custom domains. No certificates to manage, no renewals to remember.
- HTTP/3 and early hints. Cloudflare serves your site over the latest HTTP protocols by default and automatically sends Early Hints (HTTP 103 responses) that can improve Largest Contentful Paint by up to 30%. Faster connections, especially on mobile.
- 500 builds per month. Every time you update your site and deploy a new version, that counts as a build. Five hundred per month is more than generous — most small sites deploy a handful of times at most.
The free tier also includes unlimited sites, unlimited requests, and 20,000 files per project (with a 25 MB limit per file). For a static business website, these limits are effectively invisible.
What You Need Before Starting
This guide assumes you already have a static website — at minimum, an index.html file. If your site is built with a framework like Astro, Hugo, or Eleventy, Cloudflare Pages can run your build process automatically via Git integration. But for a simple HTML site, the easiest approach is a direct upload.
You will need:
- A folder on your computer containing your website files (HTML, CSS, images)
- A Cloudflare account (free — sign up at dash.cloudflare.com)
- Optionally, a custom domain name (you can always add this later)
Step 1: Create a Cloudflare Account
Go to dash.cloudflare.com/sign-up and create a free account. You only need an email address and a password. No payment information is required.
Once you are in the dashboard, look for Workers & Pages in the left sidebar. Click it, then click Create. You will see two tabs: Workers and Pages. Select the Pages tab.
Step 2: Deploy Your Site
You have two options here: connect a Git repository (GitHub or GitLab) for automatic deployments, or upload your files directly. For a simple HTML website, direct upload is the fastest way.
If you are new to website hosting: deployment simply means uploading your website files to a server so people can visit them on the internet. Cloudflare Pages makes this straightforward. You do not need to know how to use a terminal or understand web servers. If you can drag and drop a file, you can deploy a website for free.
Option A: Direct Upload (Recommended for Simple Sites)
- On the Pages tab, click Upload assets
- Give your project a name — this will become part of your default URL (e.g.,
my-cafe.pages.dev) - Drag your website folder into the upload area, or click to browse and select it
- Click Deploy site
That is it. Within a few seconds, your site will be live at your-project-name.pages.dev. You can visit it immediately.
Option B: Git Integration (For Ongoing Updates)
If your site lives in a GitHub or GitLab repository, you can connect it directly. Every time you push a change to your repository, Cloudflare Pages will automatically deploy the updated version.
- On the Pages tab, click Connect to Git
- Authorize Cloudflare to access your GitHub or GitLab account
- Select the repository that contains your site
- For a plain HTML site, leave the build settings empty — no build command, output directory set to
/(or whichever folder contains yourindex.html) - Click Save and Deploy
From this point forward, every push to your main branch will trigger a new deployment automatically.
Option C: Deploy via Command Line (For Developers)
If you prefer the terminal, Cloudflare's CLI tool wrangler lets you deploy with a single command:
npx wrangler pages deploy ./my-site --project-name my-cafe
The first time you run this, it will open your browser to authenticate. After that, deployments are instant. This is what we use at PageDrop — it fits neatly into any build script or CI pipeline.
Step 3: Add a Custom Domain
Your site is now live on a .pages.dev subdomain, which works fine for testing. But for a real business website, you want your own domain — something professional and memorable.
The best part? Hosting your website with a custom domain on Cloudflare Pages is still completely free. You only pay for the domain itself (typically $10–15 per year), not the hosting. Here is how to set that up.
- In the Cloudflare dashboard, go to your Pages project and click Custom domains
- Click Set up a custom domain
- Enter your domain (e.g.,
mycafe.com) - Cloudflare will tell you what DNS record to create — typically a CNAME record pointing to
your-project.pages.dev
If your domain's DNS is already on Cloudflare (which is the ideal setup), the record is added automatically and SSL is provisioned within minutes.
If your domain is on another registrar (like Namecheap, GoDaddy, or Google Domains), you will need to add the CNAME record in your registrar's DNS settings. You can also transfer your DNS to Cloudflare by updating your domain's nameservers — Cloudflare will provide the exact nameserver addresses. This is free and gives you access to Cloudflare's additional features like DDoS protection and caching rules.
Once the DNS record propagates (usually a few minutes, occasionally up to an hour), your site will be live on your custom domain with automatic HTTPS. You do not need to install or renew any SSL certificates — Cloudflare handles this entirely.
Updating Your Site
Depending on which deployment method you chose:
- Direct upload: Go to your project in the Cloudflare dashboard, click Create new deployment, and upload your updated files. The new version goes live within seconds.
- Git integration: Push your changes to your repository. Cloudflare deploys automatically.
- CLI: Run the same
wrangler pages deploycommand again with your updated folder.
Cloudflare Pages keeps a history of your deployments. If something goes wrong, you can instantly roll back to any previous version from the dashboard — a safety net that most hosting providers do not offer on their free tier.
How It Compares to the Alternatives
Here is an honest comparison of the major free static hosting options, based on each platform's official documentation:
| Feature | Cloudflare Pages | Netlify | GitHub Pages | Vercel |
|---|---|---|---|---|
| Bandwidth | Unlimited | 100 GB/month | 100 GB/month (soft) | 100 GB/month |
| Builds per month | 500 | ~20 deploys* | 10/hour | 6,000 |
| Custom domains | Yes + auto SSL | Yes + auto SSL | Yes + auto SSL | Yes + auto SSL |
| CDN locations | 300+ | ~20 | Fastly CDN | ~20 |
| Deploy rollbacks | Yes | Yes | Via Git only | Yes |
| Direct upload | Yes | Yes | No (Git only) | No (Git/CLI only) |
| DDoS protection | Included | Basic | Basic | Basic |
*Netlify switched to credit-based pricing in 2025. The free tier now provides 300 credits per month, which works out to roughly 20 production deployments — a significant reduction from their previous model. Vercel's free tier limits are documented on their limits page.
All four are good options. GitHub Pages is the simplest if you already have a GitHub repository. Netlify and Vercel are excellent if you need serverless functions or form handling. Cloudflare Pages wins on raw infrastructure — unlimited bandwidth, the largest edge network, and enterprise-grade DDoS protection included for free.
For a static business website that just needs to load fast and stay online, Cloudflare Pages is hard to beat.
A Few Things to Know
Before you deploy, a few practical notes:
- File limits: Maximum 20,000 files per project, 25 MB per individual file. For a typical business website with a handful of pages and some images, you will never come close to these limits.
- Headers and redirects: You can add a
_headersfile and a_redirectsfile to your project root to control HTTP headers and URL redirects. This is useful for setting cache policies or redirecting old URLs. - No server-side code on the static tier: Cloudflare Pages serves static files. If you need server-side logic (like form processing or API endpoints), you can add Cloudflare Workers functions to your Pages project — also free, with 100,000 requests per day on the free tier.
- Preview deployments: When using Git integration, every pull request gets its own unique preview URL. Useful for reviewing changes before they go live.
Why This Matters for Your Business
If you are a local business owner or a freelancer building websites for clients, the hosting question probably sounds like a technical detail that does not concern you. But it has real consequences.
Website builders like Wix and Squarespace charge $17 to $49 per month, and part of what you are paying for is hosting. They are also significantly slower than hand-coded sites. A one-page website, a landing page, or a simple portfolio site does not need that complexity or that recurring cost.
Let us do the math. A typical small business website hosted on a platform like Wix or Squarespace costs around $25 per month. Over five years, that is $1,500 in hosting fees — just for basic, unchanging pages. The same website on Cloudflare Pages costs $0. Forever. And it loads faster because it is served from 300+ edge locations instead of a single data center.
For small businesses, freelancers, and agencies managing client websites, this difference is significant. Whether you are building a restaurant website or a salon website, you can deliver fast, professional one-page sites without passing a hosting bill to your clients or absorbing the cost yourself.
This is exactly how PageDrop works — we build fast, hand-coded one-page sites and host them on Cloudflare Pages at no ongoing cost. $297 one-time, free hosting forever.
A static website hosted on Cloudflare Pages loads faster because there is no platform overhead between your content and your visitor. No JavaScript framework to parse, no database to query, no editor runtime to download. Just clean HTML served from the nearest edge location.
The hosting is free. The performance is better. The site stays online even during traffic spikes, protected by the same DDoS mitigation that guards some of the largest sites on the internet. That is a better deal than any monthly plan.
Frequently Asked Questions
Is Cloudflare Pages really free?
Yes. The free tier includes unlimited bandwidth, unlimited requests, 500 builds per month, and unlimited projects. There is no trial period and no credit card required. Cloudflare makes money from its paid products (enterprise CDN, Workers at scale, security services) — Pages is a way to get developers and businesses into their ecosystem.
Will my site stay online if it gets a lot of traffic?
Yes. Cloudflare's network handles millions of requests per second across its infrastructure. Your static site is cached at edge locations worldwide, so even a sudden spike in traffic will not take it down. There are no bandwidth overage charges.
Can I use Cloudflare Pages for a WordPress site?
Not directly. WordPress requires PHP and a database, which Cloudflare Pages does not provide. However, you can export a WordPress site to static HTML (using tools like Simply Static or WP2Static) and host the result on Cloudflare Pages. You would lose dynamic features like comments and contact forms, though those can be replaced with third-party services.
Do I need to know how to code?
Not for the deployment itself. If you have a folder with your website files, you can drag and drop it into the Cloudflare dashboard. The process is genuinely no more complicated than uploading a file to Google Drive. Setting up a custom domain requires changing a DNS record, which your domain registrar's support team can help with if needed.
What if I need to update my site?
Upload the updated files through the dashboard, push to your Git repository, or run the CLI command again. The new version goes live in seconds. Previous versions are kept so you can roll back if anything goes wrong.
Can I host a landing page on Cloudflare Pages?
Yes. Cloudflare Pages works for any static website — whether it is a full multi-page site, a single landing page for a local business, a portfolio, or a coming-soon page. Many freelancers and agencies use Cloudflare Pages specifically for hosting one-page websites and landing pages because free hosting plus unlimited bandwidth makes the economics excellent.
Can freelancers and agencies use this to host client websites?
Absolutely. Cloudflare Pages is ideal for this. You can deploy unlimited projects, each on its own custom domain, and never worry about hosting costs. Your client gets a fast, reliable website, and you do not eat the hosting fee. Many freelancers use this model to build affordable one-page websites and landing pages for small businesses.
Do I have to use Cloudflare for my domain registrar too?
No. You can register your domain anywhere — Namecheap, GoDaddy, Google Domains — and still host for free on Cloudflare Pages. You just need to add a DNS record at your registrar pointing to Cloudflare's servers. Cloudflare walks you through this step by step. You can also transfer your domain to Cloudflare's registrar for tighter integration, but it is not required.