How to publish HTML from ChatGPT canvas
Copy the HTML out of a ChatGPT canvas into one self-contained file, paste or drop it into ilolink.com, and get a link at ilolink.com/<slug> anyone can open. Then track how it was read: views, scroll depth, heatmaps, feedback.
Why the ChatGPT canvas has no publish button
A canvas renders inside a sandbox. It looks like a finished page on your screen, but there's no "publish" control and no public URL behind it — the canvas only exists inside your ChatGPT session. The one sharing option, a chatgpt.com share link, shares the whole conversation — every prompt, revision, and false start — not the standalone page you built. So the HTML that looked done has nowhere to live once you want to send just that to someone.
The fix is to lift the HTML out of the canvas into a single self-contained file, then publish that file. ilolink is the step that turns it into a URL served like any web page, with the reading captured on the other side.
How to publish ChatGPT HTML
The loop is short:
- Ask ChatGPT for one self-contained HTML file — a single file with its CSS inline, not a project split across assets.
- Copy the HTML out of the canvas — select all of it, or use the canvas copy control, so you have the full markup.
- Paste it, or drop the
.htmlfile, into the composer at ilolink.com. - Pick a visibility mode — public, unlisted, private (teamspace members only), password, or expiring.
- Get
ilolink.com/<slug>and send it.
The branded link 302-redirects to an isolated render origin, view.ilolink.com, where the doc is served under a strict content-security policy (default-src 'none'). Untrusted AI HTML is sanitized on the way in: javascript:, data:, and vbscript: URLs are dropped, and by default no arbitrary JavaScript runs. A static landing-page mockup renders exactly as designed — the CSS is kept. By default an interactive JS app is shown frozen to its static state rather than executing; if you mark the doc trusted at publish time it runs as-is inside a sandboxed frame on that isolated origin. The cap is 15 MB per doc. For the wider view of getting AI output onto the web, see share AI output as a real link and the best way to share AI-generated HTML.
What you learn after sharing
This is the part ChatGPT doesn't give you. Once the link is out, ilolink shows you how the page was actually read — all cookieless, from a rotating visitor hash, with no fingerprint and no personal profile:
- Views — total, plus approximate unique views (uniques are approximate by design).
- Scroll funnel bucketed at 0 / 25 / 50 / 75 / 100%, so you see where people stop.
- Heatmaps — click and scroll, viewable by device class.
- Reactions and notes — readers can react or leave a short note, no account.
- Comments — threaded, anchored to the doc.
There's more — average time on page, top referrers, countries, device class, 30-day daily views. See analytics, heatmaps, and feedback for the full picture, or open your documents once you've published one.
Questions
- Does the chatgpt.com share link do this?
- No. A chatgpt.com share link shares the whole conversation — every prompt and revision — not a standalone page. To publish just the page, copy the HTML out of the canvas into one self-contained file and paste or drop that into ilolink.
- Will my interactive canvas app run?
- Not by default. Untrusted AI HTML is sanitized on ingest, so an interactive app is shown frozen to its static state. But if you mark the doc trusted at publish time, it runs as-is inside a sandboxed, opaque-origin frame on the isolated render origin — so its own scripts execute while still walled off from cookies, storage, and other docs. A static landing-page mockup keeps its CSS and renders exactly as designed.
- Is it free?
- Yes, for one person — free for up to 3 published documents. You paste the HTML, or drop a file up to 15 MB, and get a link at no cost. Publishing needs a free account; readers never need one. Inviting teammates takes a paid plan — a one-time $9 for 5 people or $19 for 10.
- Can I password-protect it?
- Yes. Visibility can be public, unlisted, private (teamspace members only), password-protected, or expiring. Expiry is opt-in, not a default.
- Where does the page actually load?
- The branded ilolink.com/<slug> link 302-redirects to an isolated render origin, view.ilolink.com, where the doc is served under a strict CSP (default-src 'none'). It runs on Cloudflare's edge over HTTPS.
Try it on your own doc
Copy your ChatGPT HTML in, pick who can see it, and get a link in seconds.