Peekly

Fix a broken Open Graph preview

A stale or empty card comes from the HTML the crawler received, the image request, or a preview the platform already stored. Work the list in order. Paste the public URL above. If this checker and the platform disagree, the page is fine and the platform is serving a stored card.

Free. No signup. Public pages only.

Checklist

  • Read the HTML the server sends. View the page source, or curl the URL, and read the bytes of the response. A tag that appears only after JavaScript runs is invisible to a crawler that does not execute it. You want og:title, og:description, and og:image in that first response. og:image has to be an absolute https URL. A path with no host is the usual reason the image slot is empty. og:url should be the canonical URL of this page. On Facebook, likes and shares add up on og:url, so a wrong one attaches a different card. On Mastodon, a same-host og:url is the key the card is stored under. If the title in the card is your site name, or a template such as "Loading", the tag is present and the value is wrong. If this checker still shows the old title, the HTML being fetched is the old HTML: a CDN, a cached render, or a tag that never made it into the response.
  • Open the image URL on its own. The og:image URL should return an image, with a Content-Type such as image/jpeg or image/png, and no login page in front of it. SVG is a miss where a platform publishes a format list. Facebook's guide lists JPEG, GIF, and PNG. X's card docs list JPG, PNG, WEBP, and GIF, and not SVG. The size that satisfies the published large-card rules is 1200×630. That is Facebook's high-resolution size, at about 1.91:1, and the file must not exceed 8 MB. X's summary_large_image cap is 5 MB. The Open Graph Image Size page has the rest of the published numbers. This checker downloads the image and reports the dimensions, the type, and whether the file loaded. A missing Content-Type is also a reported reason a Bluesky card loses its image. The Bluesky Link Preview Checker page covers that fetch.
  • See if the crawler was blocked. A 401, a 403, a bot challenge, or a firewall rule leaves the platform with no tags. Some sites only emit Open Graph tags for a user agent they recognize. This checker sends a user agent that includes Twitterbot. That is enough for many of those pages, including a Next.js page on the htmlLimitedBots list. The Next.js Open Graph page explains that case. It is not the agent Bluesky, Mastodon, or Teams sends. If this checker looks right and one platform is still blank, fetch the URL with that platform's agent and read the HTML. The Bluesky, Mastodon, Slack, and Microsoft Teams guides name the agents that are published or that those projects have described. Private and localhost URLs cannot be checked from here.
  • Decide if the card is cached. Editing the tags updates the next fetch. It does not rewrite a card a platform already saved, and it does not rewrite a message or post already sent. The Refresh a Link Preview Cache page lists the tool each platform actually documents. Facebook's is the Sharing Debugger. LinkedIn's is Post Inspector. Telegram's is @WebpageBot. A query string such as ?v=2 is a different URL. Use it to prove the new tags. The original URL still shows the stored card until that platform fetches it again. Bluesky stores the card inside the post, so a new post is the update. Mastodon keeps a successful card on each server for about two weeks. Teams documents a 30-minute cache for an app's link unfurl, and no debugger for the ordinary website preview.

Tags covered: og:title · og:description · og:image · og:url · og:image:width · og:image:height · twitter:card

More checkers

Twitter Card ValidatorOpen Graph CheckerLinkedIn Link Preview CheckerDiscord Embed PreviewWhatsApp Link Preview CheckerSlack Link Preview CheckeriMessage Link Preview CheckerFacebook Link Preview CheckerOpen Graph Image SizeTelegram Link Preview CheckerReddit Link Preview CheckerNext.js Open GraphRefresh a Link Preview CacheBluesky Link Preview CheckerMastodon Link Preview CheckerMicrosoft Teams Link Preview CheckerAll platforms

What each platform reads

  • X / Twittertwitter:card, twitter:* → og:* fallback1200×630 (min 300×157), < 5 MB
  • Facebookog:title, og:description, og:image1200×630, 1.91:1
  • LinkedInog:title, og:image (og: only)1200×627, 1.91:1
  • Discordog:site_name, og:*, theme-color, twitter:cardLarge image needs summary_large_image
  • Slackog:site_name, og:title, og:description, og:image1200×630
  • WhatsAppog:title, og:description, og:imageKeep < 300 KB

Guidance based on each platform's public documentation and observed behavior. Platforms change their rules without notice.

FAQ

+Is Peekly free?

Yes. Checking a single URL is free forever — no signup and no limit on one-off checks. Batch watching and monitoring may arrive later as a paid Pro plan; the free single-URL tool stays.

+Why does my link show no image when I share it?

Usually one of four things: there's no og:image tag, the image URL is relative instead of absolute, the image is behind a login, firewall or bot block, or the file is too big or in an unsupported format like SVG. Peekly checks all four and tells you which one it is.

+What size should my og:image be?

1200×630 pixels (a 1.91:1 ratio) as a PNG or JPG under about 300 KB. That size works for large cards on X, Facebook, LinkedIn, Discord, Slack and WhatsApp.

+Do I need twitter: tags if I already have Open Graph tags?

X reads og:title, og:description and og:image as fallbacks, but you still need twitter:card set to summary_large_image if you want the big image card. Without it, X shows a small thumbnail.

+I fixed my tags but the old preview still shows. Why?

Platforms cache link previews, sometimes for days. Facebook and LinkedIn let you force a refresh with their own debugging tools. On X, Slack and Discord the cache usually expires on its own, or you can add a query string such as ?v=2 to the URL.

+Do you store the pages I check?

No. We fetch the page once to read its <head>, show you the result, and don't save the page or the result. We only fetch public http(s) URLs, and private or internal addresses are blocked.

+Are the previews pixel-perfect?

They're close approximations of each platform's current card layout, built from the same tags the platforms read. Platforms change their designs from time to time, so treat them as a very good guide rather than a screenshot.

$9

One time

A written fix for the batch.

Up to 25 URLs. We check og:image, Twitter cards, size, redirects, and cache, then send copy-paste meta tags within 48 hours. The free single-URL check stays free.

Get the fix report — $9