Guide

How to host a Claude artifact as a web page

Updated 30 October 2026

First get the artifact out of Claude as an HTML file. Then pick the host by who should open it: a static host such as Netlify Drop, GitHub Pages or Cloudflare Pages for a public page on your own domain, or ashare.net when only your company, specific emails or holders of a password should get in. ashare has no custom domains: if you need docs.yourcompany.com, use a static host.

Get the HTML out of Claude

React. Static hosts and ashare serve files; they don’t build code. If what you have is a React component rather than a page, ask Claude to turn it into one self-contained HTML file:

Prompt
Turn this artifact into a single self-contained index.html that loads React from a CDN, with all CSS and data inline, so it runs when opened from any web server.

Or build it with your bundler and upload the output folder. Parts of an artifact that call Claude, your connectors or the artifact’s storage depend on claude.ai and stop working on any other host.

The options

OptionWho can open itYour own domainBest for
Claude’s own linkA published chat artifact: anyone with the link. Others: people with a Claude account, per your sharing settingsNo, it stays on claude.aiShowing an artifact without moving it
Netlify DropAnyone with the link; a site-wide password on Netlify’s Pro plansYesA quick public page, no account needed to start
GitHub PagesAnyone; private publishing only on GitHub Enterprise Cloud, for people with read access to the repositoryYesA page that lives next to its code
Cloudflare PagesAnyoneYesA public site, uploaded from the dashboard or the CLI
ashare.netOnly you until you choose: your company domain, up to 100 emails, or anyone with a password, with an optional expiryNo, links are ashare.net/a/<id>A page only the right people open, which the agent keeps updating

A public page on your own domain

Netlify Drop. Put the HTML in a folder (named index.html if it is the start page), open app.netlify.com/drop and drag the folder in; unzip a ZIP first. Netlify gives it a .netlify.app address, and you add your own domain in the project’s domain settings. To update it, drag the new folder onto the project’s Deploys page. A site-wide password needs a Netlify Pro plan; Netlify’s credit-based Free and Personal plans don’t have it (Netlify docs).

GitHub Pages. Commit the file to a repository and turn on Pages. It works from public repositories on GitHub Free, and from private ones on Pro, Team and Enterprise. The site sits on github.io or your domain (GitHub docs).

Cloudflare Pages. Direct Upload takes a folder by drag and drop (up to 1,000 files) or with Wrangler (up to 20,000), 25 MiB per file. A subdomain needs a CNAME; an apex domain has to be on Cloudflare (Cloudflare docs).

Self-hosting. A self-contained HTML file needs no runtime: any web server or bucket that serves static files can host it.

A link only the right people open

With the ashare connector in claude.ai, or the plugin or MCP server in Claude Code (setup), ask:

Prompt
Publish this artifact to ashare for everyone at our company

Claude publishes the HTML and gives you a link. Readers confirm their email with a 6-digit code, or sign in with Google or Microsoft, and need no Claude account. Instead of the company, name people by email, or make it public with a password and an expiry. Each fix Claude publishes is a new version at the same link, and readers can compare any two. A folder goes up as a small site: up to 200 files, 25 MB in all, and links between its pages work.

ashare runs each document in a sandbox on its own host. Scripts, libraries from CDNs, external images and fetch work. Forms don’t submit, and there is no server code or build step. Documents aren’t indexed by search engines, so ashare is no place for a page you want found.

Embed the artifact in Notion or a website

From Claude. A published chat artifact has Get embed code, with an Allowed domains field for the sites that may show it.

From ashare. A document shows in a frame only on ashare.net until you allow sites: up to 20, such as https://www.notion.so, or * for any. Embedding on the document page gives you the <iframe> code, or ask the agent:

Prompt
Let https://www.notion.so embed the ashare document

In Notion, add an Embed block and paste the link. Embed public documents without a password: readers can’t sign in inside someone else’s site.

Custom domain

ashare doesn’t offer one, and Claude’s link stays on claude.ai. For a page on your own domain, Netlify, GitHub Pages and Cloudflare Pages all take one. If the page is public anyway, they are the better choice; ashare is for pages that need a login.

ashare.net: your agent publishes HTML or Markdown and you choose who opens it: your company, specific emails or a password. Readers comment, the agent fixes the document.

Connect your agent