Caching & Invalidation

How Slack caches unfurl data and how to force a refresh

Cache duration

Slack caches unfurl data globally for about 30 minutes. During that window, the same URL shows the same preview in every channel and workspace. After 30 minutes, the next share triggers a fresh crawl.

Unfurl debugger

The unfurl debugger shows how a URL will unfurl and which tags Slack extracted. Best way to test your setup.

Forcing a refresh

There’s no API to purge Slack’s unfurl cache. Your options:

  1. Wait 30 minutes for natural expiry
  2. Delete the message containing the URL, which clears the cached unfurl for that URL
  3. Append a query parameter to force a fresh crawl:
https://example.com/page?v=2

Slack caches by exact URL, so the modified URL gets a fresh fetch.

What doesn’t work

  • Clearing your local Slack app cache: the unfurl cache lives on Slack’s servers, not your client
  • Re-posting the same URL within the 30-minute window: same data, even in a different channel or workspace

Image caching

Slack-ImgProxy caches images separately from metadata. Even after the unfurl cache expires, the old image may persist in the proxy cache. Both caches need to expire before a new og:image URL fully propagates.

Common caching problems

  • Tags updated but old preview showing: wait 30 minutes, delete the message, or use a query parameter
  • Image updated but old image still showing: image proxy cache lags behind metadata cache; give it more time
  • Preview disappeared: your server probably returned an error during re-crawl, and Slack cached the empty state