Seven ways to put a single HTML file online for free — GitHub Pages, Netlify, Cloudflare, Vercel, Tiiny, Neocities, and a private-link option — with an honest table of which fits which job, public or private.
"What's the best free way to host a single HTML file" sounds like one question with one answer. It's actually two questions wearing one coat — and most "best free HTML hosting" lists only answer the first.
The fork: is the page meant to be found, or meant for specific people? A launch page, a portfolio, a public demo wants reach — the more eyes the better. A client report, a draft, a private invite wants the opposite — it should open for the people you send it to and stay off search engines. Those are different jobs, and they point at different hosts.
Here's the honest landscape for both.
| Host | Free tier | Ease of setup | Visibility | Best for |
|---|---|---|---|---|
| GitHub Pages | Free, permanent | Hard — needs a git repo | Public, indexed | Permanent free public pages, if you're OK with git |
| Cloudflare Pages | Free, generous, fast CDN | Hard — git / CLI | Public, indexed | Performance and scale; free custom domain |
| miinideck | Free: unlimited links & projects | Easiest — drop one file | Private by default; opt-in searchable | Deciding who sees a page — private, or public per document |
| Netlify (Drop) | Free (~100 GB/mo) | Medium — account + folder deploy | Public, indexed | No-CLI public deploys |
| Vercel | Free hobby (personal use) | Hard — git / CLI | Public, indexed | Framework apps (Next, React) |
| Tiiny.host | Free: 1 project, 3 MB, 5,000 visits/mo | Easiest — drop one file | Public, indexed | The simplest public single page |
| Neocities | Free 1 GB | Medium — web editor | Public, community | Personal / creative pages |
Other people's free tiers and prices in this table were checked on 6 August 2026. They set their own — check the vendor's site for what's current.
(Free tiers shift — verify current limits before you commit a workflow to one.)
Six of the seven are built for this, and they're genuinely good at it.
GitHub Pages is the honest winner for permanent, free, public. It serves a static site straight from a repo, costs nothing, has no real bandwidth cap for normal use, and the page lives as long as the repo does. The cost is the workflow: you need a git repository, and the page is public and indexed. For a developer who already lives in git, there is no better free deal.
Cloudflare Pages is the one to reach for when performance or scale matters. Free, a fast global CDN in front of every page, unlimited sites on the free plan, and a free custom domain. Git-based like GitHub Pages, so the same workflow cost applies.
Netlify is a popular no-CLI option: Netlify Drop lets you drag a folder onto a page and get a live URL, no git required (a full git-connected workflow is there too). Generous free bandwidth, global CDN. One honest caveat from actually using it — despite the drag-and-drop, the account flow and the folder-not-a-file model trip up true beginners. It's more developer-friendly than beginner-friendly.
Vercel is the right shape when the thing is a framework app — Next.js, React, a build step. The free hobby tier is for personal, non-commercial projects; commercial use moves you to a paid plan, so check the terms if it's for work.
Tiiny.host is the one to beat for beginner-friendly: drop a single HTML file, get a URL — no git, no folder, barely any account friction. If you've never deployed anything before, this is the lowest-friction public option there is. Its free tier does not put a clock on the page: tiiny's own FAQ says links stay online indefinitely as long as you log into the account once every three months. What the free tier caps instead is scale — one active project, 3 MB per upload, 5,000 visits a month — so it runs out when the page gets popular or the file gets big, not when the calendar turns. For a head-to-head on where a private-link host fits next to it, miinideck vs tiiny.host walks the two design intents.
Neocities is the home for personal and creative pages — a free 1 GB tier, an in-browser editor, and a community in the spirit of the old personal web. Less a deploy target for work, more a place for a page that's yours.
The thread across all six: the page is public. That's a feature when you want reach, and a problem when you don't.
This is the half most lists skip, and it's a real job: a client report with private numbers, a draft you're not ready to publish, an invite for a named list. On a public host, the same page that's "free and online" is also findable — it will surface in search within a few weeks, and there's no access control beyond a hard-to-guess URL you have to add yourself.
A private-link host inverts the defaults. The page is noindex by default (it won't be crawled into search), it sits behind an unguessable URL that acts as the access key, and you can add a password for anything sensitive. The job isn't reach by default — it's control: the page opens for the people you choose, and you can still flip a specific document to searchable when you do want that one found.
That's the slot miinideck fills — and setup is as low-friction as Tiiny: drop one HTML file, get a link. The free tier gives you unlimited links and projects — each a private, noindex page with free password protection, and you can opt one document into searchable when you do want it found — and links auto-expire after 7 days (you keep one always-on permanent link), with a small "Powered by" footer on shared links. Paid tiers ($4.99/mo Solo, $14.99/mo Studio) make every link permanent, drop the footer, add a custom domain, and raise the searchable allowance — 5 on Solo, unlimited on Studio — so visibility is a per-page choice, not a lock.
To be clear about where it doesn't fit: for a permanent free public site, miinideck is the wrong tool — its public opt-in is a per-document setting, not free public-site hosting — and GitHub Pages is the right one. The private-link host earns its place when "who can see this" is a question you want to answer yourself. For the channel choice once a page is private, sharing an HTML report with a client compares the options.
The honest one-line routing:
One axis this table doesn't cover is how long the page is supposed to survive. Some tools treat expiry as a feature rather than a limitation — the PageDrop comparison is the clearest example of a host built so pages disappear on purpose, which is the right design for a throwaway demo and the wrong one for a client deliverable.
Most "best free HTML hosting" questions are really public-hosting questions — and the public hosts here answer them well. The job those lists almost always skip is the private one: a page meant for specific people, not the open web. That's the only job miinideck is the answer to. Pick the row that matches the job, not the host with the loudest free tier.
Drop a folder, get a live site in seconds, no account — and a preview that Cloudflare's changelog says stays live for one hour unless you claim it. That's an excellent preview. Here's the line where the thing you're sending stops being a preview.
A SCORM package isn't a course you can open — it's a course wrapped for a machine. Here's what that wrapper buys you, what it costs, and when a plain web link is the honest artefact to hand someone.
They solve the same problem — getting someone from the physical world to a URL — in ways that fail differently. The deciding question isn't which is more modern; it's whether the person can point a camera at it.
miinideck turns a single HTML file into an unguessable link with optional password and expiry. Default-private, never indexed.