Twitter card validator: will your link get a card?

Free, no sign-up, no X account. Enter an address and Convertica's server reads that one page and its card image, or paste the page source and it is read in your browser. Below is the result for a made-up page.

Convertica's server fetches that one page as it is sent, before any JavaScript runs, then the card image and robots.txt.

Paste the page source instead

For a page on a staging server, behind a login, or on a site that turns unknown fetchers away. Open the page, choose View Page Source (Ctrl+U, or Cmd+Option+U on a Mac), copy all of it and paste it here. It is read in your browser and not sent anywhere. Images are not fetched in this mode.

Resolves relative addresses and compares the canonical with the page. Nothing is fetched.

X card

summary_large_image

Nothing to fix; 2 to review.

Image size and type are checked when the page is fetched by address.

Example result, for the made-up page in the worked example

X card, summary_large_image, approximate

Image not loaded here

https://www.example.com/images/workshop-share.jpg

Pottery workshops for beginners

From example.com

Open Graph share card, approximate

Image not loaded here

https://www.example.com/images/workshop-share.jpg

EXAMPLE.COM

Pottery workshops for beginners

Two-hour wheel workshops for beginners, with clay, glazes and firing included.

Images are not loaded in these previews: this page loads images from convertica.org only. Each shows the image's address, and its size and type when the page is fetched by address.

X card

X card tags

twitter:card
summary_large_image
Title
Pottery workshops for beginners (from og:title)
Description
Two-hour wheel workshops for beginners, with clay, glazes and firing included. (from og:description)
Image
https://www.example.com/images/workshop-share.jpg (from og:image)
Image alt text
Not found
twitter:site
Not found
twitter:creator
Not found

Open Graph tags

og:title
Pottery workshops for beginners
og:description
Two-hour wheel workshops for beginners, with clay, glazes and firing included.
og:image
https://www.example.com/images/workshop-share.jpg
og:image:alt
Not found
og:url
Not found
og:type
website
og:site_name
Not found

Short answer

A Twitter card validator checks the twitter: meta tags that build a link's card on X. Convertica's free Twitter card validator reads them with the Open Graph fallbacks X documents, checks the card type, the required tags, the lengths and the image against X's own cards documentation, and shows an approximate preview.

  • X documents four card types: summary, summary_large_image, app and player. If a page has more than one twitter:card, X uses the last.
  • X reads twitter:title, twitter:description, twitter:image and twitter:image:alt first, then falls back to the Open Graph tags.
  • X documents a 70 character title, a 200 character description and images under 5 MB in JPG, PNG, WebP or GIF.
  • X's staff removed the preview from X's own Card Validator in 2022 and pointed to the post composer instead.

How to validate a Twitter card

To validate a Twitter card, read the page's twitter: meta tags and the Open Graph tags X falls back to, then check them against X's documentation: a card type X supports, the tags that card requires, the length limits and an image X can use. Then preview the real card in X's post composer.

  1. Check the tags here

    Enter the page's address and press "Validate the card". The validator reads the page, its card image and robots.txt. For a page on a staging server, paste the source: X's own crawler cannot reach a private server either.

  2. Fix what is marked Fix

    A missing twitter:card, a missing required tag, an unsupported image or a robots.txt block can each stop the card from showing. Review items are not required by X's documentation, but each one makes the card clearer or more reliable.

  3. Preview it on X

    Paste the link into the post composer on X. X staff recommend this because the composer shows the card without posting it.

  4. Allow for the cache

    X says it caches card data for 7 days after a link is posted. A link shared before your fix can keep the old card until then.

What happened to X's own Card Validator?

X's own Card Validator no longer shows previews. In August 2022, X staff wrote on the X Developers forum that they had removed its preview, because the previews did not always match how cards display across X's apps. They pointed developers to the Tweet Composer, now the post composer, for an accurate preview, and kept the old validator page only for its logs and for submitting new domains.

This validator does not replace X's composer. It reads the same tags X's documentation describes and tells you which ones are missing or out of range, with a link to the rule. Its preview is a plain card, not X's design. It is built by Convertica and is not affiliated with X.

Read X staff's post on the X Developers forum.

Twitter card types and the tags each one needs

X documents four Twitter card types: summary, summary_large_image, app and player. The type goes in the twitter:card meta tag. If a page has more than one, X uses the last. Photo and gallery cards were retired and are shown as summary_large_image. The validator checks each card against the tags its reference page marks as required.

The four card types in X's documentation
twitter:cardWhat it showsRequired besides twitter:cardImageSource
summaryTitle, description and a small square image beside themtwitter:title1:1, 144 x 144 to 4096 x 4096 pixelsX: summary card (archived)
summary_large_imageTitle and a large, full-width image above ittwitter:title2:1, 300 x 157 to 4096 x 4096 pixelsX: summary_large_image card (archived)
playerA video or audio player, shown in an iframetwitter:title, twitter:site, twitter:player, twitter:player:width, twitter:player:height, twitter:imageAt least 68,600 pixels in allX: player card (archived)
appA mobile app, with its details pulled from the app storetwitter:site, a store IDFrom the app storeX: app card (archived)

X's tag reference says twitter:site or twitter:site:id is required, while its summary card pages mark twitter:site as optional. The validator asks for it as a Review item on summary cards and as required where the reference page says so. X's cards documentation is no longer on X's current developer site, so the validator's sources are X's own pages as last archived, linked in each check.

Worked example: a card built from Open Graph tags

The example result at the top of this page is for a made-up page at https://www.example.com/workshops/. Every name in it is invented to show how the validator reads a page. Its only X tag is twitter:card:

<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Pottery Workshops for Beginners | Example Pottery</title>
<meta name="description" content="Two-hour wheel workshops for beginners, with clay, glazes and firing included.">
<meta property="og:type" content="website">
<meta property="og:title" content="Pottery workshops for beginners">
<meta property="og:description" content="Two-hour wheel workshops for beginners, with clay, glazes and firing included.">
<meta property="og:image" content="https://www.example.com/images/workshop-share.jpg">
<meta name="twitter:card" content="summary_large_image">
</head>
<body>
<h1>Pottery workshops</h1>
</body>
</html>

The card type is summary_large_image. There is no twitter:title, twitter:description or twitter:image, so the validator takes og:title, og:description and og:image, as X documents. That covers the one tag the summary_large_image reference marks as required besides the card type: a title.

It finds nothing to fix and 2 things to review: no twitter:site, so the card is not credited to an X account, and no alt text in twitter:image:alt or og:image:alt. Checked by address, it would also read the image's size and type.

Which Open Graph tags does X fall back to?

X falls back to four Open Graph tags. Its documentation says the card processor checks the twitter: tag first and, when it is missing, uses the Open Graph property. X's parser also reads tags written with property= as well as name=, so existing Open Graph markup does not need to change.

Each X tag, its Open Graph fallback and its documented limit
X tagFalls back toDocumented limit
twitter:titleog:title70 characters; one line on the web, two in the apps
twitter:descriptionog:description200 characters; three lines on the web, not shown in the apps
twitter:imageog:imageUnder 5 MB; JPG, PNG, WebP or GIF (first frame); no SVG
twitter:image:altog:image:alt420 characters
twitter:cardNone. With og:type, og:title and og:description present, X says a summary card may be shownsummary, summary_large_image, app or player
twitter:site, twitter:creatorNoneAn X @username

Twitter card image size

For a summary_large_image card, X documents a 2:1 image from 300 x 157 to 4096 x 4096 pixels. For a summary card, a square image from 144 x 144, which X crops to a square. X also asks for an image unique to the page, not a logo used across the site. When it fetches by address, the validator reads the first bytes of the image to check its size, type and file size.

The card wins the click. Does the page win the sale?

A good card brings visitors to the page, and the page decides whether they stay. The free CRO audit loads the page in a real browser at phone and desktop size and scores eight checks, from the first screen and calls to action to trust, speed and AI visibility.

Why is my Twitter card not showing?

A Twitter card usually fails to show for one of five reasons, each named in X's own cards documentation. The validator checks the first four; the fifth is X's cache.

  1. No card type. twitter:card is missing or misspelled, and the Open Graph tags are not enough to fall back on.
  2. A missing required tag. Every card needs a title; a player card also needs the player address, its size, twitter:site and an image.
  3. An image X cannot use. Too small, too large, over 5 MB, an SVG, or on a server X cannot reach.
  4. robots.txt blocks Twitterbot. X's crawler is Twitterbot, and it follows robots.txt. A blocked page gets no card; a blocked image gets no picture. The validator reads robots.txt when it fetches by address.
  5. An old copy. X caches card data for 7 days after a link is posted.

X's troubleshooting guide also says its crawler stops at 2 MB of page response. For a missing picture, it names the most common cause as an image that is not publicly reachable on the web, which often happens when testing a staging server.

What this Twitter card validator cannot tell you

This Twitter card validator reads one page's HTML and checks it against X's documentation. It cannot show what X will render.

  • X's own rendering. X decides the layout, the crop and whether to show a card at all. The preview here is an approximation; the post composer on X is the check that counts.
  • The picture. This page loads images from convertica.org only, so the preview shows the image's address, size and type instead.
  • X's cache. It cannot see or clear the copy X already holds.
  • Tags added by JavaScript. They are not in the HTML this validator reads.
  • Its own fetch. It fetches with a user agent that names Convertica, not as Twitterbot, so a site that treats the two differently may answer differently. It follows up to five redirects, waits 8 seconds per fetch and 20 in all, and allows 10 checks per 10 minutes per IP address.

The card is one of several ways a page introduces itself. The meta tag checker reads the same page for Google and for Open Graph share cards too, and has a meta tag generator. The crawlability test shows what any crawler gets before JavaScript runs. And once the card brings visitors, the free CRO audit checks whether the page it links to converts them.

See all free tools and how they fit together.

Twitter card validator FAQ

What is a Twitter card validator?

A Twitter card validator reads the twitter: meta tags on a page, and the Open Graph tags X falls back to, and checks them against X's documentation: the card type, the required tags, the length limits and the image. This one is Convertica's, not X's, and its preview is an approximation of the card.

What happened to X's own Card Validator?

X staff wrote on the X Developers forum in August 2022 that they had removed the preview from the Card Validator, because its previews did not always match how cards appear. They recommended pasting the link into the Tweet Composer, now X's post composer, where the card preview renders without posting.

How do I preview a Twitter card before posting?

Check the tags here first, then paste the link into the X post composer. X staff recommend the composer because the card preview appears there without posting. If the card is missing, fix what the validator lists under Fix, then try again.

What are the Twitter card types?

X's documentation lists four: summary, summary_large_image, app and player. Photo and gallery cards were retired and mapped to summary_large_image. The type goes in the twitter:card meta tag, and if a page has more than one, X uses the last.

Does X use Open Graph tags if Twitter card tags are missing?

Yes, for most of them. X's documentation says it checks the twitter: tag first and falls back to og:title, og:description, og:image and og:image:alt. If twitter:card is missing but og:type, og:title and og:description exist, X says a summary card may be shown.

What size should a Twitter card image be?

For summary_large_image, X documents a 2:1 image from 300 x 157 up to 4096 x 4096 pixels. For summary, a square image from 144 x 144. Both must be under 5 MB, in JPG, PNG, WebP or GIF. SVG is not supported.

Why is my Twitter card not showing?

Common causes are a missing or misspelled twitter:card, an image X cannot fetch, robots.txt blocking Twitterbot, or an old copy: X says it caches card data for 7 days. The validator checks the tags, and when it fetches by address, the image and robots.txt too.

Is the Twitter card validator free, and where does my data go?

It is free, with no sign-up and no X account. An address you enter is sent to Convertica's server, which fetches the page, its card image and robots.txt, and returns the result. Nothing is stored. It allows 10 checks per 10 minutes per IP address. A pasted source is read in your browser and not sent anywhere.

Find out what happens after the click

Enter your website and the audit starts right away. Watch it check your page live: eight checks, each scored out of 100, and three fixes you can make now.