Peekly

Threads Link Preview Checker

Threads is a Meta app, and Meta does not publish a separate crawler for it. Paste a URL to check the Open Graph tags FacebookExternalHit is documented to read. The cards below are the other platforms that read the same tags — Peekly does not draw a Threads post.

Free. No signup. Public pages only.

How a Threads preview is filled in

  • Tags to put on your page. Meta does not publish a Threads tag list or a Threads pixel size. FacebookExternalHit, the crawler Meta documents for a link shared on its apps, stores a title, a description, and a thumbnail. Those are og:title, og:description, and og:image. og:url should be the canonical URL of the page. Add og:image:width and og:image:height so the image can render on the first share, before the file has been measured. The image rules Facebook publishes for this crawl — at least 200×200, 1200×630 for the large card, under 8 MB, JPEG, GIF, or PNG — are on the Facebook Link Preview Checker page. Use that size. A path with no host, an http:// image, or a file behind a login leaves the thumbnail empty. Nothing on Meta's crawler page says the fetch runs JavaScript. Put the tags in the HTML the server sends. A third-party size table that names Threads is not a spec Meta publishes.
    <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">
    <meta property="og:image:width" content="1200">
    <meta property="og:image:height" content="630">
    <meta property="og:url" content="https://example.com/page">
  • What Meta documents. Meta's web-crawler page says FacebookExternalHit crawls an app or website shared on Meta's family of apps, and the examples it names are Facebook, Instagram, and Messenger. It does not name Threads. The user-agent strings on that page are facebookexternalhit/1.1 (+http://www.facebook.com/externalhit_uatext.php) and facebookexternalhit/1.1. meta-externalagent, meta-webindexer, and meta-externalads are different crawlers. A robots.txt block on those names is not a block on the share crawler, and FacebookExternalHit may bypass robots.txt when it is checking for malware. The same page says the server must support gzip and deflate, Open Graph properties have to appear in the first 1 MB, and the response has to come back within a few seconds. The crawler sends a Range header. Their example is bytes=0-524288. There is no second Threads crawler on the page. The Instagram Link Preview Checker page quotes that crawler in full, because Instagram is one of the apps Meta names.
  • A threads.com URL. The tags above are for a page you publish. A Threads profile is a page Threads publishes. On https://www.threads.com/@zuck, fetched with facebookexternalhit, og:site_name was Threads. og:title was the display name, the @handle, and the words Threads, Say more. og:description was follower and thread counts plus the bio. og:url was https://www.threads.com/@zuck. og:type was listed twice, profile and then article. The Open Graph protocol gives the first tag preference when they conflict. og:image was an absolute URL on cdninstagram.com whose path included the size token stp=dst-jpg_s640x640. There were no og:image:width or og:image:height tags. twitter:card was summary, so a consumer that honors that card shows a small thumbnail, and twitter:image repeated the same file. The image URL carried signature query parameters. It is not a filename you can hard-code. A request for https://www.threads.net/@zuck came back as HTTP 200, not a redirect, and its og:url was still the threads.com profile. On Facebook, likes and shares add up on og:url, so that is the URL the stored card is keyed to. You do not edit these tags. Paste the Threads URL here to see the card other platforms will build. Paste your own page when the question is what a crawler can read.
  • Refresh it. Meta's crawler page says a failed or empty crawl can be repeated in the Sharing Debugger, or with the Sharing API. That is the debugger at developers.facebook.com/tools/debug. You need to be logged in. Scraping again updates what Meta has stored for that URL for FacebookExternalHit. Meta does not publish a separate Threads debugger, and it does not say that a Threads composer reads that cache. This checker shows the tags your server sends. It does not send Meta's Range header, and it does not clear that cache. A query string such as ?v=2 is a different URL. A post that already has a card keeps the one it stored.

Tags covered: og:title · og:description · og:image · og:url · og:type · 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 CheckerFix a Broken Open Graph PreviewInstagram Link Preview CheckerPinterest Link Preview CheckerTikTok Link Preview CheckerYouTube Link Preview CheckerSnapchat Link Preview CheckerHow to Add Open Graph TagsOpen Graph Image Not UpdatingDiscord Link PreviewX (Twitter) Link PreviewWordPress Open GraphShopify Open GraphAll 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