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