Troubleshooting

Link preview not showing? A step-by-step fix

A shared link comes up as a bare blue box, the wrong picture, or a title you changed last week. Nearly every case is one of six causes. Work through them in this order — it's arranged so the most common, easiest-to-miss problems come first.

1. The tags are in the <head>, not the <body>

Open Graph and Twitter tags must live inside <head>. Crawlers read the head and frequently stop there; a tag that a template accidentally rendered into the body is invisible to them. View source (not the live DOM — the raw HTML) and confirm your og: tags sit above </head>.

2. You changed the tags but the platform cached the old ones

This is the number-one false alarm. Platforms cache a preview the first time any link is shared — often for days. You fix your tags, re-post, and see the old card. Your markup is fine; the cache is stale. Force a fresh read:

  • Facebook & WhatsApp: Sharing Debugger → "Scrape Again". WhatsApp uses Facebook's cache, so this fixes both.
  • LinkedIn: Post Inspector re-fetches on load.
  • X (Twitter): the Card Validator is gone — add ?v=2 to the URL to defeat the cache, then post.
  • Slack / Discord: a query-string change (?x=1) forces a new unfurl.
Always re-scrape after an edit. If a card looks wrong, assume the cache before you assume your code — and confirm by loading the URL in the debugger, which shows you exactly what the crawler currently sees.

3. The image URL is relative, not absolute

The most common reason the image alone is missing. og:image must be a full https:// URL:

<!-- crawler can't resolve this --> <meta property="og:image" content="/images/preview.jpg"> <!-- correct --> <meta property="og:image" content="https://yoursite.com/images/preview.jpg">

Same applies to og:url. External crawlers have no base to resolve a relative path against, so it fails silently.

4. The crawler can't reach the page or the image

If the preview is blank everywhere, the crawler may be blocked before it reads a single tag. Check:

  • robots.txt isn't disallowing the crawler. Social bots (facebookexternalhit, LinkedInBot, Twitterbot, Slackbot) must be allowed to fetch both the page and the image path.
  • The page isn't behind a login, paywall or staging password. If a logged-out visitor can't see it, neither can the crawler. (For unpublished pages, use this tool's Manual Input mode to preview before launch.)
  • The image returns HTTP 200, not a redirect chain or 403. Some crawlers won't follow redirects to the image.
  • No hotlink protection on the image host that blocks requests without your own referer.

5. property vs name is swapped

Open Graph uses property=; Twitter uses name=. Mix them up and the tag is ignored without any error message:

<meta property="og:title" content="…"> <!-- OG: property --> <meta name="twitter:card" content="…"> <!-- Twitter: name -->

If Facebook works but X doesn't (or vice versa), this mismatch is the first thing to check.

6. Required tags are missing or malformed

A valid card needs, at minimum, og:title, og:type, og:image and og:url. Also watch for:

  • An og:image that's too small (under ~200×200) — some platforms drop it or fall back to a tiny thumbnail.
  • An unclosed or duplicated tag earlier in the head that breaks parsing.
  • An SVG or WebP image — use PNG or JPG (see image size & format).

The fastest way to find it

Rather than guess, read what the crawler reads. Paste the live URL into the OG Preview tool in Fetch mode: it lists the tags it found and the ones it didn't, so a missing og:image or a swapped attribute shows up immediately. Then fix, re-scrape in the platform's own debugger, and share again.

Quick diagnostic order

  1. View raw source — are the tags in <head>?
  2. Re-scrape in the Facebook / LinkedIn debugger — was it just the cache?
  3. Is og:image an absolute https:// URL that returns 200?
  4. Can a logged-out user (and a bot) reach the page and image?
  5. property= for OG, name= for Twitter?
  6. Are title, type, image and url all present, image PNG/JPG?

Next: the perfect OG image · how each platform reads your tags · check your page now