DEV Community

proovd
proovd

Posted on

Why Your Link Preview Isn't Showing Up on Discord or Slack (And How to Actually Fix It)

If you've ever pasted a link into Discord or Slack and watched it show up as a bare, ugly URL with no image, no title, no description, you already know how annoying this is. Worse, it usually happens at the worst possible time: right before a launch, a demo, or a message you wanted to look good.

Here's what's actually going on, and how to fix it without guessing.

Why this happens

Discord, Slack, and most chat apps don't render your page. They read a handful of meta tags in your page's <head> and build the preview from those. If those tags are missing, wrong, or unreachable, the preview falls back to nothing.

The tags that matter most:

<meta property="og:title" content="Your Page Title" />
<meta property="og:description" content="A short, compelling description." />
<meta property="og:image" content="https://yoursite.com/preview-image.png" />
<meta property="og:url" content="https://yoursite.com/your-page" />
Enter fullscreen mode Exit fullscreen mode

If any of these are missing, the platform either shows a partial preview or skips it entirely.

The usual culprits

1. No og:image, or an image that's broken/too small.
Most platforms expect a minimum image size (commonly around 1200x630px). A missing or undersized image is the single most common reason previews look broken.

2. The image URL isn't publicly reachable.
If your og:image points to a localhost path, a private CDN, or anything behind auth, the platform's crawler can't fetch it. There's no image then, even though the tag is technically correct.

3. Caching.
This one trips people up constantly. Discord, Slack, and similar platforms cache the preview the first time a link is shared. If you fix your meta tags after that, the old broken preview can stick around for hours or days because you're seeing a cached version, not a live fetch. Each platform has its own way to force a re-scrape (sometimes you just have to wait it out).

4. Conflicting or duplicate tags.
Multiple og:image tags, or a CMS plugin silently adding its own tags on top of yours, can cause platforms to pick the wrong one or ignore them altogether.

5. The crawler is blocked.
If your robots.txt or server config blocks bot user agents broadly, you might be accidentally blocking the platform's preview crawler along with everything else.

How to actually debug it

Rather than guessing and refreshing, check what the platform's crawler is actually seeing, not what your browser sees. Browser dev tools show you the rendered DOM, but most preview crawlers fetch the raw HTML before JavaScript runs, so client-side-rendered meta tags often don't show up at all.

I ended up building a small free tool for this myself after running into the problem too many times: proovd.in. Paste a URL and it shows you exactly what Discord, Slack, LinkedIn, and Twitter/X will see for that page's preview, including which tags are missing or broken, before you post it anywhere.

Quick checklist

  • [ ] og:title, og:description, og:image, og:url are all present
  • [ ] og:image is a full absolute URL (not relative), publicly reachable, and ideally 1200x630px or larger
  • [ ] No duplicate or conflicting OG tags from a CMS plugin
  • [ ] Tags are present in the raw server-rendered HTML, not injected client-side via JS
  • [ ] If it's still showing an old/broken preview, it's probably cached. Check the platform's specific re-scrape method rather than assuming your fix didn't work

Hope this saves someone the same hour of confusion it cost me. If you've run into a weirder version of this problem, I'd genuinely like to hear it in the comments.

Top comments (0)