Your AI built the page — now send it as a link
The chat handed back a finished page — a report, a mockup, a proposal. Sharing the conversation link forces someone to wade through your prompts; dumping markup in a pastebin renders nothing. The page itself is the deliverable — it needs a URL.
The three routes
Pick the method that fits how you work. The browser: save the HTML file, drop it here, share the link — the uploader stages the file, asks for a valid email (that is where your backup link goes), and publishes only when you confirm. The terminal: one curl, no account, no email. Or skip both: an agent that speaks MCP deploys the page itself and hands you the URL.
No matter the route, insist on one self-contained file: CSS in a style tag, JavaScript in a script tag, images as data URIs or absolute CDN URLs. Left alone, models love referencing a styles.css that exists only on their side of the chat — and relative files like that simply do not exist on the drop. Already holding a folder of files? Zip it and use /host-a-zip-file.
What comes back is a drop: the file served byte-for-byte on its own unguessable subdomain, guarded by noindex headers, live for 30 days with no account. Open it yourself before sending it off — /tools/html-viewer pastes straight from the clipboard — because the model's idea of finished and yours occasionally differ.
From chat output to live link
The prompt that gets you one complete file
Turn this into a single self-contained HTML file I can save and open directly: all CSS in a <style> tag, all JavaScript in a <script> tag, no external local files, no build step. Images as data URIs or absolute URLs only.Phrasing does the heavy lifting. "Self-contained" and "no external local files" keep the model from referencing helpers trapped in its sandbox; CDN links still work fine.
Ship it from the terminal
curl -fsS -X POST https://ship.page/deploy \
-H "Content-Type: text/html" \
--data-binary @index.html | jq -r .urlCompletely anonymous — no account, no email. The JSON response hands back your live URL, and the file goes up byte-for-byte.
Or let the agent run it — Claude Code
claude mcp add --transport http ship-page https://ship.page/mcp
Then: "deploy this page to ship.page and give me the URL"Nine tools, with anonymous use working out of the box. Cursor, VS Code, Windsurf and every other MCP client have dedicated setup pages at /guides.
Downloadable example
Run the entire flow on our example
A full project-update report — KPI tiles, a milestone table, an inline-SVG chart, anchor navigation — packaged as one self-contained file. Inspect it, then upload it yourself: route one, start to finish, with nothing of your own on the line.
The optional API key
Everything above works with zero account — anonymous deploys go live for 30 days and that's all you need for quick shares. Mint a free sp_ key (sign in at ship.page, dashboard → Keys) and deploys land on your account instead: drops the agent can list, restore and delete, 90-day expiry on the free plan, and named drops — stable, readable URLs that redeploy in place — on paid plans.
A free sp_ key buys you memory: drops attach to your account with a 90-day expiry, letting you list, restore, or delete them later. Pro adds named drops — a clean, readable URL that updates in place, so revision seven hits your client at the exact same address as revision one.
Prompts to try
Prompt
Write a one-page project status report as a single self-contained HTML file — summary, three KPI tiles, a milestone table, inline CSS only — so I can download it and share as a link.Prompt
Turn this estimate into a crisp one-page proposal, packaged as a single self-contained HTML file with inline styling, printable to PDF.Prompt
Build a small interactive pricing calculator as one self-contained HTML file with inline JavaScript, then push it to ship.page and hand me the URL.Questions
Why not just send the chat's share link?
Because that shares the conversation, not the page. Your recipient has to scroll past your prompts to reach the actual output — and plenty of tools lock shared chats behind a sign-in wall. Exported HTML is the thing itself: a URL any browser opens, zero baggage attached.
Claude's artifacts already render — why export?
An artifact lives inside Claude's viewer, so sharing means your recipient runs into Claude's UI first — and depending on their tier, an account wall. Export the file and it stands alone: one link, their browser, done.
Do I need to know any code?
No. The browser route is straight download-and-upload: picking the file only stages it, the uploader asks for a valid email address so you hold a backup link, and nothing publishes until you confirm. No account created anywhere.
What about the images and fonts it referenced?
Absolute URLs — CDNs, Google Fonts, hosted images — keep working untouched. Files the page expects to find sitting next to it simply don't exist on the drop: either have the model inline everything, or zip the folder and upload it via /host-a-zip-file.
Can I update the page after publishing?
Any anonymous drop is immutable — publish the revised file and hand out the new link. If the page will be revised more than once, a named drop on Pro ($4/mo) redeploys to the same URL every time.
How long does the link live?
Anonymous drops last 30 days, then stay privately claimable for another 30 before they get purged. Claim the drop to a free account and it lasts 90 days from claiming; paid plans can keep a page live indefinitely.
Ship the page your model just wrote
Drop the file on the homepage, or dry-run the example report first. No account, no setup — the first URL is free.