To send an HTML file in Slack and have people see the page, send it as an address, not as a file. Drag the .html file into a channel and Slack shows a grey file card with a download icon.

Few people click it, and the ones who do get a file in their Downloads folder. Paste a link to the same page and Slack draws a preview card with the title and image, and the page opens in one click, on a phone too.
This guide covers what Slack does with each thing you might send, the one exception, and how to get the card right.
What Slack does with an uploaded .html file
Slack previews some formats inline. An image is pixels. A PDF is a fixed document. A code file is text. HTML is different: it can load remote content, run scripts and draw a form that looks like a login page.
For most workspaces, an uploaded HTML file shows as a file card with a download button, not as the page.
That is not a size problem. Slack accepts files up to 1 GB (as of September 2026). The upload works; the card is the result.
A possible exception. Some users have reported that, in some workspaces, Slack shows an inline preview for a complete, self-contained .html file attached to a message. As of September 2026 Slack's help centre does not document it.
Where it has been reported, it varies between workspaces, so the same file can render for one team and show a card for another.
Where it does render, it is still a preview inside Slack: HTML pasted into the message body stays text, a page that depends on a stylesheet or images in other files shows without them, and the page cannot be opened outside the workspace or found later by anyone who was not in the channel. Do not plan on it.
What each thing you could send actually produces
| What you send | What the channel shows | What the reader has to do |
|---|---|---|
The .html file |
A file card, or in some workspaces a preview | Download it, find it, open it with a browser |
| A code snippet | Coloured source code | Read markup instead of the page |
| A screenshot | The picture | Nothing, but the page is now frozen and uncopyable |
| A PDF export | An inline preview | Nothing, but interactive parts are gone |
| A link to the page | A preview card with title, description and image | Click once |
Only the last row gets anyone to the actual page in one action. The screenshot and PDF rows are fine when the content is final and static. They stop being fine the moment a number in it can change, because the copy in the channel is now permanently wrong and looks authoritative.
What the download path costs the reader
For the people who do click the file card: the file lands in Downloads, they have to find it, and then it has to open.
On a desktop that depends on whether .html is associated with a browser or a code editor. On a phone it usually stops at the file manager.
If the page reached for a stylesheet or images next to it, those did not come along, so it renders as bare text. Several places to fall off, and a file card gives nobody a reason to start.
How to send the page as a link: 4 steps
- Give the page an address. Paste the HTML into a NOS document and copy the share link from Share › Share link. Turning HTML into a link is one paste.
- Check the page has a title, description and image. Slack builds the preview card from these tags in the page's head:

<title>Weekly overview — week of 7 Sep</title>
<meta property="og:title" content="Weekly overview — week of 7 Sep">
<meta property="og:description" content="Signups, active teams, and where support time went.">
<meta property="og:image" content="https://example.com/preview.png">
See Open Graph tags for what each line does. A page without them unfurls as a bare address, which looks like spam and gets ignored almost as thoroughly as a file card.
- Paste the link with one line of context. "Weekly numbers, signups up 12%." Slack unfurls the card under the message. Keep to the one link that matters, so its card is the one people see.
- Revise the page, not the message. When someone spots an error, fix the page. The link in the channel already points at the corrected version. There is no "ignore that file, here is v2" message, which is the message everybody has had to send at some point.
If you only need to show the code
Sometimes the markup is the point: a colleague asks how a chart was built, or you want a review of the structure. Then a snippet is right. Type a message, click the plus, choose Create a text snippet, set the type to HTML and paste.
Slack highlights it and folds it after a few lines, and readers can expand or download it. Just know that nobody will see the page this way, and a 40 KB dashboard makes a very long snippet.
Controlling the preview
Slack lets you remove a preview after posting by clicking the close icon on the card, and workspace admins can block previews from specific websites.

If your link shows no card at all, check three things in order: the page is reachable without login, it has a <title>, and the og:image address is a full https:// address to a real image file. The preview card guide has the checklist.
To check the markup renders before sending it, use the HTML viewer.
Why this matters more than it sounds
In a channel, the cost of a bad share is not the download. It is that the conversation moves on. A file card generates no discussion because nobody has seen the contents. A preview card puts the title and the headline number in front of everyone scrolling past, and the ones who care click through.

In NOS the pasted HTML becomes a page at a fixed address. The wording stays editable by clicking, so a correction is a click rather than a re-export, and the card in the channel keeps pointing at the current version however many times you revise it.
The same problem in other tools
| Tool | Uploaded .html | Link |
|---|---|---|
| Slack | File card, or inline preview in some workspaces | Preview card |
| Teams | Stored in the channel's file library; viewer offers a download | Preview card, or a pinned website tab |
| Discord | A file attachment with a download | Preview card |
| Warning banner, no preview, sometimes stripped | Plain link |
Every row ends the same way: the uploaded page arrives as a file or as text, not as the page. An address is the one thing all of them treat the same way.