# How to share an HTML file as a link (no login for the client) · Stacktree

Source: https://stacktr.ee/share-html-file-with-client

[Skip to content](#main) PFrom Product Hunt? Your first pages are free, no card. Code `PRODUCTHUNT` takes 50% off your first month of Studio.[Start free &rarr;](https://app.stacktr.ee/?join=1&from=producthunt)

&times;   A Stacktree customer sent you. Your first month is 50% off on any plan, taken off at checkout. [Start free &rarr;](https://app.stacktr.ee/?join=1&from=referral)

 &times;      [stacktr.ee](/)  [Examples](/#proof) [How it works](/#how) [Pricing](/pricing) [Security](/security) [Log in](https://app.stacktr.ee) [Publish one](https://app.stacktr.ee/?join=1)     By [Steve Smith](/about) · Founder, Stacktree Last updated October 15, 2026          use case

#  Share an HTML file as a link they just open.

   No attachment, no download, no login, no account for them.  Publish the file, gate it to the client's company if you want, and send one link. It opens in any browser, stays out of search, and you can expire or revoke it after the handoff.

  [ Send your first link free ](https://app.stacktr.ee/?join=1&from=seo_share_html_file_with_client)   [
See what your client sees (passcode: demo) ](https://example-locked-review.stacktr.ee/)   No card. 3 free pages, each live for 7 days. Client work that must outlive the week is Solo, $19

     How to share an HTML file as a link, in three steps:

  - Upload the file. Drag the .html file onto the Stacktree dashboard. For a whole site, zip the folder that holds index.html and drop the zip: its images, styles and other pages come along. An AI assistant connected to Stacktree can publish it for you.
- Copy the link. You get a private page at an unguessable address. It opens in any browser, with nothing to download and no account to create.
- Send it. Paste the link into an email or chat. Add a passcode or a company-email check first if only the client should open it.
  Made by ChatGPT, Claude or Codex? Ask it to publish the file to Stacktree and it hands you the link. [How](#from-the-agent).

    What your client sees

  [  Brand & marketing audit open example  Findings, perception map, score dial, all on one navigable page.
Live page &rarr;
 ](https://example-brand-audit.stacktr.ee/)[  Performance report open example  The monthly numbers, sent as a link that updates in place.
Live page &rarr;
 ](https://example-performance-report.stacktr.ee/)[  Passcode-gated review passcode: demo  Type what your client would type and see the styled gate.
Live page &rarr;
 ](https://example-locked-review.stacktr.ee/)

##  How do you share an HTML file?

Host the file and send a link instead of attaching it. Publish the HTML to Stacktree and it becomes a page at an unguessable URL that is never listed or indexed: the recipient opens it in any browser with nothing to download and no account to create, and the link stays the same when you revise the file. For client work, add a password or lock viewing to the client's email domain, set an expiry, or revoke the link after the handoff.

## Watch it in a minute

Play 1:04     -  [ 0:00 Why sharing HTML is hard ](https://www.youtube.com/watch?v=fnAhFl-IjpQ)
-  [ 0:15 Drop it, get a private link ](https://www.youtube.com/watch?v=fnAhFl-IjpQ&t=15s)
-  [ 0:28 Lock it and send it ](https://www.youtube.com/watch?v=fnAhFl-IjpQ&t=28s)
-  [ 0:47 Update it, same link ](https://www.youtube.com/watch?v=fnAhFl-IjpQ&t=47s)

## Why not just email the file?

 Because an emailed `.html` file is the worst version of your work. It arrives as an attachment the client has to download and open from their file system, where it renders as a local file rather than a page. Gmail caps attachments at 25 MB, which self-contained AI-generated files bump into surprisingly often. And security tooling is right to be suspicious: HTML attachments are a documented malware-delivery technique, so your deliverable competes with phishing for the benefit of the doubt. A link has none of these problems.

 Chat is no better. Paste HTML into Slack and you get a code block; attach it and the client still ends up downloading a file. If the work is a page, the client should receive a page.

## Other ways to share an HTML file, and where each falls short

  - Email attachment. Arrives as a download, opens as a local file, and looks like the HTML attachments mail filters are trained to distrust.
 - Google Drive or Dropbox. The recipient gets a file preview or a download, not a working page. Google Drive stopped serving HTML as web pages in 2016.
 - A static host (Netlify Drop, GitHub Pages, tiiny.host). Gives you a real web address, but at a public one. A password is a paid add-on on most of them, and GitHub Pages has none.
  What the client actually needs is a page at a private address that opens in their browser. That is the gap Stacktree fills: private by default, with a passcode on every plan, Free included.

## How do I share large HTML files?

 This is the question that sends people hunting, usually right after a mail server bounces the attachment. The answer is to stop moving the file and start moving a link. Upload once (drag and drop, one API call, or one MCP tool call from the agent that wrote it) and the size problem ends at your side of the wire. The client's browser fetches the page from a CDN the same way it fetches any website, whether the file is 40 KB or 40 MB.

## Send it without making it public

 Private by default means the URL itself is the first gate: an unguessable token, no public gallery, no directory, no sitemap entry, crawlers opted out. Nobody finds the page by searching; only the people you send it to know it exists. That is [private HTML hosting](/private-html-hosting) in practice, and it is the property the publish buttons built into AI tools do not offer, because their links are designed for the opposite job.

## Share with a client without a login

 When "anyone with the link" is not tight enough, add a gate. Neither one requires the client to have or create an account:

  - Password. You set a passcode and tell the client. Forwarding the link alone opens nothing.
 - Email-domain gate. You allow @yourclient.com. A viewer enters their work email, clicks a one-time magic link, and reads for 24 hours per verification. Forward the URL outside the company and it stops at the gate.
  Passcodes are on every plan, Free included, and never metered. Email-domain gates start on Solo at $19 a month, alongside permanent pages and your own domain. Gated pages also unfurl in Slack and Teams as a locked graphic that leaks no title and no description, so even the preview of a confidential deliverable stays quiet.

 Either gate can also sit on a whole [client space](/client-spaces) rather than one page, so everything you publish for that client inherits it. The client types the passcode once for the lot and stays in for 30 days, and what they see is a styled page rather than the browser&rsquo;s grey password box. A gate set on an individual page overrides the space&rsquo;s.

## One link per recipient: expire it, cap it, revoke it

 For handoffs with more than one stakeholder, mint each person a signed share link on top of the same page: label it ("CFO", "legal review"), give it its own expiry, cap how many times it can be opened, and revoke it individually if a thread leaks. The underlying page and everyone else's links are untouched. Share links are free on every plan.

## For the genuinely sensitive file

  - [Burn-after-read](/one-time-view-links) deletes the page after the first view. One open, then gone.
 - Expiry scheduling ends the link on a date you pick, so a preview never outlives the engagement.
 - End-to-end encryption encrypts the page in your browser with AES-GCM; the key rides in the URL fragment and never reaches the server, so the host cannot read what it stores. Free, no plan gate.
 - A pre-flight scan checks the file for API keys, emails, and card numbers before it goes live, and blocks by default when an agent publishes over MCP. [What it catches and why the agent path blocks](/blog/do-ai-agents-leak-secrets).

## Did they actually read it?

 Sending is half the job; the other half is knowing it landed. Every plan carries the reactions and notes viewers leave anchored to specific parts of the page, [which flow back to the agent that built it](/client-feedback-loop). Solo adds the numbers: opens, unique viewers, and when it was last read. Studio adds ["How it's read"](/page-engagement): time on page, scroll depth, read-to-end rate, and a dwell heatmap, aggregate and anonymous rather than surveillance. If the risk is that the page never gets opened at all, give it [a one-minute page video](/page-video): the video's picture goes in your email, with a link that opens straight into it.

## When the file is a demo or a report

 The same handoff carries whatever the HTML actually is. If it is a build the client should click through before the meeting, [host it as a private client demo site](/host-client-demo-site): one gated link instead of a staging server, updated in place as the build moves. If it is the monthly numbers, [send the client report as a link](/send-client-report-as-link) they bookmark once, the same URL every month. If it is a proposal, [send it so it opens on a one-minute video](/blog/send-proposal-with-video). All three sit behind the same gates as a single file.

## Getting the HTML from ChatGPT or Claude

 If the file does not exist yet, ask for it. A long answer in a chat is a wall you read top to bottom; the same answer as a page puts the conclusion on the first screen, the figures in a table, and a chart where a chart helps. Add one instruction to your request:

```
`Answer in HTML. One self-contained file: inline CSS and JavaScript,
no external fonts or images. Put the answer on the first screen,
then the detail. It must read well on a phone. It is for Dana, our client.`
```

 Self-contained keeps the page working after you move or send it, the answer first stops it burying the number the reader came for, and phone-friendly matters because a link you send is often opened on a phone. To open what comes back, save it as `something.html` and double-click it: any browser opens it, offline, with no account. ChatGPT can also preview it in the chat, Claude shows it as an artifact beside the chat, and Codex or Claude Code write the file into your project.

## Publish straight from the agent that made it

 Most HTML files that need to reach a client were written by an AI five minutes earlier. Skip the export-and-upload step: [ChatGPT (from its plugin directory)](/chatgpt), Claude Code, Claude.ai (one-click OAuth connector), Codex, Cursor, and any MCP client can publish the file directly with `publish_html` and return the private link in the same conversation. Revisions go through `update_site`, so the link you sent on Monday shows Thursday's version without a resend. Prefer hands-on? Drag the file onto the dashboard instead.

 Three finishing touches for client work: if the page arrived plain (an export, an agent's output), [the design pass](/design-pass) rebuilds it to Stacktree's design standard in about a minute, same content, same link. Paid plans render no [Stacktree badge](/made-with) on the page, and you can serve the link from your own domain. See [custom domains](/custom-domains) for putting the deliverable on `reports.yourco.com`, [client spaces](/client-spaces) for giving one client a permanent address that every file you send them lands behind, and [pricing](/pricing) for what sits in each plan.

##  Which plan does this handoff need?

Filing work under a client is free on every plan. What a paid plan buys is time on
    the clock and an address of your own.

  -   Free $0

###  One handoff this week

 3 pages, passcodes included. Each lasts 7 days; once someone else opens one, it stays up for 30 days after their latest visit, up to 90 days in total. If one comes down before you meant it to, it is restorable from the dashboard for 48 hours. [ Start free ](https://app.stacktr.ee/?join=1&from=seo_share_html_file_with_client)
-   Solo $19 a month

###  A link the client keeps (paid-media dashboard, monthly report, proposal)

 25 pages at a time that never expire, your own domain, one client space, passcodes and company-email gates, and no Stacktree footer. [ Start with Solo ](https://app.stacktr.ee/billing?plan=solo&from=seo_share_html_file_with_client&join=1)
-   Studio $79 a month

###  Several clients, each with their own address

 Unlimited pages, 10 client spaces and 10 domains, so every client gets a permanent address, one passcode, and engagement detail on what they read. [ Start with Studio ](https://app.stacktr.ee/billing?plan=studio&from=seo_share_html_file_with_client&join=1)

FAQ

## Frequent questions

     How do I send an HTML file to a client? +  Publish the file and send the link instead of attaching it. The client opens the link in any browser: nothing to download, no account to create, and the page renders as a page rather than a local file. Add a passcode you tell them, or lock viewing to their company email domain, if the contents warrant it. Revising the file keeps the same link, so the version they open on Thursday is the one you published on Thursday.   How do I get ChatGPT or Claude to answer in HTML? +  Say so at the end of your request: "Answer in HTML, as one self-contained file with inline CSS and JavaScript." Add who it is for and that it must read well on a phone. ChatGPT, Claude, Codex and Claude Code all follow this, and you get back a single file you can open in any browser, then send as a link.   How long does a free page stay up? +  Free pages last 7 days. Once someone else opens one, it stays up for 30 days after their latest visit, up to 90 days in total. Your own opens do not count, and Free is 3 pages in total. A page that has come down is restorable from the dashboard for 48 hours. Starting a paid plan clears the expiry on every page already published, so the link your client is holding stops counting down and nothing needs re-sending.   How do I share large HTML files? +  Host the file and send a link instead of attaching it. Gmail caps attachments at 25 MB, and a large self-contained HTML file (the kind AI tools produce, with inlined styles, data, and images) gets unwieldy fast. Published to Stacktree, the size is handled once at upload; the client just opens a URL, and the page streams from a CDN like any other website.   Can I share a whole site, not just one HTML file? +  Yes. Zip the folder and drop the zip on the dashboard. Put index.html at the top of the folder (a zip with everything inside one folder works too), and its images, stylesheets, JavaScript and other pages come along at the same private link. A zip can hold up to 1,000 files within your plan's page size: 25 MB on Free, 250 MB on paid plans. System files, .git and node_modules are left out, and server code such as PHP does not run.   How do I share an HTML file with colleagues? +  Same flow, one different gate: publish the file and restrict viewing to your company's email domain. Anyone @yourco.com opens it after a one-time magic-link check; nobody creates an account. For a quick internal share, the unguessable link alone is usually enough.   How do I send a page to a client without making it public? +  Publish it to a host that is private by default. A Stacktree URL is an unguessable token: it is never listed, never indexed, and never appears anywhere you did not send it. That is the opposite of the publish-buttons in Claude and ChatGPT, which mint links designed to be shared onward. Add a password or an email-domain gate if you want a second layer on top.   Can I share an HTML file with a client without a login? +  Yes, and without them creating an account either. A password gate means you tell the client one passcode. An email-domain gate means anyone @yourclient.com proves they own such an address via a one-time magic link, then reads for 24 hours per verification. Both open in any browser; neither involves signing up for anything.   Does the client have to download anything? +  No. That is the point of hosting it: the link opens as a normal web page, interactive parts included. An emailed .html file arrives as a download the client has to open from their file system, which looks alarming and sometimes gets flagged, because malicious HTML attachments are a documented attack technique (Microsoft calls it HTML smuggling). A link avoids the whole category of problem.   Can I revoke access after I send it? +  Yes, at several levels. Give each recipient their own signed share link with a label, an expiry, and a cap on opens, and revoke any one of them individually without touching the others. Or set an expiry on the whole site, or delete it outright. For a one-shot handoff, burn-after-read deletes the page after the first view.   Can I tell if the client actually read it? +  Every plan shows the reactions and notes viewers leave on the page. Solo, at $19 a month, adds the numbers: how many people opened it and when it was last read. Studio adds "How it's read": time on page, scroll depth, read-to-end rate, and a dwell heatmap, all aggregate and anonymous, not session replay. See [page engagement](/page-engagement).   Can I host AI-generated HTML online? +  Yes. A page ChatGPT, Claude, Gemini or Codex wrote is an ordinary HTML file, so any host serves it. The difference is who can see it: most quick hosts put it at a public address, while Stacktree keeps it at a private, unguessable one with an optional passcode. If the assistant is connected to Stacktree, it publishes the file itself and hands you the link in the same chat.   The file came out of Claude / ChatGPT. Can the agent publish it for me? +  Yes. Stacktree is MCP-native: Claude Code, Claude.ai (one-click OAuth connector), Codex, Cursor, and any MCP client can call publish_html and hand you back the private link in the same conversation that produced the file. When the client asks for changes, the agent calls update_site and the link you already sent shows the new version.
Keep reading

## Related guides

   -  [ Share a Gemini Canvas with a client Past the admin switch and the gemini.google.com-only link. ](/share-gemini-canvas-with-client)
-  [ Who can open what your AI made ChatGPT, Claude, Gemini and Copilot sharing rules, checked against the vendors’ own pages. ](/ai-sharing-rules)
-  [ Business proposal template A complete proposal you publish as a private link in one click, then fill in. ](/templates/business-proposal)
-  [ Pricing Passcodes on every plan, Free included; permanence, your domain and no badge start at $19. ](/pricing)
-  [ Client spaces One address per client, one passcode for everything filed behind it. ](/client-spaces)
-  [ Custom domains Serve the client link from reports.yourco.com instead of a vendor URL. ](/custom-domains)
-  [ Share deliverables with clients The wider client-handoff story: prototypes, reports, dashboards. ](/share-with-clients)
-  [ Host a private client demo site The demo handoff: one gated link instead of a staging server. ](/host-client-demo-site)
-  [ Password-protect an HTML page The passcode gate, step by step. ](/password-protect-html-page)
-  [ The design pass One click brings a plain page to Stacktree’s design standard before the client sees it. ](/design-pass)

References

## Sources and further reading

   -  [ Google: Gmail attachment limits ↗ The 25 MB attachment cap that large HTML files run into. ](https://support.google.com/mail/answer/6584)
-  [ Microsoft Security: HTML smuggling ↗ Why mail filters and recipients treat .html attachments with suspicion. ](https://www.microsoft.com/en-us/security/blog/2021/11/11/html-smuggling-surges-highly-evasive-loader-technique-increasingly-used-in-banking-malware-targeted-attacks/)
-  [ MDN: URL fragment ↗ Why an end-to-end-encrypted page's key, kept in the URL fragment, never reaches the server. ](https://developer.mozilla.org/en-US/docs/Web/API/URL/hash)
-  [ OWASP: password storage ↗ How a page passcode is stored as a hash, never in plaintext. ](https://cheatsheetseries.owasp.org/cheatsheets/Password_Storage_Cheat_Sheet.html)

##  Turn the file into a link the client can just open.

 Private by default, with gates and revocation from $19 a month. No card to try it.

 [ Sign up free → ](https://app.stacktr.ee/?join=1&from=cta_share_html_file_with_client)   install npx stacktree-install
Copy
         stacktr.ee  [Page video](/page-video) [Ask this page](/ask-this-page) [Client feedback](/client-feedback-loop) [Client spaces](/client-spaces) [Templates](/templates) [Use cases](/use-cases) [Integrations](/agents) [Alternatives](/alternatives) [About](/about) [Blog](/blog) [Changelog](/changelog) [Pricing](/pricing) [Security](/security) [FAQ](/faq) [Made with Stacktree](/made-with)  Building with AI agents? See the [developer docs &rarr;](/developers)     [Send your first link free](https://app.stacktr.ee/?join=1&from=sticky_share_html_file_with_client) No card · 3 pages free

---
Full markdown summary of the Stacktree marketing surface: https://stacktr.ee/llms-full.txt
