The mechanics of self-contained HTML delivery — inlining, exporting, file size, viewing, and choosing the right format.
The attachment arrived, nothing was blocked, and your recipient sees markup instead of the page. That's three different email failures people keep merging into one. Here's which one you hit, and why the fix isn't a different attachment.
Upload an .html file to Drive, open it, and you get a wall of markup instead of the page. Nothing is broken — Drive is doing exactly what a filing cabinet does. Here's the mechanism, the workarounds people try, and what actually renders it.
Email providers cap attachments around 20-25MB. The fix when the file is bigger isn't to compress harder — it's to send the URL instead.
The page is fine. Your computer is fine. What differs is that a desktop knows what to do with an HTML file and a phone mostly doesn't — so the fix depends on whether you sent a file or an address. Here's how to tell which you sent.
You send a delivery link, the reply is 'blocked by our security policy.' Nothing is wrong with your file. Here's what actually inspects a link between you and them, why unfamiliar domains lose that inspection, and what you can do from your side.
Comment threads normally require identity, and for good reason — a note has to belong to someone. Here's how a review works when the reviewer signs into nothing, what that costs, and when the trade is the right one.
Website annotation tools start by asking where the page lives — a reasonable assumption that quietly excludes the most common case in 2026: an HTML file your AI just made, sitting in your downloads folder, due in front of a client this afternoon.
Printing a QR code fixes the URL forever. It doesn't have to fix the content. The difference is entirely in what you point the code at — and it's the one decision to get right before the print run.
Genially's HTML download keeps the interactivity a PDF export throws away — but it lands as a ZIP with an entry file that isn't index.html, and it needs a paid plan. Here's the honest shape of that export.
Lumi exports H5P content to a single standalone HTML file that runs in any browser. Two caveats decide whether that works for you — some content types won't export at all, and media gets inlined, which inflates the file fast.
The first-time receiver's walkthrough. Six moments from email arrival to tab close — what they see, what they don't see, and why each detail is built that way.
Sending a deck as a link instead of a .pptx attachment is the right instinct — but it's two steps, not one, and being honest about the middle step saves you a frustrating afternoon. What actually converts, and what a private-link host does and doesn't do.
Private doesn't mean one recipient. Same URL to a five-person review committee, with basic analytics that still tell you who's engaged and who's not.
Three paths to turn a multi-asset HTML page into a single self-contained file: a build-tool step, an LLM prompt, or a manual pass with DevTools. When each one fits.
A Claude artifact looks self-contained inside the chat and often isn't. The five things that quietly stay external — CDN scripts, Tailwind, fonts, images, fetch calls — and how to inline each.
There is no single number — it depends on the model, the image size, and whether you send a PDF as text or pixels. The per-model formulas, real measured costs, and how to count it for your own model.
Three formats people reach for by habit, built for three different jobs. A job-by-job map of when Markdown, HTML, or PDF is the right shape — and why they work best as a pipeline, not a choice.
Feeding a document to an AI? Markdown almost always costs fewer tokens and parses cleaner than the same content as a PDF. Where each format wins — and why the thing you hand a person at the end is neither.
PDF is built for archive and print. HTML is built for live, browser-native delivery. Where the three differences — interactivity, weight, single source of truth — actually decide which format ships.
How analysts, consultants, and agency teams hand a finished HTML report to one named client — what each channel is built for, and where private-link hosting fits.