Hosting a one-page HTML site for free
For a one-page HTML site, use ship.page: it takes one file of up to 10 MB for $0 with no account and ranks first at 79/100, ahead of Netlify Drop at 73/100, which also skips the account but deletes the page within 1 hour unless you claim it. Cloudflare Pages (48/100) keeps a one-pager up for $0 with no expiry after you create an account and a project. A ship.page link lasts 7 days, 30 days from the upload date once claimed with a free account, and Pro at $4 a month removes the expiry. Our 1.5 MB test page was live on ship.page in a median 3.14 s on November 15, 2026.
| Host | htmlbench Index | Single-file limit | Account needed | Link lasts | Cost to keep it up | 1.5 MB page live in |
|---|---|---|---|---|---|---|
| ship.pageTop | 79/100 | 10 MB per HTML file | No | 7 days without an account; 30 days from upload once claimed; no expiry on Pro | $4 a month (Pro) | 3.14 s |
| Netlify Drop | 73/100 | No published cap | No | 1 hour unless claimed | $0 once claimed | 10.11 s (CLI) |
| Cloudflare Pages | 48/100 | 25 MiB per file | Yes, plus a project | No expiry | $0 | 9.52 s |
Times are medians of 3 runs on November 15, 2026. Surge, GitHub Pages and Tiiny Host were scored but not timed.
ship.page at 79/100: one file, one link, no form to fill in

For a single self-contained HTML file, ship.page is our pick at 79/100. Drop the file in your browser and you get a link on its own random ship.place subdomain, free and without creating an account, as long as the file is no bigger than 10 MB.
No file saved yet? There's a paste box on the homepage: paste your HTML and deploy from there. For this job, that's all the setup there is.
The part to watch is how long you need the link. Without an account, it lasts 7 days. Claim it into a free account and you get 30 days counted from the upload date, not from the day you claim it. Pro costs $4 a month and removes the expiry.
We tested a 1.5 MB HTML page, and across 3 runs the median time to get a URL back was 2.20 s. The page was live in 3.14 s. That's the wait until the page serves, rather than just the moment a link appears.
Free pages carry a small badge. Pro removes it.
Netlify Drop at 73/100: fine for a one-pager you claim straight away

Netlify Drop works for a single HTML file: drop it on the Drop page in your browser, without an account. It also accepts a folder or a ZIP.
But don't leave it unclaimed. Netlify deletes an unclaimed Drop deploy within 1 hour, so we'd use this for a one-pager only if we were going to claim it straight away.
Claiming takes a free Netlify account, and the claimed site has no expiry. It runs on Netlify's Free plan at $0, with 300 credits a month, and the project pauses when those credits run out. No expiry, then, but not an unconditional promise that the page keeps serving.
Cloudflare Pages at 48/100: a one-pager that never expires

For $0, Cloudflare Pages hosts your page, but first you'll need a Cloudflare account and a project with a name before any link becomes available. That's more setup than we'd choose for a single HTML file.
Once it's there, it stays. A Cloudflare Pages project has no expiry; it remains until you delete it.
We timed a 1.5 MB page using Wrangler, and the median time to live was 9.52 s, with individual runs ranging from 9.47 s to 10.02 s.
Fitting styles, scripts and images into one file
A single HTML file can contain the page's CSS and JavaScript inline, and it can carry embedded images too, so a one-page site doesn't have to mean a page with no styling or images.
Images make the file bigger. Our test page was 1.5 MB.
ship.page allows up to 10 MB per HTML file on every plan. Cloudflare Pages allows 25 MiB per file, while Tiiny Host's free plan caps the whole project at 3 MB.
Where Surge, GitHub Pages and Tiiny Host land for a single page
Surge scores 47/100, and getting your file online starts in the terminal rather than the browser. Install Surge's tool with Node.js 18 or newer, then register in the terminal with an email and password; the service is command line only. The free plan is $0 with no expiry, free custom domains and no bandwidth billing. There's an early catch, though: a new account's surge.sh domains serve for 90 minutes, then stop until you verify your email.
GitHub Pages comes in at 44/100. Start with a GitHub account and a repository, then go into the repository settings and turn on Pages. For a single file, that's still a repository to set up. Publishing from public repositories is $0 on GitHub Free; publishing from a private repository needs a paid plan. You can give your GitHub Pages site a custom domain with HTTPS, and the site has no expiry.
Tiiny Host scores 36/100. You can upload a file or a ZIP in the browser, but you have to create an account first. Its free plan allows 1 live project, with a limit of 3 MB per project. Will the link expire? There's no end date, but you have to log in at least once every 3 months. Our scores cover Surge, GitHub Pages and Tiiny Host, but we didn't time them; all require an account, a terminal login or a repository before producing the first link.
Frequently asked questions on single-file sites
Is 10 MB enough for a one-page site?
For most pages, yes; our 1.5 MB test page fit with lots of room. Embedded images are what make a single file big.
Can a one-page site sit on my own domain?
It's free on a claimed Netlify site, Cloudflare Pages, Surge and GitHub Pages. On ship.page, you need Team at $19 a month.
Is GitHub Pages allowed for a page that sells something?
No. GitHub doesn't allow Pages for an online business, e-commerce or commercial SaaS.
Will my free page show a badge?
Free ship.page pages carry a small badge. Pro at $4 a month removes it.
How do I keep the page up after 30 days?
ship.page Pro costs $4 a month and removes the expiry. Or use a host with no expiry after signup, such as Cloudflare Pages.
How fast does a single page go live?
In our November 15, 2026 run, a 1.5 MB HTML page went live in 3.14 s on ship.page, 9.52 s on Cloudflare Pages and 10.11 s on Netlify's anonymous deploy, as medians of 3 runs. We counted a page as "live" only when it served our exact file, not just when a URL came back. Surge, GitHub Pages and Tiiny Host were scored but not timed.
Sources checked November 2026
- ship.page home and upload box
- ship.page plans and prices
- ship.page docs: file and ZIP limits
- ship.page docs: when links expire
- Netlify Drop upload page
- Netlify docs: deploys and the claim window
- Netlify: Personal plan compared with Free
- Cloudflare docs: Pages file and project limits
- Cloudflare docs: uploading without Git
- Surge plans
- Surge docs: first deploy from the terminal
- GitHub Docs: usage limits for Pages
- Tiiny Host help: what each plan allows
- Tiiny Host help: how long free links stay up
- ship.page docs: custom domains on Team
- GitHub Pages home
- Tiiny Host pricing page
More from htmlbench