By · Founder, Stacktree · Last updated
use case

Share Claude artifacts on your own private URL.

Claude's built-in publishing puts your artifact behind a Claude.ai URL with Claude branding. Stacktree gives you a private link on your own domain, with password and email gates, replace-in-place, and no Claude account required to open it.

Get started free

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 that anyone can open without a Claude account. Claude's own Publish button only creates a public, password-less claude.ai link that never expires and may be indexed by search engines, whereas a dedicated host adds password gates, email-domain gates, and real expiry that Claude's built-in publishing does not offer.

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 brilliant for casual sharing inside the Claude ecosystem. But the moment one of these is true, you outgrow it:

  • The viewer doesn't (and won't) have a Claude account.
  • You want the URL on yourco.com, not claude.ai.
  • You need a real expiry, short or long, not the default behaviour.
  • You want to lock the artifact behind a password or company email gate.
  • Your agent iterates on the artifact and you need the URL to stay stable.
  • The artifact contains internal data and "viewable by anyone with the link plus a Claude account" doesn't feel like enough.

The 30-second workflow

  1. Open the artifact in Claude. Click the menu → "Copy HTML" (or have Claude Code write it to disk).
  2. Paste into the Stacktree dashboard, or curl -F file=@artifact.html https://api.stacktr.ee/sites. With Claude Code: publish_html({ file: "artifact.html" }).
  3. Stacktree returns stacktr.ee/p/<token>. Send it.
  4. Optional: set a password, an email-domain gate, or an expiry.

The bigger upgrade: replace-in-place

Claude's built-in artifact viewer shows whatever's in the current Claude conversation. Stacktree URLs are independent: they point to the content the agent last published. The implication: when Claude (or Claude Code) revises the artifact, it can call update_site with the same slug, and the URL you sent yesterday now shows today's version. Same bookmark, new content. No "see V3" follow-up.

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. Claude's Publish feature creates a public claude.ai link with no password, and Anthropic's own help docs note that published artifacts may be indexed by search engines. Anthropic says it blocks crawlers and serves no sitemap for shared content, but pages have still surfaced in Google when share links were posted publicly. 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 you 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.

Can Claude artifacts expire?

Published artifact links never expire on Claude.ai and can't be set to. You can unpublish a version manually, but you cannot republish that same artifact afterward, and you cannot put a timer on it. A Stacktree link supports a real expiry from minutes to years, and delete_site burns the URL immediately when you are done.

How to make a shared Claude artifact private again

On Claude.ai you make a shared artifact private by reopening the conversation and choosing Unpublish, or by deleting the chat, which unpublishes every artifact it produced. Note that once unpublished, that exact artifact version cannot be published again. If you publish through Stacktree instead, you keep direct control: call delete_site(slug) to revoke the link now, 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 from Claude Code.
Viewer needs Claude account Usually yes. No.
Custom domain No, claude.ai only. Pro plan, Cloudflare for SaaS.
Password gate No. Yes, toggle per link.
Email-domain gate No. Yes, magic-link verified.
Stable URL across revisions Tied to the conversation. Yes, update_site keeps the URL.
E2E encryption No. Yes, AES-GCM client-side.
Expiry control No, never expires, can't be set to. Minutes to years.
FAQ

Frequent questions

How do I share a Claude artifact privately? +
Copy the artifact's HTML out of Claude (or have Claude Code write it directly to a file) and upload it to Stacktree. The dashboard, the API, or the MCP server all work. You get an unguessable URL that you can optionally lock by password or @company.com email domain. The viewer needs no Claude account and no Stacktree account to open it.
Can you password-protect a Claude artifact? +
Not with Claude's built-in Publish, which has no password option. Publish the artifact through Stacktree and you can toggle a shared password per link, or require viewers to verify a company email domain by magic link before the artifact loads. The gate sits on top of the unguessable URL.
Do published Claude artifacts get indexed by Google? +
They can. Claude's Publish feature makes a public, password-less claude.ai link, and Anthropic's help docs note that published artifacts may be indexed by search engines. Anthropic blocks crawlers and serves no sitemap, but pages have still appeared in Google when share links were posted publicly. A Stacktree link is unguessable with no listing and crawler-blocking headers, so a private artifact stays out of the index.
Can Claude artifacts expire? +
Published artifact links on Claude.ai never expire and can't be set to. You can unpublish a version manually, but you cannot republish that same artifact afterward. Publish through Stacktree and you get a real expiry from minutes to years, plus delete_site to burn the URL on demand.
How do I make a shared Claude artifact private again? +
On Claude.ai, reopen the conversation and choose Unpublish, or delete the chat to unpublish every artifact it produced. Once unpublished, that exact version can't be published again. If you published through Stacktree, call delete_site(slug) to revoke the link immediately, or set an expiry so it goes private on its own.
Why not just use Claude's built-in publish button? +
It's great if you're inside the Claude app, your viewer has a Claude account, and you're OK with the Claude.ai branding and URL. Stacktree is for the other cases: viewers without Claude accounts, your own custom domain, longer/shorter expiries, password gating, and replace-in-place URLs across agent iterations.
Can I keep the same URL when Claude revises the artifact? +
Yes. That's what update_site is for. Bookmark the URL once, your agent updates the content on every revision, the bookmark stays valid.
What about images and inline assets? +
Inline (base64, data URIs) works out of the box. For sites with external assets, upload as a zip and Stacktree serves the bundle.
Does the viewer need a Stacktree account? +
No. The URL is the credential by default. If you add a password or email-domain gate, the viewer authenticates against that, and they never need a Stacktree account.
Are Claude artifacts safe to host publicly? +
Not by default. They often embed prompt context, API responses, or test data. Stacktree's private-by-default URL plus optional CSP defaults are designed for this risk surface.
Keep reading

Related guides

References

Sources and further reading

Get your Claude artifact off claude.ai.

Free first publish. No Claude account needed to view.

Sign up free →