Twitter Card Not Showing? How to Fix It
Troubleshoot and fix missing Twitter cards on X.com: common causes, syntax errors, crawler blocking, cache invalidation, and debugging tools.
Pasted a link on X (Twitter) and only seeing a plain blue link or incomplete text box? You are not alone. Missing Twitter Cards are a common issue for developers and marketers.
This troubleshooting guide covers the root causes of broken Twitter Cards and provides step-by-step solutions to fix them.
1. Missing twitter:card Property
The twitter:card tag specifies the card format (summary or summary_large_image). Without it, X’s crawler doesn’t know how to format the preview and may decline to show a card altogether.
<!-- REQUIRED TAG -->
<meta name="twitter:card" content="summary_large_image" />
Ensure this tag exists in your page’s <head> section.
2. Invalid or Unreachable Image URL
If your image fails to load, X will silently drop the preview image or downgrade the card.
- Relative Paths:
twitter:imagemust be an absolute URL starting withhttps://. Relative paths like/assets/og.jpgwill fail. - HTTP vs HTTPS: X requires secure
https://image URLs. - Image Errors: Verify the URL returns HTTP status
200 OK(not 404 or 301/302 redirects).
Test your image URL in terminal:
curl -I https://yourdomain.com/path-to-image.png
3. Robots.txt or Firewall Blocking Twitterbot
X uses a specialized crawler bot identified as Twitterbot. If your robots.txt file or Cloudflare WAF rules block Twitterbot, X cannot scrape your meta tags.
Check your robots.txt to ensure it isn’t disallowing Twitterbot:
User-agent: Twitterbot
Disallow:
4. Client-Side Rendering (SPA Issues)
Twitterbot does not execute client-side JavaScript. If your site is a Single Page Application (React, Vue, Angular) that appends meta tags via JavaScript after page load, Twitterbot will receive an empty HTML shell.
Solution: Use Server-Side Rendering (SSR), Static Site Generation (SSG), or Edge pre-rendering to include meta tags in the raw initial HTML response. For JavaScript frameworks, see our guide on Open Graph & Twitter Meta Tag JS Implementation.
5. Stale Twitter Cache
X caches link preview metadata aggressively to reduce server load. If you recently added or fixed your tags, X may still be displaying the cached broken state.
How to Force Cache Invalidation on X:
- Append a dummy query parameter to your URL when sharing (e.g.,
https://yourdomain.com/blog-post?v=2). - Test the new URL in the Tweet Compose window.
- This forces X to treat the URL as new and perform a fresh crawl.
Systematic Debugging Checklist
Run through this 5-point checklist whenever a Twitter card fails to render:
-
<meta name="twitter:card" content="summary_large_image" />is declared. -
<meta name="twitter:image" content="..." />points to an absolutehttps://URL. - Page returns HTTP 200 to
curl -A "Twitterbot/1.0" -s https://yourdomain.com. - Image dimensions are at least 300 × 157 px and under 5 MB.
- Tags are present in raw server-rendered HTML (View Page Source).
Related Resources
- Twitter Card Meta Tags: Complete Guide
- Twitter Card Preview Guide
- Twitter Open Graph Fallback Explained
- Test your URLs instantly with the Open Graph Inspector