Peekly

Microsoft Teams Link Preview Checker

Teams builds a card from the page when the link is shared. Paste a URL to check the title, description, and image that card is allowed to use. The cards below are the other platforms that read the same tags — Peekly does not draw a Teams message.

Free. No signup. Public pages only.

How Teams unfurls a link

  • The tags Microsoft documents. The website-preview guide on Microsoft Learn says a preview needs a thumbnail, or both a title and a description. All three is what they recommend. Title is meta name="title" or og:title. Description is meta name="description" or og:description. The thumbnail has no plain-HTML version. It is og:image, and Microsoft's example is an absolute URL. The guide does not publish a pixel size, a file-size cap, or a format list. Use the same 1200×630 JPEG or PNG you use for the other large cards. A page can also add schema.org JSON-LD. Teams documents micro-capability templates that turn a type such as Article into a richer Adaptive Card, with no Teams app installed. That path is separate from the three tags above. Keep the JSON-LD in the HTML the server sends.
    <meta name="title" content="Page title">
    <meta property="og:title" content="Page title">
    <meta name="description" content="One or two sentences.">
    <meta property="og:description" content="One or two sentences.">
    <meta property="og:image" content="https://example.com/og.png">
  • When the card is skipped. The same guide says a URL that requires authentication can still be shared, and the preview is not created. A messaging policy can turn URL previews off for a whole organization. The Teams admin docs call that setting URL previews. No tag overrides it. Nothing in the website-preview guide says the crawler runs JavaScript. Tags that exist only after the page hydrates are a common reason the card is empty. Microsoft does not publish a crawler user agent for this preview. People inspecting requests have reported an agent containing SkypeUriPreview. If you filter bots, look in your own logs for the token that actually arrives. In one public report, a page with different twitter:, og:, and document-title values showed the twitter: title, description, and image in Teams. With those twitter: names misspelled, the card showed the document title and the meta description, not the og: values. Microsoft support did not confirm an order. Set the og: text, the meta description, meta name="title", and the twitter: text to the same words, and point twitter:image and og:image at the same file.
  • App unfurling is a second path. A Teams app can register a domain and answer composeExtension/queryLink with its own card. That runs only where the app is installed. It does not replace the website tags for everyone else. Microsoft documents that this unfurl result is cached for 30 minutes. An app can send a setCachePolicy action of no-cache so Teams does not keep that app's card. The website-preview guide does not publish a separate TTL, and it does not publish a debugger. A message already sent keeps the card it got. A query string such as ?v=2 is a different URL. This checker shows the tags your server sends. It does not clear a Teams cache.

Tags covered: og:title · og:description · og:image · twitter:title · twitter:description · twitter:image

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 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