Twitter Card Validator: How to Test and Fix Twitter Link Previews

A complete guide to testing Twitter/X link previews — using the Twitter Card Validator, alternative preview tools, and fixing the most common card failures.

Updated March 2026

The Twitter Card Validator: What Happened to It

Twitter's official Card Validator (at cards-dev.twitter.com/validator) has been intermittently broken or restricted since 2023. Twitter/X removed open access, then partially restored it — but it now requires a logged-in X account and doesn't always return accurate results for live pages.

If you're looking for a reliable way to preview how your URL will look when shared on X, use a third-party validator that fetches your metadata in real time.

Option 1: OGFixer (Recommended)

OGFixer fetches your URL, extracts all OG and Twitter card meta tags, and renders pixel-accurate previews of how your link will appear on Twitter/X, LinkedIn, Discord, Slack, and WhatsApp — all from one tool.

Test your Twitter card preview →

Preview my link on Twitter →

The Required Twitter Card Meta Tags

For a summary_large_image card (the standard large preview):

<meta name="twitter:card"        content="summary_large_image" />
<meta name="twitter:title"       content="Your Page Title" />
<meta name="twitter:description" content="Your page description (up to 200 chars)" />
<meta name="twitter:image"       content="https://yoursite.com/og-image.png" />
<!-- Optional: your @username -->
<meta name="twitter:site"        content="@yourusername" />
<meta name="twitter:creator"     content="@authorusername" />

Twitter also reads og:title, og:description, and og:image as fallbacks if Twitter-specific tags are missing. So if your Open Graph tags are set, Twitter cards often work automatically.

Card Types

  • summary_large_image — Large image on top, title/description below. Most common and visually impactful.
  • summary — Small square image on the left, text on the right. Good for logos or icon-style images.
  • app — App install card (rarely used for web content).
  • player — Video/audio player embed (requires Twitter approval).

Why Twitter Cards Fail (Most Common Causes)

1. Missing twitter:card meta tag

Without twitter:card, X renders only a text link — no image, no title card. This is the single most common failure.

2. Image not meeting requirements

For summary_large_image:

  • Minimum: 300×157px
  • Recommended: 1200×628px (2:1 ratio)
  • Max file size: 5MB
  • Formats: JPEG, PNG, WEBP, GIF (static only — no animated GIFs for the card image)
  • Must be served over HTTPS
  • Must be publicly accessible (no auth, no token)

3. Stale cache from Twitter/X

Twitter aggressively caches link previews. If you updated your OG tags, the old preview may show for hours. Workarounds:

  • Use the official Card Validator if available (it force-recrawls)
  • Add a cache-busting query string to the tweet URL: yoursite.com/page?v=2
  • Wait 24 hours for organic cache expiry

4. Page requires JavaScript

X's link preview crawler doesn't execute JavaScript. If your OG tags are injected via client-side JS, the crawler won't see them. Use SSR or static rendering for meta tags.

5. Blocked by robots.txt or security headers

If your robots.txt blocks Twitterbot, or your server returns a 403 to unknown user agents, the card won't load. Check:

# robots.txt — must NOT block Twitterbot
User-agent: Twitterbot
Allow: /

Debugging Flow: Step-by-Step

  1. Run your URL through OGFixer — confirms what a crawler sees.
  2. Check that twitter:card is present in the raw HTML (curl -s URL | grep twitter).
  3. Verify the og:image / twitter:image URL returns 200 with the right Content-Type.
  4. Check image dimensions and file size meet minimums.
  5. Ensure the page is server-rendered (OG tags in initial HTML, not JS-injected).
  6. Clear the preview cache and retest.

Quick curl Test

# Check what Twitter's crawler sees
curl -A "Twitterbot/1.0" -L https://yoursite.com/page | grep -E 'og:|twitter:'

# Verify the image URL is accessible
curl -I https://yoursite.com/og-image.png
# Look for: HTTP/2 200, Content-Type: image/png