To host a single HTML file, drop it on a drag-and-drop host and copy the link. Netlify Drop, tiiny.host, host-html.com, HTML Hoster and EdgeOne Pages all accept a single .html file.
What separates them is how long the free link lasts and who can open it. As of October 2026, host-html.com's free pages last 3 days, HTML Hoster deletes guest uploads after 90 days, and tiiny.host's free plan holds one project up to 3 MB. Check access settings before sending a link: an upload alone doesn't establish who can read it.
For a free public site with no scheduled expiry, use GitHub Pages or Cloudflare Pages. For a file meant for one client or investor, where you need to control access and see whether they opened it, go to private sharing.
Sending it to a client or investor? Share the HTML file as a tracked link and get an email when they open it.
How to host a single HTML file in three steps
- Check that the file stands alone. Embed its styles, scripts, images and fonts, or make sure any external resources are publicly accessible. If it depends on neighbouring files, upload the folder or a ZIP with
index.htmlat the root. - Upload it. Drop it on a drag-and-drop host, or add it to a public GitHub repository as
index.htmland turn on GitHub Pages. - Open the link in a private window before you send it. Check images, styling and buttons, then confirm the access settings. Missing assets usually mean a broken path or a resource the recipient can't reach.
To test it on your own computer first, open a terminal in the folder, run python3 -m http.server --bind 127.0.0.1 8000 and visit http://localhost:8000. Binding to the loopback address keeps this test server on your computer.
Hosting vs. sharing a private HTML file
In an August 2025 Vercel forum thread, a user reported that a v0 preview could open for anyone with its URL. They asked:
“Can I make the link private or something ?”
Today's v0 chat settings can limit access to invited people, a team or anyone with the link. Team defaults are configurable, and a separately deployed website has its own protection settings. Check the actual link your recipient will receive.
If the page is public, such as a portfolio, a class project or a demo, start with the hosts below and check their use policies. The quick picks are in What to pick. For a private file, choose whether access should require a shared password, a team login or a verified email inbox.
For the delivery workflow, see how to send it to a client so it opens as a page, not code. Here's how the ten options compare.
The 10 tools, at a glance
Getting a link
Controlling and tracking it
| Tool | Password | Email gate | What you see about visitors |
|---|---|---|---|
| GitHub Pages | Use Enterprise Cloud access for private sites | Enterprise organization access | Add your own analytics |
| Vercel | Pro add-on: $20/project/mo | Vercel Authentication on every plan | Web Analytics; aggregate traffic |
| Netlify Drop | Temporary password before claim; ongoing password from Pro | Team login under project visibility settings | Traffic analytics; check plan |
| Cloudflare Pages | Configure Cloudflare Access policies | Via Access; protect the production address explicitly | Web Analytics; aggregate traffic |
| tiiny.host | Solo | Email capture from Pro | Built-in analytics from Tiny |
| host-html.com | Pro | Not listed | Page views on Free; detailed analytics on Pro |
| EdgeOne Pages | Not established in reviewed upload docs | Not established in reviewed upload docs | Platform metrics |
| static.app | Website or page password in settings | Forms collect submissions | Website analytics on paid plans |
| HTML Hoster | Not listed | Not listed | Not listed on reviewed page |
| HummingDeck | Inbox verification on Pro and Business | Ask Email, Verified Email and Restricted on Pro and Business | Visits per link and an email alert on opens on every plan; page time, return visits and supported clicks from Starter |
Prices and limits checked on October 30, 2026 against vendor pricing pages and documentation. Sources are listed at the end. Dollar prices are USD; monthly billing applies unless stated. “Not listed” means the reviewed source doesn't establish that feature.
A visit count tells you a page was opened. A link per recipient associates activity with the person you sent it to; an inbox check adds evidence that the visitor controls that email address. Neither establishes who was physically at the keyboard.
GitHub Pages
GitHub Pages fits public portfolios, documentation and demos. The published site limit is 1 GB, separate from the limits on uploading individual files to a repository.
How: Add index.html at the root of a public repository. Open Settings → Pages, choose Deploy from a branch under Build and deployment → Source, select the branch and root folder, then save. GitHub documents the publishing-source controls.
Read the use policy before putting a business workflow there. GitHub's Pages policy says the service isn't intended for running an online business, an e-commerce site or a site primarily facilitating commercial transactions or providing commercial SaaS. That doesn't prohibit every business-related portfolio or documentation page.
A private source repository doesn't make the published page private. Private visitor access requires an organization on GitHub Enterprise Cloud. For a public page, add your own analytics if you need traffic measurements.
Vercel
Vercel fits a React or Next.js project that needs a build and deployment workflow. For an already finished HTML file, its Git or CLI setup is more work than a browser upload.
The Hobby terms say: “You shall only use the Services under a Hobby plan for your personal or non-commercial use.” Pro starts at $20/month for commercial projects.
Access protection has changed since older comparisons were written. Vercel Authentication protects production deployments on every plan; a shared password is a Pro add-on costing $20 per project per month. Web Analytics measures traffic rather than associating each visit with a client you emailed.
Netlify Drop
Netlify Drop accepts a single HTML file, a folder or a ZIP. Its current quickstart describes a temporary password on unsigned uploads until you claim the project, so don't assume a fresh Drop link opens publicly.
How: Open Netlify Drop, drop the file, then use Claim your project to attach it to an account. Check Project visibility before sharing the resulting address. The browser guide doesn't state a guaranteed lifetime for an unclaimed upload, so claim it if the link needs to last.
Free includes 300 credits a month; Personal is $9/month and Pro starts at $20/month with unlimited members. Credit usage replaces the old bandwidth-and-build-minute comparison. Ongoing shared-password protection starts at Pro.
Cloudflare Pages
Cloudflare Pages suits a public static site that you want to keep online without a trial deadline. Its Direct Upload guide supports a folder or ZIP in the dashboard, with up to 1,000 files at 25 MiB each. Put your single HTML file in a folder as index.html first.
How: In Workers & Pages, choose Create application → Get started → Drag and drop your files. Name the project, upload the folder or ZIP, and choose Deploy site.
You can configure Cloudflare Access for identity-based access. The Pages Enable access policy setting protects preview deployments, so it doesn't automatically secure the production pages.dev or custom-domain address. Test every address that can serve the file before using this setup for private delivery.
tiiny.host
tiiny.host offers a browser upload for finished HTML and ZIP sites. Its Free plan holds one project up to 3 MB, with branding and traffic limits.
How: Choose Upload file, add the HTML file or ZIP and choose a link name, then Publish. The HTML upload guide covers standalone files and sites with separate assets.
The free plan isn't a seven-day trial. Its retention rule requires you to log in at least once every three months; some content is handled separately as a temporary preview.
| Plan | Monthly | Per month, billed yearly |
|---|---|---|
| Tiny | $9 | $5 |
| Solo | $18 | $13 |
| Pro | $38 | $31 |
| Pro Max | $89 | $74 |
The USD pricing guide lists the billing options. Tiny adds built-in analytics; Solo adds passwords and custom domains; Pro adds email capture. Use the visitor counts for traffic measurement; for a particular client's activity, use a recipient-specific link or an appropriate email gate.
host-html.com
host-html.com gives a small page a short-lived free URL: unlimited free pages, each up to 1 MB and live for 3 days. That's useful for a quick prototype review with a clear deadline.
How: Drop the HTML file or paste the code, sign in, and choose Publish. Copy the resulting URL.
Pro is $9/month or $90/year, with permanent hosting, passwords and detailed analytics. Free includes per-page view counts. If the link needs to work next month, choose the paid option or a host without that three-day expiry.
EdgeOne Pages
EdgeOne Pages, now branded EdgeOne Makers, accepts a single HTML file, folder or ZIP. Individual files can be up to 25 MB; a folder or ZIP needs index.html at its root.
How: Open Makers Drop, choose Select File or Select Folder, optionally name the address, then deploy. Guest links last one hour; register to retain the deployment.
The pricing page lists a free plan and a quoted Business option. It's an option for a public file that exceeds tiiny.host's free cap; check registered-project limits before choosing it for a larger site.
static.app
static.app provides a file-manager workflow for a small static site. Its free trial lasts seven days and includes 50 MB storage; Starter then costs $6/month, or $5/month billed yearly. Paid plans add custom domains and website analytics.
How: Put index.html and its assets in a ZIP, drag it onto the HTML upload page, choose the subdomain and complete signup. Use the file manager to update the site.
The help page documents passwords for an entire site or an individual page. Choose it when you want to maintain a site through a browser file manager and are comfortable paying after the trial.
HTML Hoster
HTML Hoster accepts a single HTML file or a complete folder while preserving nested asset paths. Guest uploads are deleted after 90 days; signing in retains pages and enables custom routes and editing.
How: Choose Choose files for a standalone page or Choose folder for a site. Upload it and copy the primary index.html link. Sign in if you need the page to stay available beyond the guest period.
The reviewed page doesn't publish a size cap or paid pricing. Check those before relying on it for a large file, rather than treating an unstated limit as unlimited hosting.
Developer CLI and Git hosts
Surge deploys a folder from the terminal, while Render Static Sites deploy from a Git repository. Both are worth considering if you already use those workflows; for a one-file browser upload, start with the ten tools above.
HummingDeck
HummingDeck is our product. It fits finished HTML proposals, decks and demos sent to specific clients or investors, including HTML pages made with ChatGPT and exported Claude designs.
Upload the file, create a Personal Link for each recipient, and send that link. Free includes 5 documents, 5 active share links across the workspace, basic visit tracking, an email when someone opens a link, and bot signals. Browser uploads can be up to 100 MB.
Starter adds time on each page, return visits, supported clicks, link expiry and HTML ZIP previews from $10/month. Analytics history runs 30 days on Starter, 90 on Pro and unlimited on Business. See plans and pricing.
On Pro and Business, choose the access mode that fits the file:
- Ask Email records the address a visitor enters.
- Verified Email requires the visitor to confirm access to an inbox with a one-time code or emailed access link.
- Restricted requires that confirmation through one of the email addresses you list.
Verification establishes inbox access, rather than legal identity. Personal Links associate activity with the intended recipient; if another person opens an Open link, that association alone doesn't prove who viewed it.
Pro and Business also show additional viewer records in a viewer network. A new viewer can mean another device or another stakeholder, so it is a signal to investigate rather than a record of a forward. Bot filtering uses several signals to flag known and likely bots, without guaranteeing that every remaining visit is a person.
Exported HTML opens in a sandboxed viewer with tracking added. If the file has meaningful pages, such as slides, HummingDeck can report time on each page from Starter. Build JSX or React source before uploading, and test the recipient link because remote resources can fail.
Share pages carry a noindex directive requesting that search engines leave them out of results. An Open link still works for anyone who has it. For several documents, use a Deal Room for sales or a Data Room for fundraising; Business adds a custom sharing domain.
The walkthrough shows the upload, a Personal Link, the recipient view and visit tracking:
How to Share an HTML File as a Link and Track Visits
Watch on YouTubePlays from YouTube when you press play.
Chapters
Read the transcript
00:00 Share interactive HTML files
Here's how to share interactive HTML files with clients and track visits using HummingDeck. Upload a file you've already created, send a link, and let your client explore it in their browser.
00:14 Upload your finished HTML file
For this example, we're using a finished, self-contained HTML pricing calculator. It could be made with AI or built by a developer. In your Library, choose Add document, upload it, and check that the controls work. Other formats work too: PDF, PowerPoint, Word and Excel.
00:37 Create a client link
Create a Personal Link for your buyer and copy it into your email. Give them something useful to try: “Try both plans with your team size before our call.”
00:50 Explore the HTML file in a browser
The link opens the calculator in their browser. They don't need a HummingDeck account. Switch from Standard to Plus, and the estimate updates. Your buyer can explore the options themselves.
01:07 Review visits and viewing time
Back in HummingDeck, open Links to check visits recorded against that link. On Starter and above, Analytics shows the visit history and recorded viewing time. You can use that context to follow up: “Would it help to walk through the plans together?”
01:26 Add HTML files to a Room
To share the rest of your sales material, add this HTML file to a HummingDeck Room alongside your presentation and proposal. Send one link to the whole set. Your buyer can open the calculator, then return to the Room to review the proposal. Share your interactive HTML files with HummingDeck. The link is below.
Who actually viewed it
For a public portfolio, a working URL can be enough. For a proposal you sent to one client, you often need to know whether they opened it, which pages they read and whether they returned.
A Personal Link gives those visits a recipient context. An inbox gate adds a check before access, and an additional viewer record tells you someone new could be looking. HummingDeck records this activity for each link you send, with viewing time and page detail from Starter.
Hosting an AI-generated artifact
Check the export before choosing the host. A ready .html file can contain compiled JavaScript, including React, and still open as a standalone page. A .jsx source file or a project with package.json needs a build step first.
Most static hosts, HummingDeck included, expect ready HTML rather than JSX source. Export or build the artifact, then host the file or the built folder. Our Claude artifact export guide covers what each export contains; HummingDeck previews HTML ZIP bundles from Starter.
Claude's general artifact-sharing route requires a Claude account for newly shared artifacts, with owner-controlled external sharing on Team and Enterprise. Legacy chat artifacts created before September 16, 2026 and published on personal Free, Pro or Max plans support signed-out access, as do some Code or custom-artifact routes. For those distinctions, see sharing a Claude artifact, then test the chosen native link signed out.
For v0, check both chat sharing and deployment protection. A private conversation and a deployed website are separate access decisions. Exporting a finished HTML file gives you a separate delivery copy to host and control.
What to pick
| If you need | Start with |
|---|---|
| A free public portfolio and already use GitHub | GitHub Pages |
| A production React or Next.js app for work | Vercel Pro |
| A quick browser upload you can claim and maintain | Netlify Drop |
| A free static site with folder or ZIP upload | Cloudflare Pages |
| A small HTML file and a simple upload workflow | tiiny.host |
| A disposable page for a three-day review | host-html.com Free |
| A public file larger than tiiny.host's 3 MB cap | EdgeOne Pages; register to retain it |
| A browser file manager for ongoing edits | static.app after its trial |
| A guest upload for up to 90 days | HTML Hoster |
| Visit alerts for HTML sent to a client | HummingDeck; Starter adds viewing time |
| Verified inbox access for a finished artifact | HummingDeck Verified Email or Restricted on Pro and Business |
| A shared password for a page | tiiny.host Solo, host-html.com Pro or static.app |
After you host the file
Share your HTML as a tracked link with HummingDeck. You'll get an email when someone opens it, and from Starter you'll see how long they spent and whether they came back.
FAQ
Can I host a single HTML file for free?
Yes. Upload it to Netlify Drop, tiiny.host or HTML Hoster and copy the link, checking whether you need to claim the upload or sign in to keep it. For a public site with no scheduled expiry, add index.html to a public GitHub repository and turn on GitHub Pages. Check access settings too: Netlify temporarily password-protects unclaimed drops, while a public hosting link works for anyone who has it.
How long does a free HTML link last?
It depends on the host. As of October 2026, host-html.com's free pages last 3 days, HTML Hoster guest uploads last 90 days, and static.app offers a 7-day trial. GitHub Pages and Cloudflare Pages have no scheduled expiry, while HummingDeck's free links stay active until you revoke them or remove the document. tiiny.host requires a login at least every three months to keep a free account active.
Can I host an HTML file on Google Drive?
Google Drive stores HTML files but doesn't serve them as web pages. Google ended Drive web hosting on August 31, 2016, so use a static host when you need a link that renders the page.
Google's original deprecation notice records the shutdown date.
Does Google offer free HTML hosting?
Yes. Firebase Hosting's Spark plan includes 10 GB storage and 360 MB per day of data transfer for static files deployed with the Firebase CLI. Google Sites uses its own page editor and supports embedded HTML, CSS and JavaScript through Embed code, rather than directly hosting your uploaded .html file.
See Firebase pricing, the Hosting quickstart and Google Sites embed instructions.
How can I host an HTML file locally?
Open a terminal in the folder holding the file, run python3 -m http.server --bind 127.0.0.1 8000, and visit http://localhost:8000. This binds the test server to your own computer. Upload the file to a host when you need a link other people can open.
Can I password-protect a single HTML file?
Yes. tiiny.host includes passwords from Solo, host-html.com from its $9 Pro plan, and Netlify from Pro for ongoing protection. HummingDeck offers inbox verification on Pro and Business: a Restricted link opens only through an address you list, confirmed with a one-time code or an emailed access link.
Cloudflare Pages can sit behind Access policies, but its preview-protection switch alone doesn't protect the production address. Vercel offers a shared password as a Pro add-on; see each tool's section for the current conditions.
What's the best tiiny.host alternative?
Choose for the limit you're hitting. EdgeOne Pages accepts files up to 25 MB, with registration needed to retain a guest deployment. For a client's engagement, HummingDeck records visits per link and adds time on the page from Starter. Export or build a Claude or v0 project to ready HTML before sending it to a static host.
How do I share an AI-generated HTML page privately with a client?
Export or build it to HTML first, then choose access controls for the delivery link. HummingDeck's Restricted and Verified Email modes on Pro and Business require inbox confirmation without a recipient account. Claude's general artifact-sharing route requires a Claude account for new shares, while legacy and some Code or custom-artifact routes differ; v0 sharing and deployed-site access also have separate settings.
See exporting Claude artifacts, sharing a Claude design and sending HTML to a client.
Does GitHub Pages allow commercial use?
Only for pages that aren't mainly commercial. GitHub says Pages is “not intended for or allowed to be used as a free web-hosting service to run your online business, e-commerce site, or any other website that is primarily directed at either facilitating commercial transactions or providing commercial software as a service (SaaS).” Check the policy for your site; a business-related portfolio isn't the same as running a storefront or SaaS service on Pages.
Read the GitHub Pages limits and use policy.
Can I track who viewed a static HTML file?
Yes, with a host that records visits per link or with analytics you add yourself. HummingDeck records visits for each link on every plan and, from Starter, time on the page, return visits and supported clicks. A Personal Link associates activity with the recipient you sent it to; Verified Email or Restricted access adds inbox confirmation on Pro and Business. These signals establish link activity and inbox access, rather than proving who was at the keyboard.
What about React or JSX from Claude artifacts?
Export or build the source into ready HTML first. A .jsx file needs compilation before a browser can run it, and renaming it to .html doesn't make it a page. Host the exported HTML file, or upload the built folder as a ZIP to a host that serves folders. HummingDeck previews HTML ZIP bundles from Starter.
Sources
Checked October 30, 2026. These are the vendors' own pricing pages and instructions; account controls are documented workflows, rather than authenticated UI tests.
- GitHub: Pages limits and use policy, publishing source and private-site access.
- Vercel: pricing, Hobby terms, production authentication and password add-on pricing.
- Netlify: pricing, Drop quickstart and password protection.
- Cloudflare: Direct Upload and preview-deployment access.
- tiiny.host: pricing, USD billing, plan limits and free-link retention.
- host-html.com: file limits and upload steps and pricing.
- EdgeOne: direct upload, Makers Drop and pricing.
- static.app: pricing, HTML upload and password and file-manager help.
- HTML Hoster: uploads, accounts and retention.
- Google: Drive hosting shutdown, Firebase pricing, Hosting quickstart and Sites embeds.
- AI sharing: Claude artifacts, Claude Code, custom artifacts and legacy publishing and v0 sharing settings.
- HummingDeck: pricing, HTML and ZIP requirements and HTML sharing walkthrough.
Related:
- How to share an HTML file with a client: delivery, attachments and mobile pitfalls.
- Export Claude artifacts: distinguish ready HTML, bundles and source code.
- Share a Claude design: native sharing and tracked delivery options.
- Share a ChatGPT HTML website: turn generated HTML into a working browser link.
- Add analytics to an HTML page: choose traffic measurement or recipient engagement.
- Host a PDF online: the equivalent hosting comparison for PDFs.