Free Static Website and HTML Hosting: Push a Folder, Get an HTTPS URL

Free HTML hosting for a folder of files, a Vite or React build, or a site with an API behind it. Connect the repository, and SnapDeploy serves it with nginx on its own HTTPS address. No Dockerfile needed for plain HTML.

Free tier: 4 containers, 100 hours a month, 10 deploys a day. No credit card. Always-On from $12 a month for a site that must never pause and needs its own domain.

Last verified 28 September 2026 against the free-tier docs, the deployment code and each competitor's own limits page.

What HTML Hosting Is, and When a Container Is the Right Kind

HTML hosting means a server somewhere sends your files, HTML, CSS, JavaScript and images, to anyone who opens the address. Nothing runs on the server; the browser does the work. That is why HTML website hosting is the cheapest hosting there is, and why several companies give it away.

Two kinds of free static hosting exist. A pure static host such as GitHub Pages or Cloudflare Pages copies your files to a content network and serves them forever, never sleeping. A container host like SnapDeploy runs a small web server, nginx, inside a container that you control. The container can sleep when idle on the free tier, which the pure hosts never do.

So the honest rule: if your site is only files and nothing else, a pure static host is the better free option. Choose a container when the site needs something next to it: an API, a database, a server-rendered page, a private repository without a paid GitHub plan, or an nginx configuration of your own. On SnapDeploy those all live in one account, with one address each, and the free tier covers four of them.

Three Ways to Host HTML Files Here

All three end the same way: an nginx container as the HTML host, on its own HTTPS address, redeployed on every push.

📄

1. A folder of HTML files

A repository with an index.html at its root and no other stack is detected as a static site. The build copies the files into an nginx image, serves them on port 80, and answers any unknown path with index.html, so single-page apps with client-side routing work as they are.

Nothing to configure. A /health path is added for the platform's health check.

🛠️

2. A built frontend

A project with a build tool (Vite, webpack, Parcel, Rollup) but no server framework and no start script is treated as a static build. The build runs, the output folder is found automatically (dist, build or a custom Vite outDir), and nginx serves it.

Public-prefixed variables (VITE_, REACT_APP_, NEXT_PUBLIC_) set on the container are passed into the build. Works for React, Vue, Svelte, Angular and static exports of Next.js and Nuxt.

🐳

3. Your own Dockerfile

When you want your own nginx configuration, redirects, custom headers, a different web server or basic authentication, commit a Dockerfile and it is used as written. Two lines are enough to start.

FROM nginx:alpine
COPY . /usr/share/nginx/html/
EXPOSE 80

Host an HTML Site in Four Steps

Using the GitHub path. No command line is needed for a plain site.

1.Put the files in a repository

Place index.html at the root, with your CSS, JavaScript and images beside it or in folders. Public or private repositories both work; the platform reads private ones through your GitHub authorisation.

2.Sign in and choose Deploy from GitHub

Sign up with an email address or a GitHub account, no card. Pick the repository and the branch. The detector recognises the static site and generates the nginx image for you.

3.Deploy and watch the log

The build streams to the dashboard. A plain HTML site produces a small image and is usually live within a few minutes; the cap is 60 minutes. The address is https://<name>.containers.snapdeploy.app, with the certificate already in place.

4.Push to update

Every push to the linked branch rebuilds and redeploys. The new copy starts beside the old one and traffic moves only after it passes its health check, so a broken push leaves the previous version serving.

What the Free Tier Gives a Static Site

Static website hosting free of charge has one real limit here: running time. The same rules apply as to any container; the full list is on the free-tier page.

  • Up to 4 containers, no credit card. A site and its API are two of the four. Each free container is 512 MB with 0.25 vCPU, far more than nginx needs for static files.
  • 100 container-hours a month. A container only uses hours while awake. A site that gets a few visits a day is awake perhaps an hour a day and uses about 30 hours a month.
  • Sleep after 15 idle minutes. The first visitor after that waits about 60 seconds. This is the one place a pure static host is better for a site with nothing behind it.
  • 10 deploys a day (5 per rolling 12 hours), failed builds included.
  • HTTPS on day one at the containers.snapdeploy.app address. A custom domain and no sleep come with Always-On, $12 a month per container.
  • No metered bandwidth. A fair-use limit of 100 requests a minute per visitor IP applies on the shared domain.

Free Static Website Hosting Compared

The free static site hosting limits of the main options, read from each provider's own limits or pricing page on 28 September 2026. Use it to pick the right kind of host, not just the cheapest.

Host Free bandwidth Builds or deploys Custom domain on free Sleeps? Card The catch
SnapDeployNot metered; 100 container-hours/month of running time10 deploys/dayAlways-On only ($12/mo)Yes, after 15 min idleNoSleep on free; built for sites with an API or a Dockerfile next to them
Cloudflare PagesUnlimited requests and bandwidth500 builds/month, 1 at a timeYes, 100 per projectNoNo20,000 files, 25 MiB per file; server code counts against Workers limits
GitHub Pages100 GB/month soft limit10 builds/hour soft limitYes, with HTTPSNoNoPublic repositories only on GitHub Free; private repositories need Pro or Team; 1 GB site
Netlify Free300 credits/month; bandwidth costs 20 credits per GBA production deploy costs 15 creditsYes, with SSLNoNot statedCredit-based: deploys and bandwidth draw from the same 300
Vercel Hobby100 GB/month100 deployments/dayYes, 50 per projectNoNot statedNon-commercial use only; no repositories owned by a Git organisation
Render static sites5 GB/month on the Hobby workspace, then $0.15/GBCounted in workspace pipeline minutesYes, 2 per workspaceNo (static)NoSmall bandwidth cap; 25 services per workspace
Firebase Hosting360 MB/day (about 10 GB/month)Not limited by countYes, with SSLNoNo10 GB storage; the daily transfer cap is low for media-heavy sites

Sources: developers.cloudflare.com (Pages limits, updated 5 Sep 2026) and cloudflare.com/products/pages; docs.github.com (GitHub Pages limits and "About GitHub Pages"); netlify.com/pricing; vercel.com/docs/limits and fair-use guidelines (updated 14 and 16 Sep 2026); render.com/pricing and render.com/docs/free; firebase.google.com/pricing. Free HTML web hosting offers change often; the date above is the one that counts.

When a Static Host Is Not Enough

The cases where people move an HTML site into a container, from support requests and deploy logs.

  • The site needs a backend. A contact form, a login, a search box or a payment page needs code on a server. Deploy an API container beside the site; both are inside the free tier's four containers, each with its own HTTPS address.
  • The framework renders on the server. A Next.js or Nuxt app that is not a static export, or a TanStack Start app, is a Node server, not files. The detector builds it as a server instead of a static site.
  • The repository is private and you do not pay GitHub. GitHub Pages needs a Pro or Team plan for private repositories. Here, a private repository deploys on the free tier.
  • You need your own server rules. Redirects, cache headers, basic authentication or a different document root are a Dockerfile away.
  • You want to avoid micro-host catches. Some free HTML hosts limit you to one upload, expire pages after a few days, strip JavaScript or cap monthly views. A container serves whatever you put in it.
  • Everything in one place. Frontend, API, database add-on and logs on one dashboard, one bill, and the same deploy flow for each.

Free HTML Hosting Questions, Answered

Is HTML hosting free on SnapDeploy?

Yes. The free tier runs up to 4 containers with 100 container-hours a month and 10 deploys a day, with no credit card. A static site is one container. It sleeps after 15 minutes without visitors and wakes in about 60 seconds when someone opens it in a browser; Always-On at $12 a month removes the sleep and adds a custom domain.

Do I need a Dockerfile to host HTML files?

No. A repository with an index.html at its root is detected as a static site and served by nginx automatically. A Vite, webpack, Parcel or Rollup project with no server framework is built first and its output folder is served the same way. Add your own two-line Dockerfile only when you want a custom nginx configuration.

Does a static site sleep on the free tier?

Yes. Every free container sleeps after about 15 minutes without traffic, including a static site, and the first visitor afterwards waits about 60 seconds. A pure static host such as GitHub Pages or Cloudflare Pages never sleeps, so for a site with nothing behind it those are the better free option. Always-On keeps a SnapDeploy site up 24/7.

Can I host a React, Vue or Vite build as a static site?

Yes. A project that has a build tool but no server framework and no start script is treated as a static build: the build runs, the output folder (dist, build or a custom Vite outDir) is detected, and nginx serves it. Public-prefixed build variables such as VITE_ and REACT_APP_ set on the container are passed into the build.

Can I use a custom domain for a static site?

Custom domains come with Always-On, from $12 a month per container, with the certificate issued automatically. On the free tier the site is reached at its containers.snapdeploy.app address over HTTPS.

Can I host HTML files without a GitHub repository?

Yes. Build an nginx image locally, run docker save, and upload the tarball; or point at a public image by name. GitHub is the easiest path because a push redeploys the site, but it is not required.

How do I add a contact form or an API to a static site?

A static site cannot process a form by itself. Deploy a small API container next to it, on the same account, and have the form post to that container's HTTPS address. Both fit inside the free tier's 4 containers.

Is there a bandwidth limit for static sites?

Bandwidth is not metered or billed. The shared domain applies a fair-use rate limit of 100 requests a minute per visitor IP address to one app; normal sites stay far below it. What is limited on the free tier is running time: 100 container-hours a month.

Proud Member Of

As Seen On

Host Your HTML Site Today

Push a folder, get an HTTPS address. Free tier, no credit card. Always-On from $12 a month when it must never pause.

Deploy Free Today
FIRST OF ITS KIND

Sprint Pack — $1 for 24 hours

The first managed container PaaS to offer a one-time 24-hour Always-On pass under $5. Unlimited deploys + Always-On for one Small (512 MB) container — including WebSockets & real-time apps. No subscription, no auto-renewal. Stack two for 48 hours.

Need a managed database too? DB Sprint Pack — $1 / 12h for Postgres, MySQL, MariaDB, Mongo, Redis, or RabbitMQ.