The HTML file in your Slack thread, openable.
Slack renders HTML files as code blocks nobody can read. One click on the message turns the file into a private link, posted back into the conversation. No account, no dashboard, no copy-pasting.
The file everyone shares, the way Slack shows it: line 1 of the markup.
How do you open an HTML file someone posted in Slack?
You host it. Slack shows uploaded HTML as a code preview, not a rendered page. The Stacktree Slack app adds a message shortcut: click ⋮ → Host on Stacktree on any message carrying an .html or .md file, and it publishes to a private, unguessable URL and replies with the link, visible to everyone in the conversation. Installing takes one OAuth approval and no Stacktree account: the workspace gets its own free identity automatically.
The moment this exists for
A colleague asks for the architecture diagram. You have it as a self-contained HTML file, because that is what your agent produced, so you drag it into Slack, and Slack displays line 1 through 5 of the markup with syntax highlighting. Nobody is reading a diagram out of a code block. The information is right there and completely unreadable.
We built this app after being caught by exactly that moment ourselves, in our own Slack, by a colleague who knew what we build. The lesson we took: the file-into-Slack reflex is unbeatable, so stop fighting it. Drop the file the way you always do; the shortcut makes the drop the publish.
How it works
- Install once. One OAuth approval. The workspace gets its own free Stacktree identity at that moment, so there is no signup, no API key, no configuration. Anyone in the workspace can use the shortcut immediately.
- ⋮ → Host on Stacktree. On any message with an HTML or Markdown file, in any channel or DM. The bot needs no invite, because it is a shortcut, not a member.
- The link comes back into the conversation. Private, unguessable, viewable with no account. The person who asked clicks it and sees the rendered page, not the markup.
- Outgrow it, then link. When the workspace's free 5 sites are used, the reply itself offers to link a Stacktree account, which migrates the workspace's existing sites into your dashboard and applies your plan's limits. Friction arrives after value, not before.
Or just ask Slackbot
Slack made Slackbot an MCP client in June 2026, and Stacktree is a remote MCP server, so the two connect. Once an admin adds Stacktree in the Slack app's MCP settings, anyone can ask Slackbot in plain language, "publish this as a private link," and it calls Stacktree's publish primitive and posts the link back into the channel. The message shortcut above is the no-setup path; the MCP connection is the conversational one. Both produce the same private, unguessable links, with the same gates available afterwards.
What it deliberately does not do
No event subscriptions, no channel presence, no passive scanning of files or messages. The app acts only when a person runs the shortcut on a specific message, and touches only that message's files. Hosted pages carry a strict Content-Security-Policy, are excluded from search indexing, and can be gated further (password, email-domain verification, expiry) from the dashboard. The privacy bar for putting something at a URL should be higher than for a file in a channel, and here it is.
Frequent questions
How do I share an HTML file in Slack so people can actually open it? +
Does the app read my messages or files? +
Do I need a Stacktree account to use it? +
Does it work in DMs? +
How private is the hosted link? +
What file types does it handle? +
Can Slackbot publish to Stacktree over MCP? +
Related guides
- Agent skills The other front doors: publish skill, MCP server, migration, agent payments.
- Share architecture diagrams The exact artifact that sparked this app, and the workflow around it.
- Internal tool hosting Where the single-file utilities in your threads should live.
- Private HTML hosting The unguessable-URL access model and the gates you can add.
Sources and further reading
- Slack: message shortcuts ↗ The interaction model the app uses: user-invoked, message-scoped, no passive access.
- Slack: app installation and OAuth ↗ The OAuth flow behind the one-approval install.
- Slack: Slackbot MCP client ↗ Slack's docs for connecting remote MCP servers to Slackbot, the basis for the ask-Slackbot path.
Stop screenshotting HTML into Slack.
Install once, no account needed. The next HTML file anyone drops is one click from a private, openable link.
Sign up free →