stacktr.ee
By · Founder, Stacktree Last updated
use case

Share Claude artifacts on your own private URL.

New Claude artifacts stay private until you share them. Sharing then gives you two options: a public link with no password, or a link only signed-in Claude users can open. Neither carries an expiry, your own domain, or a record of who read it. Stacktree hosts the same HTML with all of those.

Get started free Start with Solo, $19

Paste into claude.ai → Settings → Connectors · CLI users: npx stacktree-install

New Claude artifacts stay private to you until you share them. Sharing then means a public link anyone can open (Claude Code), or a link that asks every viewer to sign in to Claude (claude.ai), and neither has a password or expiry. To send one to a client privately, publish its HTML to a private-by-default host such as Stacktree: an unguessable link, an optional passcode or email check, and no account for the viewer.

Paste the artifact's HTML and get a private link. Nothing to install.

How do you share a Claude artifact privately?

Use Stacktree. The quickest route is the Claude.ai connector: paste https://api.stacktr.ee/mcp into Settings → Connectors and Claude publishes the artifact itself, straight from the chat. Stacktree returns an unguessable URL on its own domain (or yours, on the paid plans), 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: if the viewer does not use Claude, Claude's own sharing leaves you a public link with no lock. 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.

What each way of sharing a Claude artifact does

Claude changed how artifacts are shared in September 2026. As of October, these are the options, per Anthropic's help center and the Claude Code docs:

Option Who can open it Viewer needs a Claude account Password, expiry, who opened it
Not shared yet Only you Yes (yours) Not applicable
Claude Code, shared publicly Anyone with the link No None. Public viewers cannot comment.
claude.ai, "Anyone with the link" Anyone with the link who signs in. Not for artifacts that use connected apps or ask Claude questions. Yes None
claude.ai, invite by email (beta) Up to 50 named people outside your organization Yes, on the invited address Unaccepted invites lapse after 30 days. No password or open record.
Team or Enterprise Your organization, plus outsiders only if an Owner allows it Yes Org audit log only
Older chat artifact, Publish Anyone with the link No None. Unpublishing is permanent.
Stacktree Anyone you send it to No Passcode or email check, expiry, and who opened it and for how long

So the question to ask is who the viewer is. If they have Claude, Claude's own sharing works. If they are a client without it, the built-in choice is a public link with no lock. The permission prompt Claude Code shows the first time is covered in what "new artifacts stay private until you share them" means. The same rules for ChatGPT, Gemini and Copilot are side by side on who can open what your AI made.

Questions people search mid-publish

Three questions that tend to get googled while Claude's own publish dialog is still open, answered plainly.

Why is Claude telling me to upload a file to claude.ai?

Because you asked it to publish or share the artifact. The dialog wording, publishing "uploads the file below from this task to claude.ai", is a permission step: the page Claude built exists only inside your task, and uploading the HTML to claude.ai is how it becomes a link. Nothing is uploaded until you approve, and the new page stays visible only to you until you share it; on Pro and Max, sharing means a public link anyone can open, or an email invite to someone with a Claude account. If that file should not sit on a public link, publish it to Stacktree instead: Claude uploads the same HTML to a private, unguessable URL, with a passcode on top if you want one.

The private route is one connector away: on claude.ai, open Settings → Connectors → Add custom connector and paste https://api.stacktr.ee/mcp. From then on, "publish this to Stacktree" in any chat returns a private link. In Claude Code, npx stacktree-install wires up the same publish_html tool.

Are Claude artifacts public?

Not until you share them. A new artifact is visible only to you. What sharing does next depends on where you share it: a Claude Code public link opens for anyone, with no sign-in; on claude.ai, "Anyone with the link" and email invites both ask the viewer to sign in to Claude. Older chat artifacts that were published are public to anyone with the link. None of these carry a password or an expiry. If the page needs to stay restricted after it is shared, publish the same HTML through Stacktree, where the link is unguessable by default and can require a passcode or a verified company email address before it renders.

The distinction that matters is public-by-link versus gated. A claude.ai link is not listed anywhere, but it is a bearer credential with no lock: whoever holds it gets in, and it can be forwarded without you knowing. A gate turns "hopefully only the client has this" into "only the client can open this".

Is there a list of public Claude artifacts?

No. Published Claude artifacts are not collected in any public directory, and there is no browsable index at claude.ai/public/artifacts; the artifacts space on claude.ai shows your own work, not everyone's published pages. A published artifact is unlisted, reachable only by its exact URL. Unlisted is not the same as private, though: the link can be reshared freely, which is the gap Stacktree closes with passcodes and email-domain gates on top of an unguessable URL.

Why move artifacts off Claude.ai

Claude's built-in sharing is good at two jobs: a page for people who already use Claude, and a public link anyone can open. The gaps are everything in between, and Anthropic's own docs are candid about them. You outgrow it the moment one of these is true:

  • The viewer is a client without Claude, and the page must not be public. The only no-account option is a public link with no lock.
  • You want a password or a company email gate in front of it.
  • You want the URL on yourco.com, not claude.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 an Owner has not turned on external sharing, so the artifact cannot leave the organization.
  • You want to know whether the client opened it, and how closely they read it.

The 30-second workflow

  1. Once: on claude.ai, open Settings → Connectors → Add custom connector and paste https://api.stacktr.ee/mcp.
  2. In the chat with the artifact, ask Claude to publish it to Stacktree. Claude uploads the HTML itself with publish_html.
  3. Claude replies with stacktr.ee/p/<token>. Send it.
  4. Optional: set a password, an email-domain gate, or an expiry.

No connector? Click the artifact menu → "Copy HTML" and paste into the Stacktree dashboard, or curl -F file=@artifact.html https://api.stacktr.ee/sites. In Claude Code, run npx stacktree-install once and publish_html({ file: "artifact.html" }) works there too.

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. Solo includes one domain, Studio ten. 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 in Claude. The Share menu offers a Claude sign-in or a public link, and no password. 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. A shared artifact link has no expiry setting; it keeps working until you change who it is shared with. Email invitations lapse after 30 days only if nobody accepts them. Older published chat artifacts stay up until you unpublish them, and that is permanent: per Anthropic's help center you cannot publish that same artifact again, and any storage data it used is deleted. 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

For a newer artifact, open the Share menu and narrow the audience back to just you. For an older published chat artifact, unpublishing is the only way, and it is final: the same artifact cannot be published again afterwards. 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.
Open with no viewer account Only as a fully public link (Claude Code, or an older published chat artifact). Yes, private by default.
Stable URL across revisions Yes, published links update in place. Yes, update_site keeps the URL.
Private or gated link Private means every viewer signs in to Claude. No password. Private by default; passcode or email gate on top, no account.
Who opened it, and how closely No. Named links, opens, and reading time.
Custom domain No, claude.ai only. Yes: CNAME plus TXT verify, auto SSL. 1 on Solo, 10 on Studio.
Expiry control No expiry option. Expiry scheduling and burn-after-read on every plan.
Take it down, put it back Change the audience; an older published artifact cannot be republished. Delete and republish freely.
Team / Enterprise external sharing Only if an Owner turns on external sharing. Any plan, no seats involved.
E2E encryption No. Yes, AES-GCM client-side, free.
FAQ

Frequent questions

What does "Publish artifact" mean in Claude? +
It means turning a page Claude built into a link on claude.ai. In Claude Code the new artifact stays private to you until you share it from the page header. Sharing publicly then gives a link anyone can open with no sign-in, but no password, expiry, or record of who opened it.
Can a client open a Claude artifact without a Claude account? +
Only through a public link: a Claude Code artifact shared publicly, or an older published chat artifact. On claude.ai, both "Anyone with the link" and email invites ask the viewer to sign in to Claude. To give a client a private page with no Claude account, publish the HTML to Stacktree.
Why is Claude telling me to upload a file to claude.ai? +
Because Claude Code is asking permission to turn the page it built into an artifact on claude.ai. Nothing uploads until you approve, and the new artifact stays private to you until you share it. Sharing it publicly then makes a link anyone can open, with no password. To send it privately instead, ask Claude to publish to Stacktree.
Do Claude artifacts expire? +
No. A shared Claude artifact link has no expiry setting; it works until you change who it is shared with. Email invitations expire after 30 days only if nobody accepts them. Older published chat artifacts stay up until you unpublish, which is permanent. Hosting the HTML on Stacktree adds a real timer: an expiry date, burn-after-read, or delete whenever you choose.
Can I password protect a Claude artifact? +
No. Neither the claude.ai Share menu nor a Claude Code public link offers a password. Your choices there are a Claude sign-in for every viewer or a public link. Publish the artifact's HTML through Stacktree instead and you can set a passcode, or require a verified company email address, before the page loads. The viewer still needs no account.
Can I put a Claude artifact on my own domain? +
No. Published artifacts live on claude.ai, and the only domain setting in Anthropic's help center is which sites are allowed to embed the artifact. Publish the same HTML to Stacktree and you can serve it on a domain you own: add a CNAME and a TXT record, SSL is automatic, and the domain can be re-pointed at any of your sites. Solo includes one domain, Studio ten.
Are Claude artifacts public? +
Not at first. New artifacts stay private to you until you share them. A Claude Code public link then opens for anyone, with no sign-in. On claude.ai, "Anyone with the link" still asks viewers to sign in to Claude, and email invites need a Claude account at that exact address. Older published chat artifacts are fully public.
Is there a list of public Claude artifacts? +
No. Published Claude artifacts are not collected in any public directory, and there is no browsable index at claude.ai/public/artifacts; the artifacts space on claude.ai shows only your own work. A published link is unlisted, reachable only by its exact URL, but it is not gated: anyone who obtains it can open it and pass it on. Hosting the artifact on Stacktree keeps it unlisted and adds a real gate, a passcode or an email-domain check, on top of an unguessable URL.
Can I publish a Claude artifact privately instead of publicly? +
Yes, if everyone who needs it has Claude. Invite them by email (beta, up to 50 people outside your organization) or share inside your Team or Enterprise organization. If the viewer has no Claude account, the only built-in option is a public link with no password. Stacktree covers that case: private link, optional passcode or email gate, no account needed.
What happens when I unpublish a Claude artifact? +
For an older published chat artifact it is permanent. Per Anthropic, you cannot publish that same artifact again, and unpublishing also deletes any storage data it used. Newer artifacts use the Share menu instead, where you change the audience rather than unpublish. A Stacktree link is reversible either way: delete it, republish later, or set an expiry.
How do I share a Claude artifact with a client without a login? +
Publish the artifact's HTML to Stacktree and send the link. The client opens it with no account of any kind, and you can add a passcode or an @yourclient.com email check. Claude has one login-free option, a Claude Code public link, but it cannot be gated, expired, or tracked, and public viewers cannot comment on it.
Why can't I publish my Claude artifact on a Team or Enterprise plan? +
Because sharing outside the organization is an admin setting. On Team and Enterprise, public links stay off until an Owner turns on external sharing, and email invitations to outside people are off by default on Enterprise. If the setting is off, export the artifact's HTML and publish it to Stacktree, where the client opens it with no Claude account.
How do I share large HTML files from Claude? +
"How do I share large HTML files" is one of the most common questions in r/ClaudeAI, because the obvious routes fail: pasting into chat mangles the markup, attaching the file makes recipients download-and-open it, and public sharing on claude.ai can refuse an artifact that is too large to share. Publish the file instead: drag it onto the Stacktree dashboard, POST it to the API, or let Claude publish it over MCP in one tool call. You get a live private link that renders in the browser like any other page.
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.
Do published Claude artifacts get indexed by Google? +
They can be. A published artifact is a public, password-less claude.ai page, and any public URL can end up indexed once it is posted or linked somewhere crawlable. Anthropic's help center offers no visibility control beyond unpublishing, which is permanent. A Stacktree link is unguessable, appears in no listing, and is served with crawler-blocking headers, so a private artifact stays out of the index.
Why not just use Claude's built-in sharing? +
For teammates who use Claude, or a public demo, it is genuinely fine: one click and a stable link. You outgrow it when the viewer is a client without Claude and the page must not be public, when it needs a passcode or an expiry, when it should carry your domain, or when you want to know who read it.
Can I keep the same URL when Claude revises the artifact? +
Yes. 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? +
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.

Paste one URL into claude.ai's Settings → Connectors and Claude hands you private links from any chat; npx stacktree-install does the same for Claude Code. Free first publish; permanent, gated pages from $19 a month.

Sign up free →