Guide

Facebook link preview: Open Graph checklist

When someone shares a URL on Facebook (or other Meta surfaces that use the same scraper), Meta fetches the page, reads Open Graph tags, and caches a card. Relative images, login walls, and an un-rescraped cache are the usual reasons the preview looks empty or stuck on an old version.

CardScope fetches the URL from the edge and rebuilds a diagnostic shell from the tags it finds. It is not a pixel-perfect Facebook UI — Meta’s crop, type sizing, and timing are their own. Use CardScope to confirm the live tags; use Meta’s Sharing Debugger to refresh Meta’s cache.

How Facebook / Meta builds the card

Meta’s crawler hits your permalink, reads meta tags (chiefly Open Graph), and stores a snapshot for that URL. In practice it cares about:

Meta does not re-read your HTML on every share. View-source can look correct while Facebook still shows yesterday’s card until you force a rescrape. See clear Open Graph cache for the fix → verify → rescrape workflow across clients.

Checklist before you share

  1. og:title — specific to the page, not only the brand name.
  2. og:description — one clear sentence that matches the content.
  3. og:image — absolute https:// URL. Landscape ~1200×630 is a widely safe default shared with other networks.
  4. Publicly fetchable image — no login, no signed cookie that expires for the crawler. Open the image URL in a private window; if you cannot see the file, Meta often cannot either.
  5. Stable permalink — one canonical URL in shares and in og:url.
  6. Rescrape after ship — when tags are verified, use the Meta Sharing Debugger so Facebook sees the new snapshot.

Tags that matter

Tag / signal Role Practical check
og:title Card headline Specific, not brand-only
og:description Supporting text Present and matches the page
og:image Preview image Absolute https, anonymous GET returns an image
og:image:width / height Hints for crop Set when you can (~1200×630)
og:url / canonical Identity / cache key Stable permalink
og:type Object type website or article as appropriate
fb:app_id App / Insights linking Optional for a plain share card

A minimal set

If you only set six things for Facebook-facing shares, set these:

<meta property="og:title" content="A specific title, not the brand name">
<meta property="og:description" content="One sentence that matches the page.">
<meta property="og:image" content="https://example.com/og.png">
<meta property="og:image:width" content="1200">
<meta property="og:image:height" content="630">
<meta property="og:url" content="https://example.com/permalink">

Same foundation as WhatsApp / Telegram, Slack vs Discord, and LinkedIn vs X — one solid OG set, then client-specific tools where they exist.

Workflow: fix → verify → rescrape

  1. Fix the live tags on the public permalink (absolute image, stable URL, title and description that match).
  2. Verify with CardScope. Paste the permalink. Confirm the tag table. If CardScope is wrong, the deploy is wrong — stop before touching Meta’s debugger.
  3. Rescrape with the Meta Sharing Debugger. Open the Meta Sharing Debugger, paste the same permalink, scrape, then use “Scrape Again” until the debugger shows the new tags.
  4. Re-share in Facebook after the debugger is current. CardScope does not clear Meta’s cache.

FAQ

Does Facebook use Open Graph?

Yes. Meta’s crawler reads Open Graph tags (og:title, og:description, og:image, og:url, and related hints) when it builds a link preview. Layout and crop are Meta’s own and are not pixel-identical to CardScope shells.

Why is my preview missing the image?

Relative og:image paths often break. Auth-walled, hotlink-blocked, or non-HTTPS images fail when the crawler cannot fetch them. Use an absolute https:// image URL that returns a real image to an anonymous request, then rescrape.

Can CardScope clear Facebook’s cache?

No. CardScope shows the tags it fetched right now. To refresh Meta’s snapshot, use the Sharing Debugger after the live tags are correct — details in the clear OG cache guide.

Do I need fb:app_id for a basic card?

A solid Open Graph set is enough for most public link cards. fb:app_id matters more for app-linked features and Insights; it is optional for a plain share card.

Is CardScope free?

Three free checks per day per IP, no account. Pro is $19 once for unlimited checks. We parse HTML in memory and discard it — rate limits store a hash of your IP for 48 hours, not the page.

Check a URL on CardScope

Paste the permalink. You get reconstructed shells for the clients CardScope supports, the tag table, and a fix checklist — so you know the live tags are right before you rescrape Facebook. Three free checks per day per IP, no account. Pro is $19 once if you want unlimited checks. We parse HTML in memory and discard it — rate limits store a hash of your IP for 48 hours, not the page.

Try a URL