Platform tools tell you what they stored. They do not tell you that the next network will store something else. These are the failures that survive a green debugger.
Stale caches. Meta caches the image by its URL and tells you to publish the new file at a new URL. LinkedIn's refresh does not rewrite posts that already went out. Slack's robots page puts the unfurl cache at around 30 minutes. X, WhatsApp, and Messages do not publish a button for this. Run the URL here to see the tags that are live now, then use the network's own tool where one exists. This checker does not call those tools.
Redirects. This checker follows up to five redirects and rejects a private hop. Share the final public URL anyway. og:url should be that page, not a tracking link. WhatsApp's doc asks for a canonical URL without session parameters.
Relative og:image URLs. WhatsApp requires an absolute image URL. This checker joins a relative URL to the page before it fetches the file, so a preview can look fine here and fail for a crawler that does not do that join. Publish https://β¦.
Wrong content type. A login wall or a soft 404 often returns HTML where the image should be. The checker reports the response content type and flags anything that is not JPEG or PNG. A platform debugger often just shows a missing image. JPEG and PNG are this checker's preferred formats. Meta's image doc does not limit you to those two, and LinkedIn's ad specs (a different surface) allow JPG, PNG, or GIF.
Oversized images. Meta allows up to 8 MB. LinkedIn's sharing module allows 5 MB. WhatsApp wants the image under 600 KB. This checker flags files over 1 MB because that is its own recommendation, which is stricter than Meta and looser than WhatsApp. A file that passes Meta can still fail WhatsApp. The MCP tool compress_image resizes a public image URL. Its default dimensions are 1200Γ630.
Missing twitter:card. X no longer offers the Card Validator preview, so a Facebook-only debugger will not mention the gap. This checker subtracts from the score when twitter:card is missing and still draws an X preview from the tags it found. The suggested meta block defaults that card to summary_large_image.
One image for every URL. A homepage screenshot does not describe a pricing page or a post. Put the tags in the first HTML response. WhatsApp only reads markup inside the first 300 KB, and a crawler that does not run the app will not see tags inserted after load. When each URL needs its own card, generate it. The OG image API returns a CDN URL for og:image. The Next.js guide shows that URL from generateMetadata. The WordPress plugin writes the tags for posts, pages, and WooCommerce products.