Key takeaways

  • X removed the preview from its Card Validator in mid 2022 and recommends pasting a URL into a post composer to see the card; the old validator address now redirects to an X login page.
  • X's crawler cannot run JavaScript, follows robots.txt and needs absolute image URLs, so curl with the Twitterbot user agent is the first test.
  • seogeoaeo.ai's Open Graph checker adds what curl misses, such as image format, size and file weight checks against X's 5 MB cap, for 5 credits per run over the web, REST or MCP.

The Twitter card validator no longer shows a preview. X removed that part in mid 2022, and today cards-dev.twitter.com/validator just sends you to an X login page. X's developer team says the old previews did not match what people saw in the apps, and it now tells developers to paste the URL into a post composer to see the card. Everything else a validator used to do, confirming that X can fetch and parse your tags, is now your job.

This is the workflow we use, with seogeoaeo.ai's Open Graph checker covering the parts curl cannot show.

1. Fetch the page as Twitterbot

X's pinned troubleshooting post on its developer forum suggests one command:

curl -v -A Twitterbot https://www.example.com/blog/post

Look for three things in the output: a 200 status, a valid Content-Type header and a twitter:card meta tag inside the head. If a browser gets the page and this user agent does not, suspect a firewall or bot rule.

2. Make sure the tags are static

The same post says the crawler cannot execute JavaScript. X names Angular, Meteor and Google Tag Manager as examples: tags they add after load are invisible to its crawler. Render them on the server or prerender the route. View-source is the fast test: if the tags are not there, X will not find them either.

3. Check robots.txt for the page and the image

X asks you to confirm that robots.txt lets Twitterbot in, and to check the robots.txt of the image's domain when images sit on a CDN host. Write the image address as an absolute https URL. The crawler also cannot reach localhost or a bare IP address, so test staging through a real hostname.

4. Get the markup right

X reads its own tags first and falls back to Open Graph. The current docs.x.com no longer hosts the Cards pages, so these limits come from X's Cards markup reference as archived in May 2025:

X tag Falls back to Limit
twitter:card nothing summary, summary_large_image, app or player
twitter:title og:title 70 characters
twitter:description og:description 200 characters
twitter:image og:image under 5 MB; JPG, PNG, WEBP or GIF; no SVG
twitter:image:alt og:image:alt 420 characters

Without twitter:card, a page with og:type, og:title and og:description may get the small summary card. For the wide image, set summary_large_image and size the picture for 2:1, between 300 by 157 and 4096 by 4096 pixels. App cards have rendered as summary cards since early 2022.

<meta name="twitter:card" content="summary_large_image">
<meta property="og:image" content="https://www.example.com/og/post.png">

5. Run a checker, then the composer

curl proves the tags exist. It says nothing about whether the image is too heavy, the wrong format or the wrong shape. The seogeoaeo.ai checker fills that gap: it lists the og: and twitter: tags in the page head, shows which one each part of the card came from, flags a missing or unknown twitter:card and relative or http image URLs, then downloads the image (and twitter:image if it is a separate file) and tests it against X's 5 MB cap and the limits LinkedIn, Facebook and Slack publish. A run costs 5 credits. It also runs over the REST API and MCP with a workspace API key, so a deploy script or a coding agent can call it after every change.

Then paste the URL into a draft post on x.com and look at the card. That is the one preview X itself stands behind.

Limits worth knowing

The checker refuses localhost and private addresses, just as X's crawler cannot reach them. It reads raw HTML, draws an approximate card rather than X's exact layout, and cannot refresh a card X has cached. One more thing no tool fixes: X's forum notes that cards are not served through the API, so third-party X clients may show a plain link whatever your markup says.

Frequently asked questions

Does the Twitter card validator still work?

Not as a preview tool. X removed the preview in mid 2022, and as of November 2026 the old cards-dev.twitter.com/validator address redirects to an X login page. X suggests pasting the URL into a post composer instead.

Why does X show a small card instead of a large image?

The page probably has no twitter:card tag. X's markup reference says a page with og:type, og:title and og:description but no twitter:card may get a summary card. Set twitter:card to summary_large_image.

Do I need separate twitter: tags if I already have Open Graph tags?

Usually only twitter:card. X falls back to og:title, og:description, og:image and og:image:alt when the matching twitter: tags are missing.

Sources

  1. Open Graph Checker & Social Card Previewseogeoaeo.ai
  2. Twitter Card Validator: how to test X previews nowseogeoaeo.ai
  3. Card error, unable to render, or no image: READ THIS FIRSTX Developers
  4. Cards markup (archived May 2025)X Developer Platform
  5. Summary card with large image (archived May 2025)X Developer Platform
  6. The Open Graph protocologp.me

Add ClaudeGPT Si as a preferred source on Google