Guide

og:url vs canonical URL mismatches

og:url and <link rel="canonical"> both name “the” URL for a page — but for different audiences. Social scrapers lean on og:url; search engines lean on the canonical. When they disagree (trailing slash, http/https, www, query strings, or the wrong page entirely), Facebook, X, LinkedIn, Slack, Discord, WhatsApp, and iMessage can cache the wrong identity, show a stale card, or attach a preview to a URL nobody shares. Keep them on the same absolute https:// permalink.

CardScope fetches the URL from the edge and rebuilds diagnostic shells from the tags it finds. It is not a pixel-perfect Facebook, X, or Discord UI. Use CardScope to confirm live og:url matches the canonical you intended; use each platform’s debugger or a fresh share when you need to refresh a cache.

Why they must agree

Common mismatches

Mismatch Example Why it hurts
Trailing slash .../post vs .../post/ Two cache keys; some CDNs treat them as different objects
Scheme http:// vs https:// Mixed content / redirect loops; scrapers may keep the insecure identity
Host www. vs apex Cards and search split across hosts even if both redirect
Query strings ?utm_source=… on one tag only Tracking params create unique “pages”; previews attach to the wrong variant
Wrong page og:url = homepage, canonical = article Share shows the wrong title/image or steals the site’s home card
Locale / AMP twin Article vs /amp/ or /en/ twin Unless intentional, pick one permalink and point both tags there

After you align the tags, live HTML can be correct while a client still shows an old card. Use the clear Open Graph cache workflow: fix → verify → rescrape where a tool exists. Pair identity fixes with a solid absolute image — see absolute vs relative OG image URL — and sane title/description lengths in the OG title & description guide.

How scrapers pick identity

A minimal set

If you only set identity tags once for every network, set these to the same absolute permalink:

<link rel="canonical" href="https://example.com/post">
<meta property="og:url" content="https://example.com/post">

Prefer https://, drop tracking query strings from both, and match your permanent redirect target (trailing slash and www policy included). Same foundation as the Facebook, LinkedIn vs X, Slack vs Discord, WhatsApp / Telegram, and iMessage guides — one permalink, then client-specific tools where they exist.

Checklist before you ship

  1. Pick one absolute https:// permalink — the URL you want people to paste and bookmark.
  2. Set og:url and rel="canonical" to that exact string (same host, path, trailing-slash policy).
  3. Strip tracking / session query params from both tags; keep them out of the share URL when you can.
  4. Confirm redirects — http→https and www↔apex should land on the same URL both tags name.
  5. Do not point og:url at a different page (home, category, AMP twin) unless that is intentional.
  6. Verify with CardScope, then rescrape platform caches if an old identity is stuck.

FAQ

What is the difference between og:url and the canonical link?

og:url tells social crawlers the preferred Open Graph object URL for the share. <link rel="canonical"> tells search engines the preferred HTML document URL. They should resolve to the same stable permalink so Facebook, X, LinkedIn, Slack, Discord, WhatsApp, and iMessage treat one page as one card.

What are the most common og:url vs canonical mismatches?

Trailing slash vs no slash, http vs https, www vs apex, tracking or session query strings on one tag but not the other, and pointing og:url at a homepage or alternate language while canonical names the article. Any of these can split cache keys or attach the wrong preview.

How do scrapers pick the page identity?

Most social crawlers prefer og:url when present, otherwise the final fetched URL after redirects. Search engines lean on rel="canonical". When the two disagree, you can get a correct Google result and a wrong or stale social card — or two caches for what users think is one page.

How do I fix and verify og:url and canonical?

Set both to the same absolute https permalink you want people to share. Drop tracking params from both. Match trailing slash and host (www or apex) to your redirects. Then paste the URL into CardScope and confirm og:url matches the canonical you intended before you rescrape — see clear Open Graph cache.

Is CardScope free?

Three free checks per day per IP, no account. Pro is $19 once for unlimited checks. We parse HTML in memory and discard it — rate limits store a hash of your IP for 48 hours, not the page.

Check a URL on CardScope

Paste the permalink. You get reconstructed shells for the clients CardScope supports, the tag table, and a fix checklist — so you know live og:url matches your canonical before you fight a platform cache. Three free checks per day per IP, no account. Pro is $19 once if you want unlimited checks. We parse HTML in memory and discard it — rate limits store a hash of your IP for 48 hours, not the page.

Try a URL