Open Graph Comparison

Compare Open Graph and Twitter Card metadata between any two URLs. See og:image previews, sizes, titles, descriptions, and canonical mismatches side-by-side.

Open Graph metadata is the most under-instrumented part of any website. Marketing teams obsess over the `<title>` tag because Google shows it — but a typical SaaS gets 5–20% of its traffic from Slack, Twitter, LinkedIn, iMessage, and email link previews, and ALL of those use Open Graph, not the `<title>`. When OG data is missing or broken, every shared link of yours looks like a naked URL. CTR drops by 30–60% versus a properly-previewed link.

## What goes wrong with OG metadata at scale

1. **Templates leak across page types** — your blog post template uses the right og:image, but the marketing landing template inherits a stale homepage image. Half your shares look wrong. 2. **Relative URLs in og:image** — works in Chrome's preview, fails in LinkedIn and Slack which require absolute URLs. 3. **Image too large** — Twitter rejects og:image over 5MB; some platforms truncate over 1MB. A 4MB hero image becomes a missing preview. 4. **A/B variants drift** — variant A has og:image, variant B forgot. Half your test sees no preview. 5. **Canonical/og:url mismatch** — confuses crawlers about which URL is authoritative, sometimes splitting share counts across both URLs.

## Why a side-by-side diff is the right tool

Single-URL OG checkers exist (Facebook's debugger, opengraph.xyz, etc.) but they answer "is this page's OG OK". The harder question is "is my A page consistent with my B page" — that's the regression that ships A/B tests with broken previews, or causes language alternates to use the wrong language's OG image. Diffing two URLs surfaces drift instantly.

## What we don't check (use other tools)

We don't fetch the og:image and check its actual rendered dimensions — only its file size via HEAD. For rendered-image inspection, use Facebook's sharing debugger (it fetches and renders, plus busts LinkedIn's cache). We don't check OAuth-protected pages or pages behind paywalls. We don't check Twitter cards for app/player-specific fields beyond the basics.

## Cache busting — the LinkedIn gotcha

LinkedIn caches og:image for ~7 days, and they don't honour cache-busting query strings consistently. If you update an og:image in place, LinkedIn keeps showing the old one for a week. The fix: change the og:image URL (new filename, not `?v=2`) when you update. Twitter and Facebook have their own debuggers that force-refresh; LinkedIn doesn't.

What this tool checks

Why it matters

Open Graph tags decide how your links look in LinkedIn, Twitter, Slack, iMessage, Discord, Facebook, WhatsApp, and dozens of other channels. A missing or oversized og:image kills click-through. Inconsistent OG metadata across similar pages (A/B variants, language alternates, mobile/desktop) signals chaos and quietly suppresses social CTR. This tool diffs two pages side-by-side so you can spot the regression before it goes live.

How to fix what it finds

Methodology

We fetch both URLs in parallel with a 12-second timeout and `LemWatchOG/1.0` user-agent. From each HTML we extract og:title, og:description, og:image, og:image:url, twitter:card, twitter:image, the page `<title>`, the `<meta name="description">`, and the canonical `<link>`. The og:image URL is resolved to an absolute URL against the page base, then HEAD-checked to get the content-length (file size in KB) and content-type. Errors (failed fetch, missing og:image, broken og:image URL) are collected per URL and surfaced separately so you can fix them one at a time. Results are returned in a parallel `{ a, b }` structure for easy diffing.

Frequently asked questions

Why is my LinkedIn preview still wrong after I fixed the og:image?

LinkedIn caches og:image for ~7 days and ignores query-string cache-busts. Change the og:image filename (not `?v=2`) to force a refresh — or use LinkedIn's Post Inspector to manually refresh.

What size should my og:image be?

1200x630 pixels, under 1MB, JPG or PNG. This works across Twitter, LinkedIn, Facebook, Slack, iMessage, WhatsApp, and Discord.

Can I use a relative URL for og:image?

In theory yes (the spec resolves against the page URL), in practice no — LinkedIn and Slack require absolute URLs. Always use https://your-domain.com/og.jpg.

Do I need both og: and twitter: tags?

Yes if you care about both platforms. Twitter uses twitter:card / twitter:image when present, falls back to og: tags when not. LinkedIn / Facebook / Slack use og: tags exclusively.

Why does this only check two URLs at a time?

Because the most valuable diff is between two related pages (A/B variants, language alternates, before/after). For bulk OG audits, use our paid monitoring tier which checks every page on a site.