Back to Blog
Twitter CardsOpen Graph

Twitter Open Graph Fallback Explained

How X.com's crawler falls back from Twitter Card meta tags to Open Graph tags to standard HTML tags when building preview cards.

SS
Sanjay Samanta
June 28, 2026
5 min read

When you share a link on X (formerly Twitter), the platform’s crawler reads your page’s metadata to build a preview card. But it doesn’t just look at twitter: tags — it has a well-defined fallback chain that every developer should understand.

This is an expanded companion to our existing How Twitter Cards Fallback to Open Graph Tags article, focused on the technical implementation details.


The Complete Fallback Chain

X’s crawler processes metadata in this exact priority order for each card property:

Title

  1. twitter:title → Used if present
  2. og:title → Fallback
  3. <title> → Last resort

Description

  1. twitter:description → Used if present
  2. og:description → Fallback
  3. <meta name="description"> → Last resort

Image

  1. twitter:image → Used if present
  2. og:image → Fallback
  3. (no further fallback — no image shown)

Card Type

  1. twitter:cardRequired (no fallback exists)

This last point is critical: there is no Open Graph equivalent of twitter:card. If this tag is missing, X will attempt to render a summary card by default, but the behavior is inconsistent.


Practical Implementation Strategies

Strategy 1: Minimum Tags (OG + twitter:card)

If you want the simplest setup that works across all platforms including X:

<!-- Open Graph (used by Facebook, LinkedIn, Discord, WhatsApp, Slack, Telegram) -->
<meta property="og:title" content="Page Title" />
<meta property="og:description" content="Page description" />
<meta property="og:image" content="https://example.com/image.png" />
<meta property="og:url" content="https://example.com/page" />
<meta property="og:type" content="article" />

<!-- Twitter Card type (required, no OG fallback) -->
<meta name="twitter:card" content="summary_large_image" />

X will read twitter:card for the layout type, then fall back to og:title, og:description, and og:image for the content.

Strategy 2: Full Tags (Different Content for X)

If you want to customize the card specifically for X’s audience:

<!-- Open Graph -->
<meta property="og:title" content="Twitter Open Graph Fallback: Developer Guide" />
<meta property="og:description" content="A technical guide to X's metadata fallback chain." />
<meta property="og:image" content="https://example.com/og-image.png" />

<!-- Twitter Card (overrides OG for X) -->
<meta name="twitter:card" content="summary_large_image" />
<meta name="twitter:title" content="How X Falls Back to OG Tags 🔄" />
<meta name="twitter:description" content="X reads twitter: tags first, then og: tags. Here's the exact chain." />
<meta name="twitter:image" content="https://example.com/twitter-image.png" />

Fallback Verification Testing

To verify which tags X’s crawler actually sees:

# Simulate X's crawler
curl -A "Twitterbot/1.0" -s https://your-url.com | grep -E 'twitter:|og:|<title'

Check the output:

  • If twitter:title is present → X uses it
  • If twitter:title is missing but og:title exists → X falls back to og:title
  • If both are missing → X uses <title>

Edge Cases

og:image But No twitter:image

X will use og:image. However, if the OG image is an unusual aspect ratio (e.g., 1:1 square), X may crop it awkwardly for summary_large_image cards.

Multiple og:image Tags

X uses the first og:image tag encountered in the HTML source.

Missing twitter:card With Complete OG Tags

X may render a basic summary card using OG data, but the behavior is unreliable. Always include twitter:card explicitly.