How Teams Crawls Your Pages

Understanding the SkypeUriPreview crawler and how it fetches link unfurls

The SkypeUriPreview crawler

Teams fetches pages using SkypeUriPreview Preview/0.5, a user agent inherited from the Skype era and still shared across Microsoft’s messaging products. It runs server-side, fetches raw HTML, and parses meta tags from it.

No JavaScript execution

SkypeUriPreview does not execute JavaScript. OG and Twitter Card tags must be in the initial HTML response. If your site renders meta tags client-side (React, Vue, Angular), Teams will see nothing – you need SSR or pre-rendering.

Image proxying through Microsoft servers

Teams re-proxies images through Microsoft’s own CDN instead of hotlinking your original URL. Your image server needs to be reachable at crawl time, but users load the image from Microsoft’s proxy. This also means updating the image at the same URL won’t immediately update the Teams preview – the proxy cache is independent.

Response requirements

The page must return 200 OK with Content-Type: text/html. Redirects are followed, but pages behind authentication (401, 403) won’t generate unfurls. Slow responses may time out.

robots.txt behavior

SkypeUriPreview respects robots.txt. A blanket Disallow: / kills Teams unfurls:

User-agent: SkypeUriPreview
Allow: /

Checking if the crawler can reach your page

curl -A "SkypeUriPreview Preview/0.5" https://example.com/your-page

If you see your <meta> tags in the response, Teams will too. A 403 means your robots.txt, WAF rules, or bot-blocking middleware is interfering.