# Move a Claude artifact to a private link that will not expire · Stacktree

Source: https://stacktr.ee/workflows/rescue-claude-artifact

[Skip to content](#main) [Stacktree](/)[Developers](/developers)[Agents](/agents)[Docs](/docs)[Use cases](/use-cases)[Pricing](/pricing)[Blog](/blog)[Dashboard](https://app.stacktr.ee)[Sign in →](https://app.stacktr.ee)      By [ Steve Smith ](/about) · Founder, Stacktree  ·  Last updated August 30, 2026          workflow

#  Move a Claude artifact to a private link that will not expire.

   The artifact is good enough to keep, which is exactly when its public claude.ai URL stops being good enough. Move the HTML to a page you control: unguessable, never indexed, behind a passcode or your own domain, updated in place when you revise it. On paid plans it stays until you delete it.

  [ Get started free ](https://app.stacktr.ee/?join=1&from=seo_workflows_rescue_claude_artifact)   install npx stacktree-install
Copy
     No card · 3 pages free · about a minute

##  How do you move a Claude artifact to a private link?

Copy the artifact's HTML out of Claude, publish it to Stacktree, and send that link instead. The URL is unguessable, never indexed, and can sit behind a passcode or your own domain. On Solo and up the page stays until you delete it; the free plan gives 7 days.

## What is wrong with the artifact link

 Nothing, if the audience is the internet. Claude's publish button mints a public URL built for sharing onward, and Anthropic's own help notes it can be indexed by search engines. The problems start when the artifact is client work:

  - It is public. Anyone with the link, and potentially anyone searching, can open it. There is no passcode, no email gate, no way to scope it to one client.
 - Unpublish is forever. Taking an artifact down kills that URL permanently; republishing mints a different link, so every place you pasted the old one now 404s.
 - It is Claude's address, not yours. No custom domain, no your-branding, and on Team and Enterprise plans sharing is scoped to your org, so an outside client cannot open it at all.
  The rescue is mechanical: the artifact is already HTML, and HTML is the one thing a private host can take as-is. Here is [a live rescued artifact](https://stacktr.ee/p/6g1GT1wadgcjJk2VBkx6ZP/), an implementation plan of exactly the kind Claude produces, served as a private Stacktree page.

## Typical flow

  - In Claude, open the artifact and download it (or copy the HTML). Skip this step entirely if Claude has the Stacktree connector: just say "publish this artifact to Stacktree with a passcode".
 - Publish the file: drag it onto [app.stacktr.ee](https://app.stacktr.ee), let Claude call publish_html, or curl it (below). Back comes an unguessable URL that is never listed and opted out of crawlers.
 - Gate it to fit the audience: a passcode on any plan, the client's email domain from Solo, or nothing extra if the unguessable link is enough.
 - Send the new link, and retire the public one if the artifact was already published.
 - Next revision: update the same page with update_site. The URL you sent keeps working, which the claude.ai link cannot promise across an unpublish.

## What ports cleanly, and what does not

 Worth saying plainly: an artifact that is self-contained HTML, which is most of them, renders identically on Stacktree, interactivity included. An artifact that calls Claude's runtime from inside the page, using `window.claude` to prompt the model or Claude's artifact storage to persist data, depends on claude.ai and will not run anywhere else. If yours is one of those, ask Claude to export a static version with the data inlined, then publish that.

## Run it now

### 1. Paste one line into Claude (or any agent)

```
`Fetch and follow https://stacktr.ee/prompt.md, then publish this artifact as a private link with a passcode.`
```

 Works in any agent that can fetch a URL. [The instructions](/prompt.md) are plain Markdown you can read first.

### 2. Install once

```
`npx stacktree-install`
```

 Configures Claude Code, Cursor, Codex CLI, OpenCode, or Amp. On Claude.ai, add the connector URL `https://api.stacktr.ee/mcp`; [one-click setup](/claude-ai-connector).

### 3. No signup: curl the downloaded file

```
`curl -X POST https://api.stacktr.ee/sites -F file=@artifact.html`
```

 Publishes anonymously: a private URL that lives 24 hours, no account and no key. The response includes a claim token, so if the rescue sticks you can adopt the page and keep it for good.

FAQ

## Frequent questions

     Are published Claude artifact links public? +  Yes. Publishing an artifact mints a link designed to be shared onward, and Anthropic's help pages note it can be indexed by search engines. Unpublishing is also permanent for that version: the link dies for everyone and republishing mints a different URL. A Stacktree page is the opposite on both counts: unguessable, never indexed, and updatable in place under the same URL.   Will the page really never expire? +  On Solo and up, yes: pages stay until you delete them. Being honest about the lower rungs: an anonymous publish lives 24 hours, and free-account pages live 7 days each, 3 pages in total. If the artifact matters enough to rescue, permanence is $19 a month, or a one-time $5 over x402 if an agent is paying per page.   Does the artifact stay interactive after the move? +  A self-contained artifact (HTML, inline styles and script, a React build compiled to static assets) renders exactly as it did. What does not carry over is anything that calls Claude's own runtime: an artifact using window.claude to prompt the model, or Claude's artifact storage, depends on claude.ai and will not run elsewhere. Most artifacts worth sending to a client are the self-contained kind.   Can Claude do the whole move itself? +  Yes. Add the Stacktree connector at api.stacktr.ee/mcp and say "publish this artifact to Stacktree with a passcode". Claude calls publish_html and returns the private link in the same conversation, and later revisions go to the same URL with update_site.
Keep reading

## Related guides

   -  [ Make a Claude artifact private What the public artifact link exposes, in detail. ](/make-claude-artifact-private)
-  [ Share Claude artifacts The wider sharing story: passwords, domains, expiry. ](/share-claude-artifacts)
-  [ Artifact unpublished and cannot be republished? Why the claude.ai link dies for good, and the fix. ](/blog/claude-artifact-cannot-republish)
-  [ The Claude.ai connector One-click setup that lets Claude do the whole move itself. ](/claude-ai-connector)
-  [ Example deliverables Live pages showing what rescued work looks like to a client. ](/examples)
-  [ All workflows The other three recipes. ](/workflows)

References

## Sources and further reading

   -  [ Anthropic, Publishing and sharing artifacts ↗ Anthropic's help article confirming the public link and the search-indexing note. ](https://support.claude.com/en/articles/9547008-publishing-and-sharing-artifacts)
-  [ Anthropic, What are artifacts ↗ Background on what an artifact is and how publishing works. ](https://support.claude.com/en/articles/9487310-what-are-artifacts-and-how-do-i-use-them)
-  [ X-Robots-Tag (Google Search Central) ↗ The header Stacktree sets to opt every published page out of search and AI crawls. ](https://developers.google.com/search/docs/crawling-indexing/robots-meta-tag)

##  Keep the artifact. Lose the public URL.

 Publish it anonymously right now, no account, and claim it if it should live longer than 24 hours.

 [ Sign up free → ](https://app.stacktr.ee/?join=1&from=cta_workflows_rescue_claude_artifact)   install npx stacktree-install
Copy
       Private hosting for the HTML your agents make.

[](https://betalist.com/startups/stacktree?utm_campaign=badge-stacktree&utm_medium=badge&utm_source=badge-featured)[Featured on](https://devhunt.org/tool/stacktree)[](https://buildlist.io)[Get started free](https://app.stacktr.ee/?join=1)

## Product

- [Templates](/templates)
- [Example deliverables](/examples)
- [Custom domains](/custom-domains)
- [Client feedback](/client-feedback-loop)
- [One-time links](/one-time-view-links)
- [See how pages get read](/page-engagement)
- [Made with Stacktree](/made-with)
- [Security](/security)
- [Watch the demo](/demo)

## Agents

- [All integrations](/agents)
- [Claude Code](/claude-code)
- [OpenAI Codex](/codex)
- [Cursor](/cursor)
- [Claude.ai connector](/claude-ai-connector)
- [MCP server](/mcp-publish-html)
- [Deploy from Claude Code](/deploy-html-from-claude-code)
- [Skills](/skills)
- [Slack app](/slack)
- [n8n node](/n8n)
- [Agent payments (x402)](/x402)

## Alternatives

- [All comparisons](/alternatives)
- [Head-to-head comparisons](/compare)
- [Tiiny Host](/tiiny-host-alternative)
- [GitHub Pages (private)](/github-pages-private-alternative)
- [Vercel](/vercel-alternative-for-agents)
- [ngrok](/ngrok-alternative-for-html)
- [Display.dev](/display-dev-alternative)
- [Static.app](/static-app-alternative)
- [OpenAI Codex Sites](/openai-codex-sites-alternative)
- [here.now](/here-now-alternative)
- [Shippage](/shippage-ai-alternative)
- [Best private hosting](/best-private-html-hosting)

## Use cases

- [All use cases](/use-cases)
- [Share with clients](/share-with-clients)
- [Send a file to a client](/share-html-file-with-client)
- [Share Claude artifacts](/share-claude-artifacts)
- [Share Jupyter notebooks](/share-jupyter-notebook-html)
- [Host Storybook privately](/host-storybook-privately)
- [Architecture diagrams](/share-architecture-diagrams)
- [AI-generated reports](/host-ai-reports)
- [Internal HTML tools](/internal-tool-hosting)
- [Private HTML hosting](/private-html-hosting)
- [Vibe-coded page hosting](/vibe-coding-hosting)
- [Leave a website builder](/website-builder-migration)

## Learn

- [Blog](/blog)
- [Glossary](/glossary)
- [FAQ](/faq)
- [Agent-loop hosting](/agent-loop-hosting)
- [Why agents need a publish primitive](/blog/why-agents-need-a-publish-primitive)
- [MCP servers explained](/blog/mcp-servers-explained-for-developers)
- [What changed in the 2026-07 MCP spec](/blog/mcp-2026-spec-changes)
- [Sites in Codex explained](/blog/sites-in-codex-explained)
- [Private-by-default hosting](/blog/private-by-default-html-hosting)
- [An agent paid us $1 (x402)](/blog/agent-paid-to-provision-itself)
- [When a loop hits a paywall](/blog/loop-engineering-paywall)
- [Pricing](/pricing)
- [Self-host (new)](/self-host)
- [Changelog](/changelog)
- [Docs](https://stacktr.ee/docs)
- [About](/about)
© 2026 Stacktree · stacktr.ee

[Privacy](/privacy)[Terms](/terms)[Security](/security)[Dashboard](https://app.stacktr.ee)[npm](https://www.npmjs.com/package/stacktree-mcp)[Sitemap](/sitemap.xml)[llms.txt](/llms.txt)[API spec](/openapi.json)

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