Best free hosting for a single HTML page
For one HTML page, ship.page wins: $0, no account, 10 MB per file, and a live link in 2.2 seconds. Netlify Drop also skips signup but keeps unclaimed pages for only 1 hour; GitHub Pages is free for good with an account.
| Host | StaticBackend score | Free plan and signup | Max upload and files | Link expiry with no account | Paid plan and custom domains |
|---|---|---|---|---|---|
| ship.page | 84/100Top score | $0, no account | 10 MB HTML, 25 MB ZIP, 100 files | 7 days; 30 days with a free account | Pro $4 a month: no expiry while subscribed; custom domains on Team at $19 |
| Netlify Drop | 77/100 | $0, no account to deploy | Folder, ZIP or HTML file; no published total cap | Claim within 1 hour, then no expiry | Custom domains free once claimed; Personal $9 a month |
| GitHub Pages | 41/100 | $0, GitHub account and a public repo | 1 GB site, 100 GB a month soft bandwidth | Account required, then no expiry | Custom domain free; no business, e-commerce or SaaS use |
1. ship.page (84/100): Publish without making an account
ship.page comes first under our no-account rubric. You can publish a single HTML file for $0 without signing up, and in our test a 4 MB page was live 2.2 seconds after the upload started. Our 18 MB folder of 41 files took 6.2 seconds.
The browser workflow is short: drag your file onto ship.page, wait for the upload, then copy the HTTPS link on ship.place. On a phone, tap the upload box and choose an .html or .zip file from Files. No account step.
The free upload limits are 10 MB for a single HTML file or 25 MB for a ZIP, with up to 100 MB unpacked and 100 files. The pricing page lists unlimited bandwidth. Free pages carry a small ship.page badge, and free deploys are limited to 10 a minute per IP. It hosts static files only, not server code.
But how long does that link last? This is the trade-off to read before uploading: anonymous links expire after 7 days, and claiming an upload with a free account keeps it online for 30 days from the upload date. Claiming it doesn't start a fresh 30 days.
For a link without that expiry, Pro costs $4 a month and keeps the upload online while you're subscribed. It can also restore expired uploads. Pro removes the badge, adds password protection and raises ZIP uploads to 100 MB with up to 10,000 files. You also get up to 5 custom subdomains on ship.place; your own domain needs Team at $19 a month.
There's a one-line deploy API, too: curl -X POST https://ship.page/deploy -H "Content-Type: text/html" --data-binary @index.html. AI agents can publish through its MCP server. For a quick upload, though, you can stay in the browser.
2. Netlify Drop (77/100): Upload now, claim the project afterward
Netlify Drop also lets you publish before creating an account. Open it and drop a folder, ZIP or single HTML file. The file picker accepts .zip, .html and .htm files, and there's a separate folder picker.
Watch the clock. Netlify deletes anonymous deploys within 1 hour unless you claim the project with a free account. That leaves much less time than ship.page's anonymous link, but a claimed project can stay on the Free plan rather than needing a subscription to remove an expiry.
The Free plan costs $0 and includes 300 credits a month, plus custom domains with SSL. If the credits run out, the project pauses. Personal costs $9 a month for 1,000 credits.
Netlify doesn't publish a total size cap for Drop; its support team advises keeping single files under 10 MB. Our timing used the CLI's anonymous deploy, netlify deploy --allow-anonymous, rather than the browser: the 4 MB page took 6.3 seconds and the 18 MB folder took 7.2 seconds (one run). Netlify also refused our 4th anonymous deploy of the day with a daily limit error.
3. GitHub Pages (41/100): Keep a public page without expiry
GitHub Pages has what ship.page's free plan doesn't: a $0 public site with no expiry, plus a custom domain with HTTPS. The low score reflects the account and setup requirements in our rubric, not a time limit on the page.
You'll need to create a GitHub account and repository, add index.html, then turn on Pages in the repository settings and choose the branch to publish. There's no anonymous upload.
On GitHub Free, the repository must be public; publishing from a private repository needs a paid GitHub plan. The Pages limits allow sites up to 1 GB, with a soft bandwidth limit of 100 GB a month and a soft limit of 10 builds an hour.
Check the use restrictions before putting a landing page here. GitHub doesn't allow Pages for an online business, an e-commerce site or commercial SaaS.
Also tested: Cloudflare Pages, Surge and Tiiny Host
Cloudflare Pages scored 45/100. Its direct-upload workflow starts with a free account, then you create and name a project before uploading; the $0 plan has no expiry, supports up to 100 custom domains per project and lists no bandwidth cap. Our 4 MB page reached its production URL in a 9.9 second median after npx wrangler pages deploy started, plus about 3 seconds to create the project, though the per-deploy URL failed its TLS handshake for about 2 minutes.
Surge scored 52/100. Its free plan has no expiry, 450 MB and 10,100 files per project, custom domains with certificates and no metered bandwidth. There's no browser upload: run npx surge ./site my-site.surge.sh in a terminal, create the account there with an email and password, then verify your email within 90 minutes or your surge.sh domains pause.
Tiiny Host scored 33/100. You need an account, then drag in a file or ZIP, pick a link name and publish in the browser. Its free limits are 1 live project, 3 MB per project, 3 uploads a day, 5,000 visits and 5 GB of bandwidth a month; the link stays up if you log in at least once every 3 months.
How we tested hosting a single HTML page
Our scores use a 100-point no-account rubric: publishing without an account gets 30 points, link lifetime without an account gets 25, steps to a live link gets 15, free upload limit gets 15, and the cost to keep the link online gets 15.
We checked limits and prices against vendors' pricing, docs and help center pages in November 2026.
Timing runs took place on November 13, 2026 from a server in Frankfurt, using a 4.0 MB HTML file and an 18 MB folder of 41 files. Every file carried a fresh random marker for each run so hosts couldn't reuse an earlier upload. We report median time from command start to a matching live page, with Netlify's folder result marked as one run.
Only ship.page, Netlify and Cloudflare Pages were timed. Speed isn't scored. The full methodology has the rubric, every host's points and the commands.
Frequently asked questions about hosting a single HTML page
Can I host an HTML page without signing up?
Yes, ship.page and Netlify Drop both accept uploads without an account. Their anonymous links expire after 7 days and within 1 hour, respectively, unless you take the account or plan steps described above.
Which free host keeps my page online without expiry?
GitHub Pages, Cloudflare Pages and Surge offer free hosting without expiry, but all require an account. Netlify's claimed Free projects have a monthly credit allowance and pause if it runs out.
Can I use my own domain for free?
Netlify, GitHub Pages, Cloudflare Pages and Surge support custom domains on their free plans. On ship.page, your own domain requires Team at $19 a month.
Can I put a business landing page on GitHub Pages?
GitHub doesn't allow Pages to be used for an online business, an e-commerce site or commercial SaaS. Its free hosting and lack of expiry don't remove that restriction.
Official pricing and documentation sources
- ship.page pricing
- ship.page deploy API
- ship.page limits and plans
- ship.page link expiry
- ship.page custom domains
- Netlify Drop
- Netlify deploys
- Netlify pricing
- Netlify support on file sizes
- GitHub Pages limits
- Creating a GitHub Pages site
- Cloudflare Pages limits
- Cloudflare Pages direct upload
- Surge pricing
- Surge getting started
- What is Tiiny Host
- Tiiny Host link lifetime
- Tiiny Host plan limits
- Tiiny Host pricing plans
Related static hosting benchmarks and guides