Slack Link Preview Wrong — How to Fix Slack Unfurl Issues
When you paste a link into Slack and the unfurl shows the wrong title, a stale image, or nothing at all, it's one of a handful of predictable failures — and each one has a specific fix. This guide covers every common Slack URL unfurl problem, the complete Slackbot troubleshooting playbook, the advanced cases that trip up enterprise teams (Workspace-level blocks, EKM, private repos), how to prevent preview problems in the first place, and how to test your Slack unfurls before you share a single link.
→ Diagnose your Slack unfurl with TryUnfurl
Understanding the Slack URL Unfurl Process
Every time a link hits a Slack channel, the same pipeline kicks off:
- Slackbot fetches your page using the user-agent
Slackbot-LinkExpanding(orSlackbot, depending on workspace settings). - Slack parses the HTML
<head>and reads Open Graph tags, falling back to Twitter Card tags and then HTML<title>/<meta description>. - Slack renders the unfurl card in the channel — title, description, image, site name.
- Slack caches the result. Subsequent shares of the same URL in the workspace use the cached URL unfurl rather than re-fetching.
Two things make Slack specific:
- Slackbot does not execute JavaScript. Every Open Graph tag must be in the server-rendered HTML.
- Slack caches per-share, not per-URL. The unfurl your teammates see is whatever Slack had at the moment the link was first shared in that channel. Fixing your tags later doesn't retroactively update old messages — you have to delete and re-share.
Why Slack Link Previews Go Wrong
Slack reads Open Graph tags from your page when a link is first shared in a channel. It then caches that result. This means:
- If your metadata was wrong at the time of sharing, Slack will show the wrong preview.
- If you update your page metadata, Slack won't automatically pick up the changes.
- If your page blocks Slack's crawler, no preview will appear at all.
Common Slack Link Preview Problems
- No preview at all. Your page has no Open Graph tags, Slackbot is blocked by a WAF, or the URL is JavaScript-rendered.
- Wrong title or description. Cached old metadata from an earlier share, duplicate
og:titletags, or mismatched<title>vsog:title. - Wrong or missing image.
og:imageis missing, too small, not absolute HTTPS, or the image URL is blocked for unauthenticated requests. - Outdated preview that won't refresh. The tags have been fixed but Slack has the old unfurl cached for that URL in that channel.
- Preview works in a DM but not a channel (or vice versa). Channel-level or workspace-level unfurl settings may be restricting link expansion.
- Preview is sparse and text-only. Your
og:imageis either missing or below Slack's minimum size. - Public link works, internal link doesn't. Slack's crawler cannot reach hosts behind VPNs, IP allow-lists, or SSO; only public URLs unfurl.
Complete Slack Unfurl Troubleshooting Guide
Step 1 — Verify your metadata is correct
Paste your URL into TryUnfurl. It fetches your page live and shows exactly what Slackbot will read — the detected og:title, og:description, og:image, and a rendered Slack unfurl preview. If TryUnfurl shows the correct data, the problem is Slack's cache, not your tags. If it shows wrong or missing data, fix the tags first.
Step 2 — Fix your Open Graph tags
Slack reads these tags from your HTML <head>:
<meta property="og:title" content="Your Page Title">
<meta property="og:description" content="Your page description.">
<meta property="og:image" content="https://yourdomain.com/og-image.jpg">
<meta property="og:image:width" content="1200">
<meta property="og:image:height" content="630">
<meta property="og:url" content="https://yourdomain.com/your-page">
<meta property="og:type" content="website">
<meta property="og:site_name" content="Your Site Name">
Make sure og:image is an absolute HTTPS URL pointing to a publicly accessible image.
CMS-specific notes
- WordPress — Yoast SEO and Rank Math both expose OG tag fields. Check that the plugin isn't conflicting with your theme's own tags (duplicate tags will cause Slack to pick the wrong one).
- Next.js — use the
Headcomponent to server-render OG tags, or the App Routermetadataexport. Client-sideuseEffectinjection will not work for Slack. - Ghost / Hugo / Jekyll — OG tags are usually handled by the theme. Inspect the raw HTML for duplicates after theme updates.
- Shopify — OG tags live in
theme.liquid. Verify your template isn't overridden by the app that handles social sharing. - Webflow — OG settings are per-page under "SEO settings." The default template needs the right binding.
Step 3 — Clear Slack's cached unfurl
Slack doesn't have a public cache-clearing tool. Your options:
- Delete the original message containing the link and re-paste it. Slack fetches fresh metadata when the link is shared again.
- In some workspaces, hover over the unfurl preview to see a refresh icon — click it to force a re-fetch.
- Append a cache-buster query string (e.g.
?v=2) when re-sharing. Slack treats it as a new URL. - Wait. Slack's unfurl cache typically expires within a few hours.
Slack Unfurl Troubleshooting Table
| Symptom | Likely cause | Fix |
|---|---|---|
| No preview appears at all | Page has no OG tags, or Slackbot is blocked | Add og:title, og:description, og:image; check robots.txt and WAF |
| Wrong title showing | Cached old metadata, or conflicting tags | Fix OG tags; delete and re-share |
| Wrong image showing | Cached old og:image, or multiple og:image tags |
Fix OG image URL; delete and re-share |
| No image in preview | og:image missing, wrong URL, or too small |
Use 1200 × 630 px absolute HTTPS image |
| Preview worked before, now blank | Page moved, returns 4xx/5xx, or Slackbot now blocked | Check URL is accessible; check server logs |
| Correct tags in source but Slack shows wrong data | JavaScript rendering — Slack doesn't execute JS | Use SSR or SSG to inject OG tags in initial HTML |
| Preview image is tiny | Image below minimum size | Use 1200 × 630 px image |
| Unfurls work for some users, not others | Workspace unfurl settings or EKM restrictions | Ask your Slack admin to check link-expansion policy |
Advanced Slack Unfurl Issues and Solutions
- Enterprise Key Management (EKM) — some Enterprise Grid workspaces disable link unfurling for compliance. Confirm with your Slack admin.
- Workspace unfurl settings — admins can turn off link previews workspace-wide or per-channel. Check Workspace Settings → Permissions → Link Previews.
- Mobile-only issues — if the preview looks right on desktop but wrong on mobile, check for a user-agent-based server response difference or a CDN edge serving different HTML.
- Internal / VPN-only URLs — Slack's crawler cannot reach hosts that require a VPN, SSO, or IP allow-list. There is no workaround other than exposing the page publicly.
- Short redirect chains — keep redirects to 1–2 hops. Long chains cause Slackbot to give up before resolving tags.
- Signed-URL expiry on
og:image— if your image URL is a signed CDN link that expires, Slack's cached copy may return 403 later. Use permanent image URLs in OG tags. - CDN cache of old HTML — if TryUnfurl shows new tags but Slack shows old ones, clear your CDN cache (Cloudflare, Fastly, CloudFront, Vercel, Netlify) first.
What Slack's Crawler Looks For
Slack's bot (Slackbot) reads metadata in this order:
og:title→ falls back to<title>og:description→ falls back to<meta name="description">og:image→ falls back to first image on page (unpredictable)og:site_name
Slack does not execute JavaScript. If your site uses a React, Vue, or Angular SPA without server-side rendering, Slackbot will see an empty page and either show no preview or show a very minimal one.
Is Slackbot Being Blocked?
If previews work for some links but not yours, check that Slackbot isn't being blocked:
- robots.txt — ensure
Slackbotisn't disallowed. - Cloudflare or other WAF — aggressive bot protection can block Slackbot. Add an allow rule for the
SlackbotandSlackbot-LinkExpandinguser-agents. - IP allowlisting — Slack's crawler IPs are not publicly published; IP-based blocking will prevent previews.
- Rate limits — very aggressive rate limiting on your edge can cause Slackbot to receive 429s. Ease the rule for bot user-agents.
Slack Image Requirements
| Requirement | Value |
|---|---|
| Recommended size | 1200 × 630 px |
| Minimum size for large display | 500 × 262 px |
| URL type | Absolute HTTPS only |
| Must be public | Yes — not behind auth or blocked by robots.txt |
Preventing Future Slack Preview Problems
Good teams don't troubleshoot URL unfurls — they prevent them. A few habits that cut Slack unfurl issues to near-zero:
- Set a site-wide default
og:imageso no page ever ships naked. - Block PRs that break OG tags — add a pre-commit or CI check using the TryUnfurl API that asserts
og:title,og:description, andog:imageon every deploy. - Audit monthly. Run the bulk URL unfurl checker across evergreen pages to catch silent regressions from CMS or theme updates.
- Server-render critical tags. If you use a JS framework, OG tags must live in the initial HTML — not behind a
useEffect. - Document your OG image pipeline. Make it easy for non-technical teammates to update
og:imagewithout breaking dimensions.
Testing Your Slack Unfurls
Before any high-stakes share — a customer-facing Slack Connect channel, a company announcement, a product launch — run the URL through a multi-platform link preview checker that fetches live and renders the Slack card.
TryUnfurl gives you a Slack-style preview plus the raw Open Graph tag breakdown, so you can catch and fix any URL unfurl problem before a single teammate sees it.
For content migrations or monthly audits, the bulk URL unfurl checker runs up to 100 URLs in one pass and exports the results as CSV.
Frequently Asked Questions
Why isn't my Slack unfurl showing at all?
Either Slackbot can't reach your page (check robots.txt, WAF, and VPN/IP restrictions), your Open Graph tags are missing, or your OG tags are injected by client-side JavaScript (Slack doesn't execute JS).
How do I force Slack to re-fetch a URL unfurl?
Delete the original message and re-share the link. Slack fetches fresh metadata on the new share. Appending ?v=2 (or any query string) to the URL also works — Slack treats it as a new URL.
Does Slack read Twitter Card tags?
Slack primarily reads Open Graph tags. It will use some Twitter Card tags as a fallback, but for reliable unfurls, set Open Graph tags explicitly.
Why does the Slack unfurl show an old image after I updated my page?
Slack cached the image at the moment the link was first shared. Fixing the page doesn't retroactively update existing messages. Delete and re-share the link in the channel to get a fresh URL unfurl, and clear any intermediate CDN cache first.
How do I test my Slack unfurl without posting in a channel?
Paste your URL into TryUnfurl — it shows a Slack-style preview card plus the raw Open Graph data Slackbot will read.
Check Your Slack Preview
Paste your URL into TryUnfurl.com to see a Slack-style preview and the full metadata Slackbot will read — before you share anything.
→ Test your Slack link preview now · → Bulk-check up to 100 URLs
Related Guides
- Discord Preview Not Updating — same caching problems, different platform
- Why Link Previews Break — the 7 root causes behind all broken previews
- How to Refresh a Link Preview — step-by-step cache-clearing on every platform
- Preview Image Not Showing — full fix checklist for missing
og:image - Link Preview & Unfurling Guide — complete reference for all platforms and metadata standards