Slack unfurl debugging

Slack Link Preview Debugger

Slack calls link previews unfurls. When someone posts a URL, Slack crawls the page, reads metadata, and may fetch the linked image or media file. I check the page outside Slack first because Slack cache can hide a simple metadata problem.

What to check for Slack

  • The URL is public and not blocked by auth, bot rules, or redirects.
  • The page includes Open Graph or Twitter Card metadata in the rendered HTML.
  • The image URL is public, absolute, and returns image content.
  • The title and description make sense in a compact chat preview.
  • The image still works when cropped or shown as a smaller unfurl.
  • The old card is not just Slack cache.

Slackbot fetches metadata

Slack's crawler reads metadata and can fetch linked media files to build the preview.

Open Graph works

Open Graph tags are part of the metadata Slack can use for classic unfurls.

Cache can mislead you

A fixed page can still show an old Slack preview until Slack fetches the URL again.

Slack previews I check

  • Docs links posted in a team channel.
  • Changelog entries where the title should identify the release.
  • Internal tools where Slack shows the same default card for every route.
  • Customer support links that need a clear title before someone clicks.

Common questions

Does Slack use Open Graph?

Yes. Slack's robot docs say it looks for oEmbed, Twitter Card, and Open Graph tags, and it can fetch linked media files to check validity and extract metadata.

Why does Slack show an old preview?

Usually cache. First prove the public URL and image are correct outside Slack. Then test with a changed URL or image URL if Slack keeps showing stale data.

Do I need Slack-specific meta tags?

Not for a normal website preview. I use clean Open Graph and Twitter Card metadata, then make sure the card still reads when Slack shows it small.

How Slack unfurling works

Slack's classic link unfurling starts when a link appears in a message. Slack crawls the URL and attaches a preview so the conversation has context.

Slack's robot documentation says it looks for oEmbed, Twitter Card, and Open Graph tags. If those tags refer to an image, video, or audio file, Slack may fetch that file too.

Why Slack previews are annoying to debug

Slack is usually not the first place to debug. It can cache old metadata, fetch with its own crawler, and show a compact card that hides problems obvious in a large social preview.

I check the public URL first. If the tags are missing or the image fails outside Slack, Slack is not the problem. If the tags are correct and Slack still shows the old preview, then I treat it as a cache test.

Range requests and partial fetches can also make Slack feel different from a browser. A browser loading the page does not prove Slackbot received enough metadata or could fetch the linked image.

What makes a good Slack preview

Slack previews need a short title, useful description, and an image that still reads when it is small. Screenshots with tiny text usually look worse than a clean generated OG image.

For docs, changelogs, product updates, and internal tools, the preview should identify the page quickly. Slack is a work context; vague marketing images do not help much there.

Use the checker first

The existing checker already fetches the URL, reads the tags, checks the image, reports dimensions and file size, and shows the platform previews. This page is the entry point; the checker is where the work happens.

Open the checker

Related

cdf733b534ea2f2ed964d150330b323c44837e4f