Why Your Social Media Links Look Broken (And How to Fix Them)

Before and after illustration showing a broken social preview transforming into a rich preview card

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>. Without og:title, og:description, and og: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:image tag exists but uses a relative path like /images/og.png instead of an absolute URL like https://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.

Facebook

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

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:

Facebook
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, and og:url. Falls back to <title> and page content if OG tags are missing.
LinkedIn
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_image cards: minimum image size is 800×418 pixels, maximum 4096×4096. For summary cards: minimum 144×144. Title displays up to approximately 70 characters. Uses twitter:card, twitter:title, twitter:description, and twitter: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:image is 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-color meta 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.

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.