How Facebook Crawls Your Pages

Understanding facebookexternalhit and how it fetches your link previews

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

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