Peekly

Bluesky Link Preview Checker

Bluesky copies the card into the post when the post is written. Paste a URL to check the Open Graph tags that copy is made from. The cards below are the other platforms that read the same tags — Peekly does not draw a Bluesky post.

Free. No signup. Public pages only.

How a Bluesky link card works

  • The card is part of the post. The AT Protocol type is app.bsky.embed.external. The record stores the page URI, a title, a description, and an optional thumb. The thumb is a blob on the author's personal data server. It is not a live link back to og:image. Bluesky's post guide says each client fetches and embeds that card, so every reader sees the same preview and the website is not fetched again every time the post is viewed. The official app does the fetch through cardyb: https://cardyb.bsky.app/v1/extract?url= plus the page URL. The record has one card shape. There is no summary versus summary_large_image field, so twitter:card does not pick a different Bluesky layout.
  • Tags and the image. The website-card example in that guide reads og:title, og:description, and og:image from the HTML, then uploads the image. The lexicon caps the thumb blob at 1,000,000 bytes and accepts image/*. Bluesky does not publish a pixel size. A 1200×630 JPEG or PNG is the large-card size used everywhere else, and it stays under that byte cap if you keep the file lean. Nothing in the guide says the fetcher runs JavaScript. Put the tags in the HTML the server returns. og:image should be an absolute https URL. A missing image Content-Type is a reported reason cardyb answers "Unable to serve image from URL". Bluesky does not publish a webmaster user agent. On the public issue tracker, the crawler's default agent was given as Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; Bluesky Cardyb/1.1; +mailto:support@bsky.app) Chrome/W.X.Y.Z Safari/537.36, with a note to keep it stable. If you only serve tags to known bots, allow a user agent containing Bluesky Cardyb.
    <meta property="og:title" content="Page title">
    <meta property="og:description" content="One or two sentences.">
    <meta property="og:image" content="https://example.com/og.png">
  • Debug it, then post again. Request https://cardyb.bsky.app/v1/extract?url= and the page URL. The JSON is the title, description, and image cardyb found. When image points at cardyb's /v1/image proxy, open that URL. An error string there means the image fetch failed. There is no Bluesky tool that rewrites a post already published. The card is part of the record. Change the tags, confirm cardyb, and post the link again. A query string such as ?v=2 is a different URI, so it is a new card. It leaves the original post as it was. This checker shows the tags your server sends. It does not draw the Bluesky card and it does not edit a post.

Tags covered: og:title · og:description · og:image · 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 CacheMastodon Link Preview CheckerMicrosoft Teams Link Preview CheckerFix a Broken Open Graph PreviewAll 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