Why it happens
WhatsApp previews fail silently with no error message, just a plain URL. The usual suspects:
- Missing Open Graph tags: WhatsApp needs at least
og:titleandog:description(or their HTML fallbacks<title>and<meta name="description">) to generate anything. - Client-side rendered tags: WhatsApp’s crawler doesn’t run JavaScript. If your tags are injected by a SPA framework, the crawler sees an empty page.
- Bad SSL: WhatsApp forces HTTPS. Expired, self-signed, or missing certificates mean no preview.
Diagnosis
- Fetch the page as WhatsApp sees it and verify your meta tags are in the raw HTML:
bash curl -A "WhatsApp/2.23.18.78 i" https://yoursite.com/page - Verify SSL: valid HTTPS certificate, not self-signed.
- Check
robots.txt: make sure you’re not blocking the crawler: “` User-agent: WhatsApp Allow: /
User-agent: facebookexternalhit Allow: / ”` 4. Check response time: WhatsApp gives up after roughly 10 seconds. 5. Use the Facebook Sharing Debugger to see exactly what Meta’s crawler finds.
User-side causes
- Link previews disabled: WhatsApp has a setting under Settings > Privacy > Link Previews. The sender needs to enable it.
- VPN or data saver mode: can block preview generation to save bandwidth.
- Restricted network: corporate firewalls may block outbound preview fetches.
SPA / client-side rendering
If your meta tags only exist after JavaScript runs, WhatsApp won’t see them. Options: server-side rendering, a pre-rendering service, or static meta tags in your HTML shell.
Testing your fix
Run the Facebook Sharing Debugger first, then send a fresh link in a WhatsApp chat to confirm.