The facebookexternalhit crawler
When a URL is shared on Facebook, Messenger, or Instagram, Meta’s crawler fetches the page and extracts meta tags for the link preview. It identifies itself as:
facebookexternalhit/1.1 (+http://www.facebook.com/externalhit_uatext.php)meta-externalagent/1.1
The crawler doesn’t execute JavaScript. Your OG tags must be in the raw HTML the server returns.
The 60 KB parsing limit
Facebook only parses the first ~60 KB of your HTML. If your <meta> tags fall after 60 KB of inline CSS, scripts, or other markup, the crawler never sees them. Place OG tags as early in the <head> as possible, ideally right after <meta charset>.
SPAs need server rendering
If your meta tags are injected by client-side JS, Facebook won’t see them. You need SSR, pre-rendering, or static meta tags in your HTML shell before any JavaScript runs.
Redirects and robots.txt
Facebook follows 301/302 redirects but may give up on long chains. Unlike search engine crawlers, facebookexternalhit doesn’t reliably obey robots.txt and behaves more like a scraper. Blocking it in robots.txt may not actually prevent access attempts.
Testing crawler access
curl -A "facebookexternalhit/1.1" https://example.com/your-pageIf your <meta> tags appear in the first 60 KB of the response, you’re set. For a definitive check, use the Sharing Debugger to see exactly what Facebook extracts.