Why Your Social Media Links Look Broken (And How to Fix Them)
You shared a link on LinkedIn and instead of a rich preview card with an image, title, and description — you got a blank box. Or worse, the wrong image. Or a title from three redesigns ago. Broken social media previews are one of the most common and most visible problems in digital marketing. Here is why they happen and exactly how to fix each one.
Why social media previews break
When you paste a URL into a social media post, the platform sends a crawler to fetch your page and extract preview information from the HTML. If the crawler cannot find what it needs — or finds something malformed — the preview breaks. Here are the six most common causes:
- Missing OG tags
- The page has no Open Graph meta tags in the
<head>. Withoutog:title,og:description, andog:image, the platform has nothing to display. Some platforms attempt to guess using the page’s<title>tag and the first image they find, but the result is almost always wrong — a navigation icon as the preview image, or a truncated page title that makes no sense. - Relative image URL
- The
og:imagetag exists but uses a relative path like/images/og.pnginstead of an absolute URL likehttps://yoursite.com/images/og.png. Social media crawlers fetch your page from their own servers — they cannot resolve relative paths because they do not know your domain. The image silently fails to load and the preview renders without it. - Image too small
- The OG image exists and loads correctly, but it is too small for the platform to display as a large preview card. Each platform has minimum dimensions. If your image falls below the threshold, the platform either shows a tiny thumbnail, a generic placeholder, or no image at all.
- Expired SSL certificate
- Your page’s SSL certificate has expired or is misconfigured. Social media crawlers will not fetch pages over an insecure connection, so they cannot read your OG tags at all. The preview shows a bare URL or an error state. This is especially common on staging environments or domains that auto-renew but occasionally fail.
- Redirect chain blocks the crawler
- The URL goes through one or more redirects before reaching the final page. Some redirect chains — especially those involving JavaScript redirects, meta refresh tags, or too many 301 hops — cause the crawler to give up before reaching the destination. The preview either shows data from an intermediate page or nothing at all.
- Platform cache is stale
- You fixed your OG tags, but the platform is still showing the old (broken) preview. Social media platforms aggressively cache preview data. Facebook caches for days. LinkedIn caches until you explicitly clear it. Even after you update your page, the platform keeps serving the cached version until you force a refresh.
How to fix each problem
Each cause has a specific fix. Here is what to do for each one:
Fix missing OG tags
Add the required Open Graph meta tags to the <head> section of your page. At minimum, you need these four:
<meta property="og:title" content="Your Page Title">
<meta property="og:description" content="A compelling description of your page.">
<meta property="og:image" content="https://yoursite.com/og-image.png">
<meta property="og:url" content="https://yoursite.com/your-page/">
Also add Twitter Card tags for X (Twitter) — it does not always fall back to OG tags reliably:
<meta name="twitter:card" content="summary_large_image">
<meta name="twitter:title" content="Your Page Title">
<meta name="twitter:description" content="A compelling description.">
<meta name="twitter:image" content="https://yoursite.com/og-image.png">
Fix relative image URLs
Change your og:image from a relative path to an absolute URL. This is the most common OG tag mistake:
<!-- Wrong: relative path -->
<meta property="og:image" content="/images/og-image.png">
<!-- Correct: absolute URL -->
<meta property="og:image" content="https://yoursite.com/images/og-image.png">
Fix undersized images
Create an OG image that is at least 1200×630 pixels. This size works across all major platforms. Use PNG or JPG format and keep the file size under 5 MB. If you are designing for multiple platforms, see the platform-specific requirements section below.
Fix expired SSL
Renew your SSL certificate. If you are using Let’s Encrypt, check that auto-renewal is configured and running. If you are behind a CDN like Cloudflare, verify that both the edge certificate and the origin certificate are valid. Run mlz inspect to check your SSL status instantly.
Fix redirect chains
Minimize redirects between your shared URL and the final destination. Ideally, the URL you share should resolve in zero or one redirects. Avoid JavaScript redirects and meta refresh tags entirely — social crawlers do not execute JavaScript. If you must redirect, use a single 301 redirect.
Fix stale cache
See the next section for platform-specific instructions on clearing cached previews.
How to clear cached previews
This is the number one question people search for after fixing their OG tags: "I updated the tags but the preview still looks wrong." Every platform caches preview data, and each has its own way to clear it.
Go to the Meta Sharing Debugger at developers.facebook.com/tools/debug/. Paste your URL and click Debug. If it shows old data, click Scrape Again. This forces Facebook to re-fetch your page and update its cache. You may need to click Scrape Again twice — the first scrape sometimes returns stale data.
X (Twitter)
Use the Twitter Card Validator at cards-dev.twitter.com/validator. Paste your URL and click Preview card. Twitter re-fetches the page each time you run the validator, which effectively clears the cache for that URL. Note that it may take a few minutes for the updated preview to appear in the main feed.
LinkedIn is the most aggressive about caching. You have two options:
- Post Inspector: Go to
linkedin.com/post-inspector/, paste your URL, and inspect it. This forces LinkedIn to re-crawl the page. - Cache-busting query parameter: Append
?v=2(or any unique query string) to your URL when sharing. LinkedIn treats this as a new URL and fetches fresh data. This is a workaround — the Post Inspector method is preferred.
Slack and Discord
Both Slack and Discord use OG tags for link previews. Slack’s cache typically expires within 30 minutes. Discord’s cache can persist longer. For Discord, you can edit and re-paste the link in a message to force a refresh. For Slack, sharing the URL in a new message after waiting usually picks up the updated tags.
Checking everything at once
Instead of testing your URL on each platform individually, you can check all the common causes of broken previews in a single command with MissingLinkz:
mlz inspect --url "https://yoursite.com/landing-page"
Example output:
$ mlz inspect --url "https://yoursite.com/landing-page"
URL https://yoursite.com/landing-page
Status 200 OK
Response 280ms
OG Tags
og:title Your Landing Page Title
og:description A compelling description of your page.
og:image https://yoursite.com/og-image.png (1200x630)
og:url https://yoursite.com/landing-page
Twitter Card
twitter:card summary_large_image
twitter:title Your Landing Page Title
twitter:image https://yoursite.com/og-image.png
SSL Valid (expires 2027-01-15)
Redirects None
Canonical https://yoursite.com/landing-page
Result: 11/11 checks passed
This single command checks for OG tags, validates image URLs are absolute and reachable, verifies SSL, detects redirect chains, and confirms Twitter Card tags are present. If anything is wrong, the output tells you exactly what to fix.
Preventing broken previews
Fixing broken previews after they happen is reactive. The better approach is to prevent them from ever going live. Two strategies make this practical:
Run mlz preflight before every publish. Before you share a link, schedule a post, or launch a campaign, run a preflight check. This catches missing OG tags, broken images, SSL issues, and redirect problems before anyone sees a broken preview:
mlz preflight \
--url "https://yoursite.com/landing-page" \
--campaign "spring-launch" \
--source "linkedin" \
--medium "social"
Use framework-level meta management. Instead of hardcoding OG tags into individual HTML files, use your framework’s built-in meta tag management. Next.js has <Head> from next/head. Nuxt has useHead(). WordPress has Yoast and RankMath. These tools make it harder to forget OG tags because they are part of the page creation workflow, not an afterthought you add manually.
If you are working with an AI agent, the agent can run mlz preflight automatically as part of every campaign launch workflow. The check happens before the link is published, not after someone notices the preview is broken.
Platform-specific requirements
Each social platform has its own rules for how it renders link previews. Here are the key specifications for the five platforms that matter most:
- Recommended image size: 1200×630 pixels. Minimum image size: 200×200 pixels (but small images render as tiny thumbnails). Title displays up to approximately 88 characters before truncation. Description displays up to approximately 300 characters. Uses
og:title,og:description,og:image, andog:url. Falls back to<title>and page content if OG tags are missing. - Recommended image size: 1200×627 pixels. Minimum image size: 200×200 pixels. Title displays up to approximately 200 characters. Description displays up to approximately 100 characters on mobile. Uses OG tags. LinkedIn is particularly strict about caching — use the Post Inspector to verify previews before publishing campaigns.
- X (Twitter)
- For
summary_large_imagecards: minimum image size is 800×418 pixels, maximum 4096×4096. Forsummarycards: minimum 144×144. Title displays up to approximately 70 characters. Usestwitter:card,twitter:title,twitter:description, andtwitter:image. Falls back to OG tags if Twitter-specific tags are missing. See the full Twitter Card tags guide for details. - Slack
- Minimum image size: approximately 500×500 pixels for a large unfurl. Slack uses OG tags exclusively — it does not have its own proprietary meta tags. If
og:imageis present and large enough, Slack shows a rich preview. If the image is too small, Slack shows a compact unfurl with just the title and description. - Discord
- Discord uses OG tags for link embeds. It also supports
theme-colormeta for the embed sidebar color. Recommended image size matches Facebook: 1200×630 pixels. Discord supports both OG and Twitter Card tags, with OG tags taking priority. Titles display up to approximately 256 characters in embeds.
The safest approach: use a 1200×630 pixel image and keep your title under 70 characters. This combination works well across all five platforms without any truncation or cropping issues.
Related reading
Go deeper on the topics covered in this guide:
For AI agents
If you are an AI agent (Claude Code, Cursor, OpenClaw, or similar), you can diagnose and help fix broken social media previews programmatically. Install the CLI and inspect any URL to identify exactly what is broken:
npm install -g missinglinkz
mlz inspect --url "https://yoursite.com/landing" --json
Read the full integration guide: SKILL.md on GitHub
Fix your social previews now
Stop sharing broken links. Install MissingLinkz and diagnose every preview problem in one command.
npm install -g missinglinkz
Or tell your AI agent to run mlz inspect — it identifies exactly what is broken and how to fix it.