OneWebDesk

Link Previews Not Showing (Kakao, Slack, X)? Fixing OG Tags

Why link previews are missing or stale when sharing, and how to fix OG tags and scraper caches.

You paste a link into Slack and nothing unfurls. You share your redesigned site in a Kakao chat and the preview still shows a screenshot from three months ago. On Facebook the wrong photo gets picked; on X the card never appears at all. Nearly every one of these failures comes down to two causes:broken or missing Open Graph tags, or a platform scraper still serving a cached copy of your old page.

This guide walks through how link previews actually get built (and why JavaScript-rendered tags are invisible to most bots), the exact tags and image specs you need, how to purge the cache on each major platform, and how to diagnose the annoying “everything shows except the image” case.

How scrapers build a preview

The preview card is not generated by the recipient’s browser. When a link is shared, the platform’s own bot makes a server-side HTTP request to your URL, downloads the raw HTML, and reads the og:title, og:description, and og:image meta tags out of the <head>. Three consequences follow:

  • Most scrapers never execute JavaScript. If the tags only exist after your client-side framework hydrates, the bot sees a page without them — even though they look fine in DevTools.
  • Single-page apps therefore need SSR, static prerendering, or dynamic rendering (serving a prerendered snapshot to bot user agents) for previews to work.
  • Each bot identifies itself with a distinct User-Agent — facebookexternalhit, Slackbot-LinkExpanding, Twitterbot, kakaotalk-scrap. A firewall or bot-protection rule that returns 403 to these agents silently kills your previews.

To see your page exactly the way a scraper does, drop the URL into the Open Graph preview tool — it renders the resulting card the way Kakao, Slack, and Facebook would show it.

The tags you need, and the image spec that actually works

A reliable preview needs four Open Graph tags plus one Twitter tag, all inside <head> of the server-rendered HTML:

  • og:title — the card headline. Keep it under roughly 60 characters to avoid truncation.
  • og:description — one or two sentences; platforms cut it anywhere between 80 and 200 characters.
  • og:image — must be an absolute https URL. Relative paths like /img/thumb.png are ignored by most scrapers. The safe universal size is 1200×630 px (1.91:1), JPG or PNG, ideally under 1 MB (Facebook allows up to 8 MB, but huge files frequently time out on other platforms).
  • og:url — the canonical URL, so tracking-parameter variants all resolve to one preview.
  • twitter:card — set to summary_large_image if you want the big-thumbnail layout on X. X falls back to OG tags for content, but this tag decides the card format.

Rather than hand-typing the block (and risking a missing quote or a relative image path), fill in your title, description and image once in the Open Graph tag generator and paste the generated markup into your template.

Why the preview shows old content — purging scraper caches

If you have already fixed the tags and the preview is still stale, your code is fine: the platform simply hasn’t re-fetched your page. Scrapers cache the result of their first crawl, sometimes for days or weeks. Every major platform has its own way to force a refresh:

PlatformDebugger / cache purgeNotes
KakaoTalkKakao Developers sharing debugger — developers.kakao.com/tool/debugger/sharingEnter the URL and click the cache-clear (initialize) button. Requires a Kakao account.
Facebook / MessengerSharing Debugger — developers.facebook.com/tools/debugClick “Scrape Again”. Also shows the exact response the bot received — the best diagnostic tool of the bunch.
SlackNo public purge tool — cache is short-lived (roughly 30 minutes)Wait a bit and post the link again; in a hurry, append a query string like ?v=2 so Slack treats it as a new URL.
X (Twitter)Card Validator no longer renders previews — no official purgeCache lasts about 7 days. Change a query parameter on the URL or wait it out.
LinkedInPost Inspector — linkedin.com/post-inspectorInspecting a URL refreshes its cached preview on the spot.

Worked example: Kakao keeps showing the old thumbnail

Scenario: you swapped your store’s hero image and updated og:image, but a KakaoTalk share still displays the old product photo. Here is the fix, step by step:

  1. Confirm the new tag is actually in the HTML your server sends. Run the URL through the SEO meta tag checker — it reads the server response, so a stale CDN copy or an undeployed change shows up immediately.
  2. Check that og:image is an absolute https:// URL and that opening it directly in a private browser window returns the new image.
  3. Go to developers.kakao.com/tool/debugger/sharing, sign in with a Kakao account, enter the URL, and hit the cache-clear button.
  4. Re-scrape in the same screen and verify the debugger now shows the new title, description, and image. If chats still show the old card, remember that already-sent messages keep their original preview — send the link in a fresh message.

Preview appears, but the image is missing

When the title and description resolve but the thumbnail stays blank, work down this list:

  • Relative URLog:image starts with / instead of a full https address. Replace with an absolute URL.
  • Bot blockedrobots.txt disallows the image path, or a WAF/CDN rule serves 403 to scraper user agents like facebookexternalhit or kakaotalk-scrap.
  • Too large — multi-megabyte originals often time out before the scraper finishes downloading. Resize to 1200×630 and keep it under 1 MB.
  • Wrong Content-Type — the image URL returns text/html (a redirect page, hotlink protection, a login wall) instead of an image MIME type, so the scraper discards it.
  • Certificate problems — an invalid SSL certificate on the image host makes scrapers refuse the download even over https.

After each fix, re-check the card in the Open Graph preview tool first, and only then purge the platform caches — otherwise you burn a re-scrape on a page that is still broken.

Frequently asked questions

My link shows no preview at all in Slack or Kakao. Where do I start?
Check the raw HTML your server returns: the og:title and og:image tags must be present without JavaScript running, because most scrapers do not execute JS. Then make sure your firewall or bot protection is not blocking scraper user agents, and that og:image is an absolute https URL.
I fixed my OG tags but the preview is still the old one. Why?
The platform's scraper cached its earlier crawl. Use the Kakao Developers sharing debugger to clear Kakao's cache, Facebook's Sharing Debugger with Scrape Again, and LinkedIn's Post Inspector. Slack refreshes on its own after about 30 minutes; X has no official purge, so changing a query parameter on the URL is the practical workaround.
What size should the og:image be?
1200×630 pixels (a 1.91:1 ratio) renders well everywhere — Facebook, Kakao, Slack, X, and LinkedIn. Use JPG or PNG and keep the file under about 1 MB. Images smaller than roughly 200×200 or weighing several megabytes get dropped by some platforms.
My site is a React/Vue SPA. Do I have to move to full SSR to get previews?
Not necessarily. Scrapers just need the tags in the first HTML response. You can prerender only the shareable pages statically, or use dynamic rendering that serves a prerendered snapshot to bot user agents while normal visitors get the SPA.
Will messages I already sent update after I purge the cache?
No. A message keeps the preview that was rendered when it was sent. After clearing the cache, share the link again in a new message to see the updated card.

Tools to use with this guide

Related guides