How to Control Slack Link Previews (Fix When They Break)
Slack link preview not showing? Learn which OG tags Slack reads, why link previews break, image requirements, and how to test your preview before sharing.
How Slack Generates Link Previews
When you paste a URL into Slack, Slack's crawler (called Slackbot) fetches the page in the background and reads its HTML meta tags. It uses these tags to build the "unfurl" preview card that appears below your message — showing a title, description, and sometimes an image.
This process is called link unfurling. Slack uses the Open Graph protocol to read the preview data. The OG tags Slack looks for are:
- og:title — the bold text shown as the preview headline
- og:description — the smaller descriptive text below the title
- og:image — the image shown in the preview card
- og:url — the canonical URL (Slack shows the domain as the source label)
- og:site_name — the site name shown above the title in the unfurl
If any of these tags are missing, Slack uses fallbacks. For title, it falls back to the HTML <title> tag. For description, it may use a <meta name="description"> tag. For the image, there is no fallback — if og:image is missing or broken, no image appears in the preview.
Slack's Unfurl Behavior
Slack only unfurls a link once per URL per conversation by default. If you paste the same link multiple times in the same channel, Slack shows the preview only for the first occurrence. This is a UX decision to reduce visual clutter, not a bug.
Slack also respects a special tag that lets you opt out of unfurling entirely. Adding <meta name="slack-app-id" content="..."> allows Slack apps to control unfurl behavior programmatically, but for standard web pages the OG tags are what matter.
Caching: Why Your Fix Might Not Show Immediately
Slack caches link previews. After you update your OG tags, pasting the same URL in Slack may still show the old preview for up to 30 minutes. To bypass the cache, append a query parameter to the URL when pasting (e.g., ?v=2). This forces Slack to treat it as a new URL and fetch fresh metadata. There is no manual cache-clear button in Slack itself.
No JavaScript Support
Slackbot's crawler does not execute JavaScript. This is the most important technical constraint to understand. If your OG tags are injected into the page by a JavaScript framework (React, Vue, Angular in client-side mode), Slackbot will see an empty page and show a minimal or missing preview. Your OG tags must be present in the raw server-rendered HTML.
If you use a JavaScript framework, fix this with server-side rendering (Next.js, Nuxt.js), static site generation, or a pre-rendering service like Prerender.io.
Slack vs Discord vs WhatsApp: Link Preview Comparison
Different platforms read OG tags differently. Here is a direct comparison of how Slack, Discord, and WhatsApp handle link previews, so you can configure your meta tags to work across all three.
| Feature | Slack | Discord | |
|---|---|---|---|
| og:title | Yes | Yes | Yes |
| og:description | Yes | Yes | Yes |
| og:image | Yes (max 500 KB) | Yes (max 8 MB) | Yes (max 300 KB) |
| og:url | Yes | Yes | Ignored |
| og:site_name | Yes | Yes | No |
| twitter:card | No | No | No |
| JavaScript support | No | No | No |
| Recommended image size | 1200x630 | 1200x630 | 1200x630 |
| Cache duration | ~30 min | ~30 min | Hours to days |
| Disable unfurl from server | Remove og: tags or block Slackbot | Remove og: tags or block Discordbot | Remove og: tags |
See also: Discord link preview guide and WhatsApp link preview guide for platform-specific deep dives.
Why Slack Link Previews Break: 4 Failure Patterns
Most broken Slack previews trace back to one of four root causes. Here is each pattern with a bad and good HTML example.
Pattern 1: JavaScript-Rendered OG Tags
If your framework injects OG tags via JavaScript after the page loads, Slackbot sees an empty head section and cannot build a preview.
Bad: OG tags added by client-side JavaScript
<head> <title>My App</title> <!-- React renders og: tags after hydration — Slackbot never sees them --> </head> <body> <div id="root"></div> <script src="/bundle.js"></script> </body>
Good: OG tags in server-rendered HTML
<head> <meta property="og:title" content="Your Page Title"> <meta property="og:description" content="A clear description under 200 characters."> <meta property="og:image" content="https://example.com/images/preview.jpg"> <meta property="og:url" content="https://example.com/page"> </head>
Pattern 2: Relative or HTTP Image URL
A relative path like /images/preview.jpg is not a valid og:image value. Slackbot does not have a base URL context to resolve it. Similarly, HTTP images are often blocked by Slack's security policy.
Bad: relative path and HTTP URL
<!-- Relative path — Slackbot cannot resolve this --> <meta property="og:image" content="/images/share.jpg"> <!-- HTTP URL — may be blocked by Slack --> <meta property="og:image" content="http://example.com/images/share.jpg">
Good: absolute HTTPS URL
<meta property="og:image" content="https://example.com/images/share.jpg"> <meta property="og:image:width" content="1200"> <meta property="og:image:height" content="630">
Pattern 3: Missing og:title or og:description
Without og:title, Slack has nothing to display as the headline. It may fall back to the HTML <title> tag, but not reliably. Without og:description, the preview appears with a blank or cut-off description area.
Bad: no OG tags at all
<head> <title>My Product Page</title> <meta name="description" content="A description for search engines."> <!-- No og: tags — Slack preview will be minimal or absent --> </head>
Good: full OG set
<head> <title>My Product Page</title> <meta property="og:title" content="My Product — One-Line Value Proposition"> <meta property="og:description" content="What your product does and who it is for, under 160 characters."> <meta property="og:image" content="https://example.com/assets/og-home.jpg"> <meta property="og:url" content="https://example.com/"> <meta property="og:site_name" content="My Product"> <meta property="og:type" content="website"> </head>
Pattern 4: Slackbot Blocked by Server or robots.txt
If your server blocks the Slackbot user-agent — either via a firewall rule, a Cloudflare WAF, or a robots.txt disallow — Slack cannot fetch your page and the preview will not generate. Check your server logs for 403 or 401 responses to requests from Slackbot/1.0.
Bad: robots.txt that blocks all bots
User-agent: * Disallow: /
Good: explicitly allow Slackbot
User-agent: * Disallow: /private/ User-agent: Slackbot Allow: /
Image Requirements for Slack Link Previews
Getting the image right is the most common pain point in Slack preview optimization. Here are the exact requirements.
Recommended Image Size
The recommended og:image size for Slack is 1200x630 pixels (a 1.91:1 aspect ratio). Slack displays images in a wide card format, and this dimension produces a sharp, properly cropped preview on all screen sizes and Slack clients (desktop, web, and mobile).
Smaller images are technically supported, but Slack ignores images smaller than 100x100 pixels entirely. Images between 100x100 and 400x210 may display in a smaller, less prominent format rather than the full-width card layout.
Maximum File Size
Slack enforces a 500 KB maximum file size for og:image. Images above this limit will not be fetched and displayed. This is significantly more restrictive than Discord (8 MB) and requires careful image optimization.
To stay under 500 KB at 1200x630:
- Use JPEG with 75-85% quality for photographs
- Use PNG-8 or optimized PNG-24 for graphics with text
- Use WebP for the best compression-to-quality ratio (Slack supports WebP)
- Run images through a tool like Squoosh, ImageOptim, or TinyPNG before deploying
Supported Formats
Slack supports JPEG, PNG, GIF, and WebP for og:image. SVG is not supported. Animated GIFs are supported in theory but often display as static images in Slack's unfurl cards — the first frame is shown.
HTTPS Required
The image URL must use HTTPS. Slack's crawler will not load images served over plain HTTP. Ensure your image hosting (CDN, S3, or your own server) has a valid SSL certificate.
<meta property="og:image" content="https://example.com/assets/og-share.jpg"> <meta property="og:image:type" content="image/jpeg"> <meta property="og:image:width" content="1200"> <meta property="og:image:height" content="630"> <meta property="og:image:alt" content="Brief description of what the image shows">
How to Disable Slack Link Previews
Sometimes you do not want Slack to generate a preview for your link. There are two approaches depending on whether you are a Slack user or a page owner.
As a Slack User (Suppress a Single Link)
Wrap your URL in angle brackets when pasting it into Slack. This tells Slack to display the link without unfurling it:
<https://example.com/my-page>
Alternatively, go to Slack Preferences > Messages & Media and disable the "Show image previews in messages" option to turn off all link previews globally for your account.
As a Page Owner (Suppress Unfurling of Your Page)
If you want to prevent your pages from generating Slack previews when shared by anyone, you have three options:
- Remove all og: meta tags from the page. Without OG metadata, Slack has nothing to show and typically suppresses the unfurl entirely. Note that this also disables previews on Discord, WhatsApp, LinkedIn, and other platforms.
- Block Slackbot in robots.txt: Add
User-agent: Slackbotfollowed byDisallow: /. This prevents Slackbot from crawling your page. - Return a 401 or 403 for requests from the
Slackbot/1.0user-agent at the server level. This is more aggressive than robots.txt and guarantees Slack cannot access the page.
Testing Your Slack Preview: Use Share Preview
The fastest way to verify your Slack link preview is correct is to test it before sharing. Pasting a link in a Slack channel and waiting to see the unfurl is slow and unreliable — you might be looking at a cached version from 20 minutes ago.
Share Preview shows you exactly what your link looks like as a Slack unfurl, alongside previews for Discord, WhatsApp, Twitter/X, Facebook, and LinkedIn — all in one place. You can see the actual rendered output of your OG tags without waiting for cache refreshes or testing across six different platforms manually.
Share Preview fetches your URL the same way Slack's bot does — no JavaScript execution, raw HTML only — so you get an accurate picture of what the platform's crawler will find. If an OG tag is missing, misconfigured, or blocked, Share Preview flags it with a clear explanation.
See also: complete og:image guide for detailed image optimization across all platforms.
FAQ: Slack Link Previews
Why is my Slack link preview not showing?
The most common reasons are: the og:title or og:description tags are missing, the og:image URL is relative instead of absolute, the image is served over HTTP instead of HTTPS, the image exceeds 500 KB, or the OG tags are rendered by JavaScript rather than present in the raw HTML. Check these in order and test with Share Preview to see what Slackbot actually reads from your page.
How to change a Slack link preview?
Update the og:title, og:description, and og:image tags in your page HTML. Slack caches previews for around 30 minutes, so to see the change immediately, append a query string to the URL when pasting it in Slack (e.g., ?v=2). You cannot edit the preview directly inside Slack.
Why is my Slack link preview image not showing?
If the preview shows title and description but no image, the most likely causes are: the og:image URL is not an absolute HTTPS URL, the image exceeds 500 KB, the image dimensions are under 100x100 pixels, the format is unsupported (use JPEG, PNG, GIF, or WebP), or the server hosting the image blocks Slackbot. Verify the image URL loads in a browser and that nothing in your server config is blocking the Slackbot crawler.
How to disable link preview in Slack?
As a user, wrap the URL in angle brackets when pasting: <https://example.com>. Or go to Slack Preferences > Messages & Media and turn off image previews globally. As a page owner, remove your og: tags or disallow Slackbot in robots.txt to prevent your pages from being unfurled when shared.
Fix Your Slack Preview in Minutes
Share Preview shows you exactly how your link looks in Slack, Discord, WhatsApp, Twitter/X, and LinkedIn — before you share. No account required for the first test.
Test Your Link Preview FreeTest Your Link Preview on All Platforms
See exactly how Discord, Twitter, LinkedIn, and all social platforms will display your link. Catch broken tags before your audience sees them.
Test Your Link Preview Free