Pages and copy
Twitter card validator
This Twitter card validator checks the tags behind a link's card on X: the card type, required tags, Open Graph fallbacks, lengths and image, against X's own cards documentation.
X's fallbacks
Reads twitter: tags first, then the Open Graph tags X falls back to.
Documented rules
Card types, required tags and limits from X's own cards documentation.
Image checked
Size, type and file size of the card image when you check by address.
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.
Paste the page source instead
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
Image not loaded here
https://www.example.com/images/workshop-share.jpg
Pottery workshops for beginners
From example.com
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
- Pass Card type summary_large_image, one of the four X documents. X Developer Platform: getting started with cards (archived)
- Pass Every tag X's summary_large_image card reference marks as required is present (the title through og:title). X Developer Platform: summary card with large image (archived)
- Review No twitter:site. X's tag reference calls twitter:site or twitter:site:id required, while its summary card pages list it as optional. It names the account the card is credited to. X Developer Platform: cards markup (archived)
- Review No twitter:image:alt or og:image:alt. X uses it to describe the image to people who cannot see it. X Developer Platform: cards markup (archived)
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.
-
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.
-
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.
-
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.
-
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.
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.
| twitter:card | What it shows | Required besides twitter:card | Image | Source |
|---|---|---|---|---|
summary | Title, description and a small square image beside them | twitter:title | 1:1, 144 x 144 to 4096 x 4096 pixels | X: summary card (archived) |
summary_large_image | Title and a large, full-width image above it | twitter:title | 2:1, 300 x 157 to 4096 x 4096 pixels | X: summary_large_image card (archived) |
player | A video or audio player, shown in an iframe | twitter:title, twitter:site, twitter:player, twitter:player:width, twitter:player:height, twitter:image | At least 68,600 pixels in all | X: player card (archived) |
app | A mobile app, with its details pulled from the app store | twitter:site, a store ID | From the app store | X: 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.
| X tag | Falls back to | Documented limit |
|---|---|---|
twitter:title | og:title | 70 characters; one line on the web, two in the apps |
twitter:description | og:description | 200 characters; three lines on the web, not shown in the apps |
twitter:image | og:image | Under 5 MB; JPG, PNG, WebP or GIF (first frame); no SVG |
twitter:image:alt | og:image:alt | 420 characters |
twitter:card | None. With og:type, og:title and og:description present, X says a summary card may be shown | summary, summary_large_image, app or player |
twitter:site, twitter:creator | None | An 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.
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.
- No card type. twitter:card is missing or misspelled, and the Open Graph tags are not enough to fall back on.
- A missing required tag. Every card needs a title; a player card also needs the player address, its size, twitter:site and an image.
- An image X cannot use. Too small, too large, over 5 MB, an SVG, or on a server X cannot reach.
- 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.
- 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.
Check the rest of the page
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.