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.
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, notclaude.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
- 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.
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. |
Frequent questions
How do I share a Claude artifact privately? +
Can you password-protect a Claude artifact? +
Do published Claude artifacts get indexed by Google? +
Can Claude artifacts expire? +
How do I make a shared Claude artifact private again? +
Why not just use Claude's built-in publish button? +
Can I keep the same URL when Claude revises the artifact? +
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? +
Does the viewer need a Stacktree account? +
Are Claude artifacts safe to host publicly? +
Related guides
- 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: Publishing and sharing artifacts ↗ Official source for how Claude's built-in publish, unpublish, and indexing behavior works.
- 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 →