Slack Link Preview Checker

Slack builds link unfurls from Twitter Card tags first, then Open Graph. Check what Slackbot gets from your page, whether robots.txt lets it in, and how the unfurl will look.

Free, no sign-up. We fetch the page from our server as each platform's bot, without running JavaScript.

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:

  1. oEmbed, for providers that support it (YouTube, Vimeo, Figma and others).
  2. Twitter Card tags: twitter:title, twitter:description, twitter:image.
  3. Open Graph tags: og:title, og:description, og:image.
  4. 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:card is summary_large_image if you want a large image.
  • Twitter Card values (if any) match your Open Graph values.
  • og:site_name and a favicon are set, for the header line.

Frequently asked questions

Why isn't my link unfurling in Slack?
Slackbot respects robots.txt, so a Disallow rule for Slackbot or for all bots blocks the unfurl. It also needs a quick 200 response without login. A workspace admin can also turn off unfurls for a domain.
Why does Slack show a small thumbnail instead of a large image?
Slack shows the large image layout when the page has twitter:card set to summary_large_image. Otherwise it shows a small thumbnail next to the text.
Which tags does Slack read?
oEmbed first (for supported providers), then Twitter Card tags (twitter:title, twitter:description, twitter:image), then Open Graph (og:title, og:description, og:image), then the HTML title and meta description. og:site_name and the favicon appear in the header line.
How do I refresh a Slack link preview?
Slack caches unfurls for a while and there's no public tool to purge them. Wait, or share the URL with a harmless parameter such as ?v=2 to force a new fetch.
What is the Slackbot user agent?
Link unfurls come from "Slackbot-LinkExpanding 1.0 (+https://api.slack.com/robots)". Allow it in your firewall and robots.txt.