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.
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.
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.
miinideck turns a single HTML file into an unguessable link with optional password and expiry. Default-private, never indexed.
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.
You spent a few days pulling the data, building the analysis, polishing the visuals. Now it's a single HTML file — charts, tables, narrative, all in one place. The hard part should be over.
Then comes the send. Same report, different channels, different first impression. Here's what each is built for, and where the friction shows up when one finished HTML report needs to reach one client.
Paste the HTML into the email body. Works for the text and basic tables. Email apps sandbox the interactive parts — JavaScript, complex CSS, custom fonts — because that's what keeps Gmail and Outlook trustworthy at scale. The chart code arrives; the charts don't render. For a short executive note with one table, that's fine. For a full report where the visualizations are most of the value, the most valuable parts are the ones that don't survive the trip.
Attach the .html file. The file lands on the client's device exactly as you built it. Email providers add a security check on HTML attachments — sensible, a lot of phishing arrives this way — and how the file opens depends on the client's setup. On some devices it previews in the email app. On most it lands in Downloads first and waits. Whether the client double-clicks it, opens it in a browser, or just lets it sit there is up to them.
For one client expecting it on a device you know, this works. For a steering committee on different devices, you end up coaching the same step ("right-click → Open with → Chrome") more than once.
Cloud drives (Google Drive, Dropbox, SharePoint). Built for working documents — multi-file projects, version history, comments, shared editing. A single .html report lives there fine, alongside the spreadsheets and the deck. The client's first view is the drive's UI, and on many configurations the file opens as a code preview by default. To see the rendered report, the viewer manually picks "Open in a new tab" or downloads it first. Drives are doing what they're built for; a rendered report is just shaped differently from what they're optimised for.
Public hosting (Netlify, Vercel, Tiiny.host, GitHub Pages). Built for the moment you want reach — a launch page, a public demo, a portfolio. Anything you put there is meant to be findable; that's the whole point. For a quarterly report meant for one specific client, the same property means it'll show up in search results in a few weeks. Sometimes that's a bonus. For client-bound analysis with private numbers, often a surprise.
A self-contained HTML report. One named client (or a short list — the client's own team, the steering committee, the partners they want to brief). No public discovery. No "is this safe to open" pause. The link opens in a browser and the report renders the way you built it.
That's the gap miinideck sits in. Drop the file, get a 32-character random link, send the link. No listing on the site, no search index, no folder UI. If the URL leaks, you delete it.
Drop one HTML report, see the link in under 60 seconds. No card, no account. The anonymous tier handles files up to 3 MB and self-destructs after 7 days — useful for the first run before any client work goes through it.
.html file. Most modern BI tools (Observable, Datawrapper, Plotly, Streamlit static export) have an "embed in HTML" or "export" option. If you built the report in code, the standard pattern is a single .html that inlines its CSS and JavaScript so the receiving end needs nothing but a browser.https://www.miinideck.com/a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6 — 32 random characters, unlisted, not indexed.Six steps. No account on the first run.
If your work is research, analysis, or strategy, the file you hand to a client is the work product — it's most of what they remember about whether you delivered. The channel is part of that.
A 30-megabyte attachment says: here is the thing, deal with the file.
A drive folder link says: here's the thing alongside our other working documents.
A public URL says: this is meant to be found.
An unguessable private link says: I picked who sees this, and the list stays with me.
For client-facing analysis with private numbers, the last one is usually the closest match to how the engagement was scoped in the first place.
| You have | Send via |
|---|---|
| A 1-paragraph update with one static table | Paste into the email body |
| A self-contained HTML report for one named client | Private miinideck link |
| A public market commentary, blog-style, meant to be findable | Public hosting (Netlify, Vercel) |
| A long-running interactive app with login and live data | Proper hosting (Vercel, Render, Fly) |
| A live dashboard updated daily, multiple viewers, role-based access | Hosted BI tool (Looker, Mode, Hex) |
The private-link path covers the specific shape that comes up most often in consulting and analyst work — a finished HTML report, named audience, private numbers, no public material.
Free covers up to 10 MB and keeps one always-on link that never expires; the rest run a 7-day self-destruct. Solo at $4.99/mo makes every link permanent and removes the footer. Studio at $14.99/mo adds custom domain — the report lives at yourfirm.com, not someone else's subdomain. Privacy and password protection are always free; paid tiers are about persistence and ownership.
miinideck does one thing: takes a single HTML file, gives back a private URL. It's not a BI platform, a data warehouse, a versioned doc store, or a hosting platform — those tools cover other shapes of need (live data, multi-file structure, edit history, custom domains for public reach), and they cover them well.
For handing off a finished HTML report to a named client, narrow is the right fit. If your starting point is an interactive prototype still being iterated rather than a finished report — say a Claude or ChatGPT artifact — that flow is its own walkthrough.