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.

A correct Slack link unfurl looks like this:
share-preview.com
How to Control Slack Link Previews (Fix When They Break)
Slack link preview not showing? Learn which OG tags Slack reads, why previews break, and how to fix them in minutes.
[ og:image — 1200 x 630 — HTTPS ]

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 WhatsApp
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

HTML as Slackbot sees it (no JS executed)
<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

Server-rendered HTML (Next.js SSR, static HTML, etc.)
<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

Broken og:image values
<!-- 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

Correct og:image
<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

Page with no OG markup
<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

Complete OG markup
<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

robots.txt
User-agent: *
Disallow: /

Good: explicitly allow Slackbot

robots.txt with Slackbot allowed
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.

Optimal og:image markup for Slack
<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:

Paste in Slack to suppress unfurl
<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:

  1. 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.
  2. Block Slackbot in robots.txt: Add User-agent: Slackbot followed by Disallow: /. This prevents Slackbot from crawling your page.
  3. Return a 401 or 403 for requests from the Slackbot/1.0 user-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.

Share Preview shows you your Slack unfurl before you share:
share-preview.com
How to Control Slack Link Previews (Fix When They Break)
Which OG tags Slack reads, why link previews break, image requirements, and how to test your preview before sharing.
[ Preview renders here — 1200 x 630 ]
Test Your Link Preview Free →

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 Free

Test 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