The mechanics of self-contained HTML delivery — inlining, exporting, file size, viewing, and choosing the right format.
Start here
Everything between a file and a link someone can open — making HTML self-contained, sizing it, viewing it online, choosing it over PDF, and sending it to one person.
Client-side encryption tools turn your page into an encrypted file, so the protection and the artifact are the same object — every edit means re-running the tool and re-uploading. What that actually costs, the salt setting that decides whether your old share links survive, and when a hosted password is the better trade.
Running the studio out of one folder per client is a good structure for making the work. It stops at the point where the client has to open it — a private repo needs a GitHub account, and Pages built from one is public by default. What the handover step actually needs, and how to add it without breaking the folder.
A .json Lottie is not a page — hand it to a client and they get a wall of numbers. What it takes to turn one into something that opens in any browser, and why the answer is smaller than the tooling suggests.
You need one page live for a webinar, a resource hub, or a campaign — not a whole website. Here's how to stand up that page from a single HTML file: a private, no-index link in seconds, with expiry, custom domain, and an honest line on where registration capture belongs.
Bolt.new previews live behind a session URL that changes and can lapse. How to pull a static export — one HTML file or a built dist folder — out of Bolt and turn it into one stable, private link.
The page runs perfectly from your desktop, then one button stops working on the hosted version — usually fullscreen, copy-to-clipboard, or a fetch. Four causes, each with a one-line test you can run in the browser console to tell them apart.
Your Slidev or reveal.js deck is already a self-contained web app. Skip the public deploy, the screenshot, and the PDF flattening: run the build, zip the dist folder, and turn it into one private link that keeps every fragment, transition, and code highlight stepping exactly as it did locally.
A Replit webview link dies when the repl sleeps. If your build is static, you can lift the output out of the container and serve it from a link that never spins down. Here is the export path — and the honest line where it stops applying.
You ran ng build and now someone needs to open it — QA, a client, a stakeholder — before the real deployment gets scheduled. What to upload, what happens to relative asset paths, and the one honest limit: a refresh on an in-app route returns 404 unless you switch to hash routing.
A static page can post form submissions into a Sheet you already own, using a Google Apps Script web app as the endpoint. The fourth shape most 'form without a backend' guides leave out — how it works, the two settings that trip everyone up, and when a form service is still the better call.
Cursor builds projects as folders of linked files, not one shareable artifact. Three reliable ways to collapse a Cursor build into a single self-contained HTML you can drop on a private link — and the one case where you deploy instead.
A static page has no backend and no secrets, which sounds like it rules out forms, payments and bookings. It doesn't. The line isn't 'frontend versus backend' — it's whether the credential you'd have to publish is designed to be published. How to tell, in one question, before you build.
The person who needs your dashboard usually has no seat in your BI tool — and buying one is the wrong fix. How to ship a live, interactive dashboard to a no-login viewer, and where a live connection beats a snapshot.
Skip the review call. Send the prototype as a private link, let people pin comments to the exact element with no account, and read every note in one place — async, on their schedule and yours.
Desktop preview says the page is fine. The phone disagrees, and you find out after the client already has the link. Here's the loop that catches it first — and the part of the problem no host can fix for you.
Replacing a page you have already handed someone is a different problem from publishing it the first time. Why the usual answer is 'learn git', who that answer is actually for, and what the other routes really cost.
Send the raw file and they see asterisks. Export to PDF and you lose easy revisions. The third option — and how to pick between the three by what the document has to do next.
New uploads have ended and the site runs only until the last existing page hits its expiry. PageDrop bundled three things most hosts split up — instant account-free publishing, expiry as a feature, and a public gallery. Here is which alternative covers which, compared side by side, and how to get your file back first.
Opening an HTML file and publishing one are different decisions, and most tools quietly make the second for you. The fork between a public address and an unguessable one — what each is for, and how to tell which the file in front of you needs.
You already have the finished HTML page. Putting your own domain on it is one DNS record and one upload — not a rebuild inside a website builder's editor. The walkthrough, and the one case where you need Vercel or Netlify instead.
SharePoint is getting the ability to render uploaded HTML as a page. Before you route client deliverables through it: custom script is blocked by default and resets to blocked after 24 hours, and letting someone outside the tenant open it is a separate decision your admin owns.
Every cloud drive gives you two ways to share the same file, and they work on completely different principles. One grants a person access; the other grants a URL access. Knowing which is which decides who can still open your file in a year.
Automating the publish step is easy on the first run. The decision appears on the second: mint a fresh URL, or replace the contents at the old one. One of those quietly rots every link you've already sent, and nothing warns you.
The iframe snippet works on your laptop because the PDF is sitting next to the HTML. The moment the page travels, it's two files — and only one of them arrives. What actually survives the trip.
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.
You want to send a deck as a link, not a .pptx attachment. For most decks the middle step is now one menu item — PowerPoint exports a PDF, and a PDF goes straight to a private link. When that is the right road, when HTML is, and what each one costs you.
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.