ScreenshotNeo

BlogHow-to

How to Get Link Previews on WhatsApp

Turn WhatsApp link previews back on, troubleshoot missing cards, and prepare website metadata for more reliable previews.

By the ScreenshotNeo team1 October 20266 min read

To enable previews for links you send in WhatsApp, open Settings (or tap your profile picture), choose Privacy → Advanced, and turn Disable link previews off. WhatsApp says this option is off by default. When it is enabled, links you send do not generate previews. The setting affects links you send; it does not control previews on links you receive.

  1. Open WhatsApp.
  2. Open Settings. On some versions, tap your profile picture first.
  3. Tap Privacy.
  4. Tap Advanced.
  5. Turn Disable link previews off.
  6. Paste a URL into a chat and wait for WhatsApp to prepare the card before sending it.

WhatsApp describes disabling previews as an optional privacy measure related to protecting the sender’s IP address. Its help guidance also says receiving a link preview does not affect your IP address. See WhatsApp Help Center guidance.

What the setting does—and does not do

Situation What controls it
You send a website URL from the consumer app Your Disable link previews setting
You receive a URL from another person The sender’s message and WhatsApp’s preview processing; your setting does not turn their preview on or off
A business sends messages through the Cloud API The API request’s text.preview_url value
A customer opens a WhatsApp Business short link The business short-link feature, which is separate from website previews

If a preview still does not appear

Turning the setting off allows previews, but it cannot guarantee a card for every URL. Check these items in order:

  1. Confirm the switch. Reopen Privacy → Advanced and verify that Disable link previews is off.
  2. Paste the complete URL. Include https:// and avoid sending only a domain name or an incomplete redirect.
  3. Wait before sending. Paste the link, leave the composer open, and allow WhatsApp time to fetch the page.
  4. Try a fresh message. A preview may not be regenerated for a message that was already sent without one.
  5. Check the URL in a browser. If the page is unavailable, requires a login, blocks crawlers, or redirects incorrectly, WhatsApp may not be able to create a useful card.
  6. Try another URL. This separates an app-setting issue from a problem specific to one website.
  7. Update and restart WhatsApp. App versions and account rollouts can change behavior.
  8. Check the recipient context. A preview in a one-to-one chat, group, community, or Status may not behave identically on every app version.

The official consumer help guidance does not document one universal cause or fix for a missing preview on a particular URL. Treat a URL-specific failure as a page-fetch or metadata problem until testing another URL shows otherwise.

Website metadata for developers

If you own the site, provide standard Open Graph metadata in the document <head>. A third-party-hosted copy labeled WhatsApp developer documentation recommends non-empty og:title, og:description, and og:url values, plus an absolute og:image URL for the thumbnail. That guidance is useful implementation advice, but it is not a current guarantee published on a WhatsApp-owned domain.

<head>
  <meta property="og:title" content="Example product">
  <meta property="og:description" content="A concise description of the page.">
  <meta property="og:url" content="https://example.com/product">
  <meta property="og:image" content="https://example.com/images/product-preview.jpg">
</head>
  • Use the page’s canonical absolute URL for og:url.
  • Return the metadata in the initial HTML response, rather than adding it only after client-side JavaScript runs.
  • Make the image URL publicly reachable over HTTPS.
  • Keep title and description specific to the page being shared.
  • Check redirects, robots rules, authentication, rate limits, and server errors from an external network.

WhatsApp Cloud API: request a preview

For a business sending messages programmatically, Meta’s Cloud API example sets text.preview_url to true. This is an API request option; it is separate from the consumer app’s Privacy setting.

{
  "messaging_product": "whatsapp",
  "to": "RECIPIENT_PHONE_NUMBER",
  "type": "text",
  "text": {
    "preview_url": true,
    "body": "Read the details at https://example.com/product"
  }
}

Send this object to the messages endpoint configured for your WhatsApp Business account, with the authentication and phone-number identifier supplied by Meta. Keep the endpoint, access token, recipient, and API version in environment variables; do not commit credentials.

cURL payload template

curl -X POST "$WHATSAPP_MESSAGES_ENDPOINT" \
  -H "Authorization: Bearer $WHATSAPP_ACCESS_TOKEN" \
  -H "Content-Type: application/json" \
  --data '{
    "messaging_product": "whatsapp",
    "to": "RECIPIENT_PHONE_NUMBER",
    "type": "text",
    "text": {
      "preview_url": true,
      "body": "Read the details at https://example.com/product"
    }
  }'

Python payload template

import os
import requests

payload = {
    "messaging_product": "whatsapp",
    "to": os.environ["RECIPIENT_PHONE_NUMBER"],
    "type": "text",
    "text": {
        "preview_url": True,
        "body": "Read the details at https://example.com/product",
    },
}
response = requests.post(
    os.environ["WHATSAPP_MESSAGES_ENDPOINT"],
    headers={
        "Authorization": f"Bearer {os.environ['WHATSAPP_ACCESS_TOKEN']}",
        "Content-Type": "application/json",
    },
    json=payload,
    timeout=30,
)
response.raise_for_status()
print(response.json())

Node.js payload template

const payload = {
  messaging_product: 'whatsapp',
  to: process.env.RECIPIENT_PHONE_NUMBER,
  type: 'text',
  text: {
    preview_url: true,
    body: 'Read the details at https://example.com/product'
  }
};

const response = await fetch(process.env.WHATSAPP_MESSAGES_ENDPOINT, {
  method: 'POST',
  headers: {
    Authorization: `Bearer ${process.env.WHATSAPP_ACCESS_TOKEN}`,
    'Content-Type': 'application/json'
  },
  body: JSON.stringify(payload)
});

if (!response.ok) throw new Error(`${response.status}: ${await response.text()}`);
console.log(await response.json());

The WhatsApp Business app automatically provides a short link for a business chat. Open Tools → Short link to copy or share it and configure a default message. This link opens a conversation with the business; it does not force a preview for an arbitrary external website.

Meta announced that posting a link to WhatsApp Status would show a visual preview similar to a message preview. The announcement described a rollout over the following weeks, so availability can depend on app version, account, and rollout status. It should not be treated as a guarantee that every current account displays every URL.

Troubleshooting checklist

Symptom Likely cause Fix
No previews for any links you send Disable link previews is on Turn it off under Privacy → Advanced
Only one site fails URL fetch, redirect, access, or metadata issue Test another URL and inspect the page’s public HTML response
Preview appears late WhatsApp is still fetching the page Wait before sending; avoid repeatedly editing the message
Business API message has no card preview_url is missing or false Set text.preview_url to true and verify the request response
Short link opens chat but has no website card Short links are chat entry points Use a separate external URL when you need a website preview

Or skip the browser setup

If your goal is to create reliable page images for link cards, documentation, QA, or sharing, ScreenshotNeo returns a screenshot or PDF from one GET request. It removes cookie banners, newsletter popups, and chat widgets before capture; bot checks, blank pages, failed loads, timeouts, and cache hits are not billed; and its MCP server lets AI agents take screenshots.

It supports PNG, JPEG, WebP, and PDF output, full-page or CSS-element capture, custom CSS and JavaScript, device presets, dark mode, waiting rules, headers, cookies, blocking rules, caching, signed links, asynchronous jobs, bulk capture, and usage reporting. See the ScreenshotNeo API documentation for the available options.

curl -G "https://api.screenshotneo.com/v1/shot" -d access_key=YOUR_API_KEY --data-urlencode url=https://example.com -o shot.webp
import requests
r = requests.get("https://api.screenshotneo.com/v1/shot", params={"access_key": "YOUR_API_KEY", "url": "https://example.com"}, timeout=90)
open("shot.webp", "wb").write(r.content)
const q = new URLSearchParams({ access_key: 'YOUR_API_KEY', url: 'https://example.com' });
const res = await fetch(`https://api.screenshotneo.com/v1/shot?${q}`);

Free accounts include 1,000 screenshots per month with no card. Paid plans start at $5 for 3,000 screenshots. Create a free ScreenshotNeo account.

FAQ

Does turning previews off stop me from seeing previews?

No. WhatsApp’s documented switch controls previews on links you send. Receiving previews is treated separately.

Can I force a preview for every URL?

No. The setting permits preview generation, but WhatsApp does not document a universal guarantee for every page.

Is preview_url the same as the Privacy setting?

No. preview_url: true is for a Cloud API text message. The Privacy setting is for the consumer app.

No. It opens a chat with the business and is a different feature from an external website preview.