How Slack unfurls links
Slack calls link previews unfurls. When a message contains a link, Slack's servers fetch the page as Slackbot-LinkExpanding 1.0 (+https://api.slack.com/robots) and attach a preview under the message. Slack reads metadata in this order:
- oEmbed, for providers that support it (YouTube, Vimeo, Figma and others).
- Twitter Card tags:
twitter:title,twitter:description,twitter:image. - Open Graph tags:
og:title,og:description,og:image. - The HTML
<title>and meta description.
Because Twitter Card tags win over Open Graph in Slack, a stale twitter:title left over from an old template can make Slack show a different title than every other platform. The checker shows which tag each platform used.
The unfurl has a header line with the favicon and og:site_name, then the title as a link, then the description. With twitter:card set to summary_large_image, the image shows large under the text; otherwise it's a small thumbnail on the right.
Why a link doesn't unfurl in Slack
robots.txt blocks Slackbot
Slackbot obeys robots.txt. A Disallow: / for all user agents, common on staging sites and sometimes left in production, stops unfurls completely. The checker reads your robots.txt and tells you whether Slackbot may fetch the URL. To allow it explicitly:
User-agent: Slackbot-LinkExpanding
Allow: /
The page needs a login
Slackbot can't sign in. Pages behind SSO, basic auth or a VPN won't unfurl. For internal tools, use Slack's app unfurling API instead.
The tags aren't in the HTML
Client-rendered apps send an empty shell to Slackbot. Server-render the meta tags.
Unfurls are turned off
Users can disable previews in their own preferences, and workspace admins can turn off unfurls for specific domains. If the checker shows a valid preview but Slack doesn't, check those settings.
How to refresh a Slack unfurl
Slack caches unfurls and has no public tool to clear them. Once the tags are fixed:
- Wait. The cache expires on its own, usually within hours.
- Or share the URL with a harmless extra parameter, such as
?v=2. Slack treats it as a new link and fetches it again.
Slack unfurl checklist
- robots.txt allows
Slackbot-LinkExpanding. twitter:cardissummary_large_imageif you want a large image.- Twitter Card values (if any) match your Open Graph values.
og:site_nameand a favicon are set, for the header line.