OG tags outside the 32KB window
Slackbot only reads the first 32KB of your HTML. If your <head> has large inline styles or scripts before the meta tags, the crawler never reaches them and the link won’t unfurl. Move your OG tags to the top of <head>.
Diagnosis checklist
- Check the 32KB window: view source and confirm
og:title,og:description, andog:imageappear within the first 32KB - Check server-side rendering:
curlyour URL and verify the tags are in the HTML, not injected by JS - Check HTTP status: must be
200 OK; 4xx/5xx errors prevent unfurling - Check HTTPS: Slack requires it; invalid SSL certs also break unfurling
- Check the cache: if you just added tags, Slack may have cached the empty state. Wait 30 minutes or delete the message and re-post
- Check workspace settings: admins can disable link previews entirely
Bot messages
Slack doesn’t auto-unfurl links in bot messages. You need unfurl_links: true in the chat.postMessage call:
{
"channel": "C1234567890",
"text": "Check out https://example.com",
"unfurl_links": true
}
Without that flag, links in bot messages stay as plain text.
Client-side rendering
Slackbot doesn’t run JavaScript. If your app renders OG tags client-side (React, Vue, Angular, etc.), you need SSR, pre-rendering, or static meta tags in your HTML template.
Testing
Simulate Slackbot’s request, including the Range header:
curl -A "Slackbot-LinkExpanding 1.0 (+https://api.slack.com/robots)" \ -H "Range: bytes=0-32768" \ https://yoursite.com/page | grep -i "og:"If your tags show up, use the unfurl debugger to confirm the preview looks right.