Share Claude artifacts on your own private URL.
Claude's Publish button covers one case: a public link on claude.ai. Anthropic's own help doc defines the edges: no password, no expiry, no custom domain, unpublishing is permanent, and Team and Enterprise artifacts cannot be published publicly at all. Stacktree hosts the same HTML with all of those filled in.
To share a Claude artifact privately, export its HTML and publish it to a private-by-default host such as Stacktree, which returns an unguessable link you can gate with a password or an email-domain check. Claude's own Publish button creates a public link only: per Anthropic's help center, anyone with the link can view it, there is no password or expiry option, and once you unpublish an artifact you cannot publish that same artifact again. A dedicated host adds the gates, the expiry, and your own domain.
Paste the artifact's HTML and get a private link. Nothing to install.
How do you share a Claude artifact privately?
Use Stacktree. Either copy the artifact HTML out of Claude and upload it via the dashboard, or have Claude Code call publish_html directly through the MCP server. Stacktree returns an unguessable URL on its own domain (or yours, on Pro), and the viewer doesn't need a Claude account, or a Stacktree account, to open it.
How to share Claude artifacts privately
The short version: don't rely on Claude's Publish button if the link needs to stay private.
Export the artifact's HTML, publish it to a private-by-default host, and send the unguessable
link. With Stacktree that is one step in the dashboard, one curl, or one
publish_html call from Claude Code. The viewer opens it with no Claude account and
no Stacktree account, and you can layer a password, an email-domain gate, or an expiry on top.
Why move artifacts off Claude.ai
Claude's built-in publish flow is genuinely good at its one job: a public link anyone can open, no account needed. The gaps are everything around that link, and Anthropic's own help doc is candid about them. You outgrow the Publish button the moment one of these is true:
- The page must not be public. Publish has one mode, and per Anthropic "anyone with the link can view and interact with it."
- You want a password or a company email gate in front of it.
- You want the URL on
yourco.com, notclaude.ai. - You need it to expire after the engagement, or burn after one view.
- You might want to take it down and put it back later: unpublishing on claude.ai is permanent, and the same artifact can never be published again.
- You are on a Team or Enterprise plan, where artifacts "cannot be published publicly" at all: they stay inside the org, behind org authentication.
The 30-second workflow
- Open the artifact in Claude. Click the menu → "Copy HTML" (or have Claude Code write it to disk).
- Paste into the Stacktree dashboard, or
curl -F file=@artifact.html https://api.stacktr.ee/sites. With Claude Code:publish_html({ file: "artifact.html" }). - Stacktree returns
stacktr.ee/p/<token>. Send it. - Optional: set a password, an email-domain gate, or an expiry.
Can I put a Claude artifact on my own domain?
No, not through Claude: published artifacts live on claude.ai, and the only domain control in
Anthropic's help doc is an allowlist of sites permitted to embed the artifact. If the page is a
deliverable, the domain is part of the deliverable, and claude.ai/artifacts/...
says "generated in a chat" where report.yourco.com says "this is our work."
Stacktree serves the same HTML on a custom domain: add a CNAME
and a TXT verification record, SSL is provisioned automatically, and the domain can be
re-pointed at any of your sites as projects change. Pro includes five domains. Revisions still
land in place: the agent calls update_site and the URL you sent keeps showing the
latest version, which is also true of Claude's published links; the domain and the gates are
what the claude.ai link cannot carry.
What about sensitive artifacts?
Agent-generated HTML often embeds real data: API responses, customer rows, prompt context. Stacktree treats this as the default case, not an edge case:
- Unguessable URL. The token is the credential. No directory listing, no search indexing, no robots crawl.
- Optional shared password. A second factor on top of the unguessable URL.
- Email-domain gate. Magic-link verification against
@yourco.com(or any domain). - End-to-end encryption. AES-GCM in the browser; the key lives in the URL fragment; Stacktree only sees ciphertext.
- CSP defaults. Sensible Content-Security-Policy so a careless
<script src>can't exfiltrate session data.
Do published Claude artifacts get indexed by Google?
They can be. Claude's Publish creates a public claude.ai link with no password, and any public URL can end up in a search index once it is posted or linked somewhere crawlable. Anthropic's help doc offers no visibility setting beyond unpublishing, and unpublishing is a one-way door. A Stacktree link is the opposite: the token is unguessable, there is no directory or listing, and the host serves the headers needed to keep crawlers out, so a private artifact stays out of the index.
Can I password protect a Claude artifact?
Not with Claude's built-in Publish, which offers no password and no access list. Publishing
through Stacktree instead lets you toggle a shared password per link, or require viewers to
verify a @yourco.com email via magic link before the artifact renders. Either gate
sits on top of the already-unguessable URL, and the viewer still needs no Claude or Stacktree
account.
Do Claude artifacts expire?
No. Published artifact links stay up on claude.ai until you unpublish them, and there is no
expiry setting to change that. The one removal mechanism is manual and permanent: per
Anthropic's help doc, once you unpublish an artifact you cannot publish that same artifact
again, and if the artifact used persistent storage, unpublishing deletes that data too. A
Stacktree link supports a real expiry from minutes to years, burn-after-read for one-time
viewing, and delete_site to revoke the URL the moment you are done, with nothing
stopping you from publishing again later.
How to make a shared Claude artifact private again
On Claude.ai you make a shared artifact private by unpublishing it, and you should treat that
as final: the same artifact cannot be published again afterwards. There is no way to pause a
link and restore it. If you publish through Stacktree instead, you keep direct control in both
directions: call delete_site(slug) to revoke the link now, republish whenever you
like, or set an expiry up front so it goes private on its own.
Claude's built-in publishing vs. Stacktree
| Criterion | Claude built-in publish | Stacktree |
|---|---|---|
| Works inside Claude app | Yes, primary use case. | Via MCP: one-click connector on claude.ai, or from Claude Code. |
| Public link, no viewer account | Yes, on Free, Pro, and Max. | Optional; private is the default. |
| Stable URL across revisions | Yes, published links update in place. | Yes, update_site keeps the URL. |
| Private or gated link | No. Public is the only mode. | Private by default; password or email-domain gate on top. |
| Custom domain | No, claude.ai only. | Yes: CNAME plus TXT verify, auto SSL. Pro includes 5. |
| Expiry control | No expiry option. | Expiry scheduling and burn-after-read, free. |
| Take it down, put it back | Unpublish is permanent; the same artifact can never be republished. | Delete and republish freely. |
| Team / Enterprise external sharing | Not available; org-only, org sign-in required. | Any plan, no seats involved. |
| E2E encryption | No. | Yes, AES-GCM client-side, free. |
Frequent questions
Do Claude artifacts expire? +
Can I password protect a Claude artifact? +
Can I put a Claude artifact on my own domain? +
Can I publish a Claude artifact privately instead of publicly? +
What happens when I unpublish a Claude artifact? +
How do I share a Claude artifact with a client without a login? +
Why can't I publish my Claude artifact on a Team or Enterprise plan? +
How do I share large HTML files from Claude? +
How do I share a Claude artifact privately? +
Do published Claude artifacts get indexed by Google? +
Why not just use Claude's built-in publish button? +
Can I keep the same URL when Claude revises the artifact? +
update_site replaces the content behind the same link, so a bookmark stays valid across every revision. Claude's published links also update in place, so this is parity, not a difference; the difference is what else the URL carries, such as the gate, the expiry, and your own domain.What about images and inline assets? +
Does the viewer need a Stacktree account? +
Are Claude artifacts safe to host publicly? +
Related guides
- See how it lands Reactions, opens, and an attention heatmap on the artifact you share.
- Share Claude Designs The same gap in Claude Design (beta): workspace or public artifact, nothing between.
- Private HTML hosting What makes a host actually private: unguessable URLs, gates, no public index.
- Publish from Claude Code Skip the copy/paste; agent publishes directly.
- The MCP publish tool Every verb the server exposes, end to end.
- Agent-loop hosting Why same-URL-replace is the right contract.
- Tiiny Host alternative How agent-shaped publishing differs from human-shaped.
- Stacktree Skills Drop-in skills that teach Claude to publish and gate artifacts.
- Pricing Free first publish, then password, expiry, and custom-domain options.
Sources and further reading
- Anthropic: Claude artifacts ↗ Anthropic's announcement of the built-in artifact feature this page contrasts with.
- Claude Help Center: Publish and share artifacts ↗ The official source this page quotes: public links, permanent unpublishing, and the Team/Enterprise org-only restriction.
- Anthropic: Claude Code overview ↗ The CLI that lets Claude write artifacts directly to disk for Stacktree to publish.
- MDN: Content-Security-Policy ↗ The header Stacktree applies to sandboxed artifact rendering.
- OWASP: secure HTML upload guidance ↗ Defensive baseline for any host accepting user-generated HTML.
Get your Claude artifact off claude.ai.
Free first publish. No Claude account needed to view.
Sign up free →