Your page looks fine in the browser, but when someone shares the URL the image is missing or wrong. Here are the seven most common causes and how to fix each one.
1. HTTP Instead of HTTPS Image URL
Twitter/X and iMessage silently refuse to load images served over HTTP. If your og:image URL starts with http://, the image will not appear — no error, no fallback, just blank. Fix: ensure all og:image URLs use https://.
2. Image Smaller Than Platform Minimum
LinkedIn hides og:image entirely if the image is below 200×200px. Twitter renders a tiny square instead of a large card. Fix: always use at least 600×315px, ideally 1200×630px.
3. CORS or Bot-Blocking on the Image URL
Social crawlers don't run JavaScript and don't send browser cookies. If your image URL requires authentication, is hosted behind a firewall, or returns 403 to non-browser user agents, crawlers get a 403 or 404 and skip the image. Fix: ensure the og:image URL is publicly accessible to any HTTP client.
4. Wrong Aspect Ratio
Twitter crops images to 2:1 for summary_large_image cards. If your image is 1:1, you get a centred-crop that may look wrong. LinkedIn expects 1.91:1. If you only have a square image, switch to twitter:card="summary" to get a clean square thumbnail instead of a badly-cropped 2:1 banner.
5. OG Tags Not in Server-Rendered HTML
If your page is a single-page app that renders content via JavaScript, social crawlers typically see an empty shell. The og: meta tags must be present in the HTML response from the server before any JavaScript runs. Fix: use SSR (Next.js, Nuxt, SvelteKit) or static generation, or use a prerendering service.
6. Stale Platform Cache
Platforms aggressively cache OG previews. LinkedIn caches for up to 7 days. Facebook caches for ~30 days. After fixing your OG tags, use each platform's official tool to force a re-crawl: LinkedIn Post Inspector, Facebook Sharing Debugger, Twitter Card Validator.
7. Relative Image URL
A relative URL like /images/og.jpg is invalid for og:image — crawlers don't always resolve relative URLs. Fix: always use an absolute URL with the full protocol and domain: https://example.com/images/og.jpg.