Free Hosting for an HTML Website: How to Put It on Cloudflare With Your Own Domain

12 min read By Stefan Gabos

Cloudflare Pages is the simplest free hosting for an HTML website: upload the folder and it serves the site at no cost, allows business use and includes a custom domain with automatic HTTPS. One catch: a root domain like mycafe.com only connects once its nameservers point at Cloudflare, which is free and keeps your registrar.

In order:

  1. Pick a host that allows business sites. Cloudflare Pages and Netlify do; the steps below use Cloudflare.
  2. Create a free Cloudflare account. No payment details are needed.
  3. Upload the folder. Workers & Pages, Create application, drag and drop.
  4. Put the domain on Cloudflare. Add it to your account, then change the nameservers at your registrar.
  5. Add the custom domain to the Pages project. HTTPS is issued automatically.

This is for anyone holding a finished website - a folder with an index.html, a stylesheet and some images - who would rather not pay a website builder $17 a month to host a few files. It is also how this site runs. As of 5 October 2026, pagedrop.pro sits on Cloudflare's Free plan and has been deployed to production 79 times since 12 March 2026, with a hosting bill of $0. The domain is still registered at Namecheap; only its two nameservers point to Cloudflare. Every limit and quote below was re-checked against each provider's own documentation on 5 October 2026.

Which Free HTML Hosting Allows a Business Website?

Cloudflare Pages and Netlify allow business sites on their free plans. Vercel's free Hobby plan does not: it is for non-commercial use only, and advertising a product or service counts as commercial. GitHub Pages bars online businesses, shops and sites built mainly to sell, which leaves an ordinary business website in a grey area.

Most free hosting tutorials skip this part, because most of them are written by developers hosting personal projects. For a plumber, a salon or a freelancer building a client's site, the terms matter more than the feature list:

  • Vercel Hobby is "restricted to non-commercial personal use only". Vercel's examples of commercial use include advertising the sale of a product or service and being paid to create, update or host the site, so a freelancer's client site is commercial even if the client sells nothing online.
  • GitHub Pages says in its limits page that it is "not intended for or allowed to be used as a free web-hosting service" to run an online business, an e-commerce site, or a site mainly aimed at commercial transactions or selling software as a service. A brochure site for a local trade is not named in that rule, but GitHub decides how to apply it, which makes it a weak base for a client's business.
  • Netlify has no commercial restriction in its subscription agreement. The catch is the meter: since 4 September 2025, new free accounts get 300 credits a month, a production deploy costs 15 and each GB of bandwidth costs 20. When the credits run out, every site on the account is paused behind a "Site not available" page until the next cycle.
  • Cloudflare has no commercial restriction on its Free plan either. Its self-serve subscription agreement has one rule worth knowing: you may not collect or process credit card details on a property served under Free Services. A local business site that links out to a Stripe, Square or booking-tool checkout is fine; a card form on your own page is not.

Both Netlify's and Cloudflare's agreements also let them end free service at their own discretion. Free hosting comes without an uptime contract on any of the four, so keep a copy of your site's files where you can redeploy them elsewhere in an afternoon.

Free static hosting for a business website, checked 5 October 2026
Feature Cloudflare Pages Netlify Free GitHub Pages Vercel Hobby
Business site allowedYes (no card collection on the page)YesGrey area: no online stores or sales-driven sitesNo, non-commercial only
Traffic allowanceRequests for static files free and unlimited300 credits a month shared across the account (about 15 GB); sites pause at zero100 GB a month (soft limit)100 GB a month
Deploy limits500 Git builds a month; no cap stated for direct uploads15 credits each: 20 a month if there is no traffic10 builds an hour (soft)100 a day
Root domain without moving DNSNo: nameservers must point to CloudflareYes, A or ALIAS recordYes, A recordsYes, A record

Sources: Cloudflare Pages limits, Cloudflare Pages pricing, Cloudflare custom domains, Netlify credits, Netlify external DNS, GitHub Pages limits, GitHub Pages custom domains, Vercel fair use guidelines, Vercel limits, Vercel custom domains.

Cloudflare Pages free plan: the default for a business site

Allowed for business use, requests to static files are free and unlimited, and the site is served from data centers in 348 cities. The one place it is less convenient than the others is the domain step, covered below.

Netlify: fine until a busy month

Allowed and easy to use: its Netlify Drop page takes a dragged folder, and Netlify Forms handles a contact form without server code (check how submissions count against the credit pool). The shared credit pool is the risk: one popular month can take the site offline, and every other site on the same account with it.

GitHub Pages: personal and open-source sites

Excellent for documentation and portfolios already living on GitHub, and it connects a root domain with plain A records. For a business it is a grey area at best, by GitHub's own terms.

Vercel Hobby: personal projects only

A strong platform for web apps, with 100 deployments a day on the free plan, but a business or client site needs a paid Pro plan under Vercel's own definition of commercial use.

Other free hosts: Firebase and InfinityFree

Roundups of free HTML hosting also list Google's Firebase Hosting and classic shared hosts such as InfinityFree. Firebase's free Spark plan includes custom domains and SSL but caps data transfer at 360 MB a day (about 10.8 GB a month). InfinityFree takes your own domain, includes free SSL, puts no ads on your site and pitches itself at students, clubs and small businesses. Both can serve a static site. Their business-use terms were not checked for this post, so read them before putting a client's site on either.

How to Host a Static Website for Free: What You Need First

  1. Your website folder, with index.html at the top level. A folder of plain HTML, CSS and image files is a static website: Pages serves the files exactly as they are, with no build step and no database.
  2. A free Cloudflare account. Sign up at dash.cloudflare.com with an email address and a password. No payment details are needed for the Free plan.
  3. A domain name, from any registrar. First-year prices are often promotional - pagedrop.pro cost $3.98 for its first year at Namecheap - and renewals are usually higher, so check the renewal price before you buy. Cloudflare Registrar sells domains at the wholesale price with no markup, but you do not have to buy it there.

Step 1: Upload Your HTML Site to Cloudflare Pages

  1. In the Cloudflare dashboard, open Workers & Pages.
  2. Select Create application, then Get started, then Drag and drop your files.
  3. Name the project.
  4. Drag your website folder into the upload area.
  5. Select Deploy site.

These are the labels in Cloudflare's direct upload guide. The project name becomes your free address: a project called my-cafe is live at my-cafe.pages.dev within seconds. Dashboard uploads take up to 1,000 files at 25 MiB each, and a business website is nowhere near either.

One decision to make now: a project created by direct upload cannot be switched to Git integration later. If a developer will maintain the site from a GitHub or GitLab repository, create the project with Git from the start instead.

Or connect a Git repository (for developers)

Choose Create application, then Pages, then Connect to Git, authorise GitHub or GitLab and pick the repository. For a plain HTML site, leave the build command empty and set the output directory to the folder that holds index.html. From then on, every push to the main branch deploys automatically, and every pull request gets its own preview address.

Or deploy from the command line (for developers)

Cloudflare's wrangler tool deploys a folder in one command:

npx wrangler pages deploy ./my-site --project-name my-cafe

The first run opens a browser window to log in; after that, each deploy takes a few seconds. This is what we use at PageDrop: all 79 production deploys of this site went out this way, from a build script.

No account yet? Cloudflare Drop

Since July 2026, Cloudflare Drop takes a dragged folder without an account and gives you a live preview that lasts one hour. Select Claim to sign in or create an account and keep it, then connect a domain. It is the quickest way to see your site on the real internet before committing to anything.

Step 2: Connect a Custom Domain With Free HTTPS

In the project, open Custom domains, select Set up a domain, enter the domain and select Continue. What happens next depends on where the domain's DNS lives, and this is the step most people get stuck on.

For a root domain such as mycafe.com, the domain must be added to your Cloudflare account and use Cloudflare's nameservers. Nameservers are the two addresses that tell the internet where your domain's settings, its DNS records, are kept; out of the box they point at your registrar. Cloudflare's custom domain docs say a root domain (they call it an apex domain) only connects once it has been added to the same Cloudflare account as the project. A CNAME record at another DNS provider only works for a subdomain such as www.mycafe.com, which is why guides that say "just add a CNAME at your registrar" leave people with a site that works on www and fails without it.

Moving the nameservers does not mean moving the domain:

  1. Add the domain to Cloudflare. Cloudflare scans the existing DNS records and shows you two nameserver names.
  2. Check your email records. Make sure the MX and any TXT records your email provider uses were copied across before you switch, or email to the domain stops arriving.
  3. Turn off DNSSEC at your registrar if it is on. Cloudflare warns that changing nameservers with DNSSEC active can make the domain unreachable.
  4. Switch the nameservers at your registrar. Replace the existing ones with the two Cloudflare gave you; Namecheap, GoDaddy and most others have a "custom nameservers" setting for this.
  5. Add the custom domain in the Pages project. Cloudflare creates the DNS record and issues the HTTPS certificate itself.

The registrar stays the same and you keep paying it for the domain as before. pagedrop.pro is set up exactly like this: registered at Namecheap, nameservers on Cloudflare. Cloudflare says to allow up to 24 hours for a registrar to update the nameservers; the HTTPS certificate follows automatically, and there is nothing to renew.

Why Won't My Domain Connect to Cloudflare Pages?

Check the nameservers first: Cloudflare Pages only connects a root domain like mycafe.com when the domain is on your Cloudflare account, so a domain still on its registrar's nameservers fails while www may work. If the nameservers are right, the usual causes are DNSSEC left on, a rule blocking validation, or CAA records that leave out Cloudflare's certificate authorities.

  • DNSSEC still on at the registrar when the nameservers were changed. Turn it off at the registrar; once the domain is active, enable DNSSEC in Cloudflare and add the record it gives you at the registrar.
  • Something blocking validation. Cloudflare's debugging guide says Pages validates the domain over HTTP, so an Access policy, a redirect rule or a Worker on that hostname stops it. Pause them until the domain shows as active; if you never set any of these up, skip this one.
  • CAA records that leave out Cloudflare's certificate authorities. If the domain has CAA records, they need to allow the authorities Cloudflare uses, which its debugging guide lists as letsencrypt.org, pki.goog and ssl.com, or the HTTPS certificate cannot be issued. If you never added CAA records, skip this one.

Updating Your Site After It Is Live

  • Direct upload: open the project, select Create new deployment, and upload the updated folder.
  • Git: push to the main branch.
  • Command line: run the same wrangler pages deploy command again.

Every deployment is kept. If an update breaks something, you can roll back to any earlier version from the project's deployment list in one click.

Pages or Workers: Which Does Cloudflare Recommend in 2026?

Cloudflare now recommends Workers for new projects, but Pages is still supported and still the simplest route for a folder of HTML, with a drag-and-drop upload in the dashboard. Treat Workers as the next step if the site later needs server-side features.

Both halves come from Cloudflare: the Pages documentation opens with the notice "Start new projects with Workers.", and the April 2025 announcement said Pages "will continue to be supported" while new features go to Workers, where requests to static assets are free and unlimited too. pagedrop.pro still runs on Pages, and Cloudflare publishes a migration guide from Pages for when a project outgrows it.

Cloudflare Pages Free Plan Limits

  • Projects and files: 100 projects per account, 20,000 files per site and 25 MiB per file on the Free plan. Each project can have up to 100 custom domains.
  • Git builds: 500 a month on the Free plan, counted when you push to a connected repository. A business website updated a few times a month uses a handful.
  • Headers and redirects: a _headers file and a _redirects file in the site root control caching rules and redirects from old URLs, with no server to configure.
  • Forms: Cloudflare Pages cannot process a form on its own. A form service that the page posts to, or a small Pages Function, handles contact forms; on the Free plan, Functions requests share the Workers allowance of 100,000 a day, far more than a contact form uses. PageDrop's one-page sites use a form service; larger sites send submissions through a Pages Function and an email API.

What Free Hosting Is Worth to a Small Business

Website builders bundle hosting into the subscription: Wix runs $17 to $159 a month and Squarespace $19 to $99, billed annually, as compared in how much a website costs. Over three years, Wix's cheapest plan ($17 a month for 36 months, plus domain renewals) comes to about $647, and the site still lives on Wix's servers on Wix's terms. A static site on Cloudflare costs the domain and nothing else, and the files are yours to move whenever you like.

Free hosting does not make the site itself good. A slow builder template exported to static files is still slow, which is why website builders score low on Google PageSpeed in the first place, and a page with nothing specific to say will not rank wherever it is hosted. Hosting is the cheap part; what is on the page decides whether the phone rings.

That is the model behind PageDrop.pro - custom-coded one-page websites for local businesses, $297 one-time. Each site is deployed to Cloudflare, so there is no monthly hosting fee afterwards. For the three-year arithmetic, see what a one page website costs and the real cost of Wix; for how many pages you need in the first place, see single page vs multi page websites.

Frequently Asked Questions

Is Cloudflare Pages free for commercial use?

Yes. Cloudflare Pages' Free plan has no commercial-use restriction, serves static files without a bandwidth charge, and includes custom domains with HTTPS. The limits that matter are 100 projects per account and 500 Git builds a month. One business rule: do not collect card details on a page served under the Free plan; link to a hosted checkout instead.

Can I use GitHub Pages for a business website?

It is a grey area. GitHub bars Pages from hosting online businesses, shops and sites built mainly to sell, and decides for itself whether an ordinary business site qualifies. If the code already lives on GitHub, Cloudflare Pages can deploy from the same repository on every push, so the code stays on GitHub and only the hosting moves.

Is Vercel free for commercial use?

No. Vercel's free Hobby plan is limited to non-commercial personal use, and its definition of commercial use includes advertising a product or service and being paid to build or host the site. A business site, or a site a freelancer builds for a client, needs Vercel's paid Pro plan.

How long does a custom domain take to work on Cloudflare Pages?

Up to 24 hours: Cloudflare says to allow that long for the registrar to update the nameservers. Once the domain is active on your account, Cloudflare verifies it for the Pages project and issues the HTTPS certificate automatically. Until then the site stays reachable at its pages.dev address, so you can check the upload worked while you wait.

Can I keep my domain at Namecheap or GoDaddy and still use Cloudflare Pages?

Yes. Only the nameservers move to Cloudflare; the registration stays with Namecheap, GoDaddy or whichever registrar you use, and you keep renewing it there. Transferring to Cloudflare Registrar is optional and mostly a question of price, since Cloudflare sells domains at wholesale cost.

Does Cloudflare Pages have a bandwidth limit?

Not for static files. Cloudflare's Pages pricing says requests to static assets are free and unlimited on every plan, so a traffic spike brings no overage bill, though its terms prohibit an undue burden on its network. Netlify's free plan differs: when the shared credit pool runs out, every site on the account pauses until the next cycle.

Can I host a website for free with my own domain?

Yes. Cloudflare Pages attaches your own domain with automatic HTTPS at no charge, so the hosting costs nothing. The domain name is the only cost: pagedrop.pro cost $3.98 for its first year at Namecheap, and renewals are usually higher, so check the renewal price before you buy. Netlify and GitHub Pages also accept custom domains.

Back to blog