Skip to content
Convertto

X Card Validator — Check twitter:card Markup Before You Post

Paste your meta tags to check the X card type, title, description and image against the documented rules, including Open Graph fallbacks.

Paste your meta tags and the X card is resolved the way the crawler resolves it: twitter:card decides the layout, and any missing twitter:title, twitter:description or twitter:image falls back to the matching Open Graph tag. Each value is then checked against the documented card types, character limits and absolute-URL rule.

Runs in your browser
Privacy
Runs entirely in your browser — nothing is uploaded and no page is fetched
Fallbacks
twitter:title, twitter:description and twitter:image fall back to their og: equivalents
Card types
summary, summary_large_image, app and player — photo, gallery and product are retired
First-party validator
X retired its public Card Validator in 2022
Cost
Free, unlimited, no sign-up

How X decides what your card looks like

The crawler reads one tag to pick the layout and the rest to fill it in. twitter:card is the layout tag, and it is the only part of the vocabulary with no Open Graph equivalent — everything else degrades gracefully. If twitter:title is absent the crawler uses og:title; the same holds for the description and the image. That is why a page with solid Open Graph markup already gets a card, and why adding a single twitter:card line is usually the highest-value change available.

Card typeLayoutAdditional required tags
summaryTitle, description and a small square thumbnailNone beyond title and image
summary_large_imageWide 2:1 image above the title and descriptionNone beyond title and image
playerAn embedded media player in the timelinetwitter:player, twitter:player:width, twitter:player:height
appA direct install prompt for a mobile apptwitter:app:id:iphone, :ipad or :googleplay
photo, gallery and product were retired and no longer render.

The four things that actually break cards

  1. A relative image path. The crawler does not resolve /images/card.png against the page URL — the value must be an absolute https:// address. This is the single most common cause of a card that renders as plain text.
  2. A blocked crawler. If robots.txt disallows the bot, or the image sits behind authentication or a hotlink rule, there is nothing to draw. The markup can be perfect and the card still empty.
  3. A stale cache. X caches what it fetched. Tags added after the first crawl do not appear until it re-crawls, which is why a card can be correct in markup and wrong in the timeline.
  4. A retired card type. photo, gallery and product were valid years ago and are silently ignored now, falling back to the small summary layout at best.

Checking markup versus checking a live page

This tool reads tags you paste, so it works on a branch, a staging host or a page that is not published — and nothing leaves your browser. What it cannot do is tell you whether the image actually exists, what size it is, or whether the crawler can reach it. For that, the Open Graph preview fetches the live URL, measures the image and draws the card as Facebook, X, LinkedIn and Slack each really render it. The two are complements: markup first, live fetch once it is deployed.

Frequently asked questions

Do I need Twitter Card tags if I already have Open Graph tags?

Mostly not. X falls back to og:title, og:description and og:image when the twitter: equivalents are absent, so a page with good Open Graph markup already gets a card. The exception is twitter:card itself, which has no Open Graph equivalent — without it you get the small square summary layout rather than the wide image.

What is the difference between summary and summary_large_image?

summary draws a small square thumbnail beside the text, which suits a logo or an avatar. summary_large_image draws a wide 2:1 image above the text and takes up far more of the timeline. For an article or a landing page summary_large_image is almost always the one you want.

Why is my card not showing on X?

The usual causes are a relative twitter:image path, an image behind authentication or a robots rule that blocks the crawler, or a cached fetch from before the tags were added. This tool catches the markup problems; for the cache, X re-crawls on its own schedule and a URL with a changed query string gets a fresh fetch.

Where is the official Twitter Card Validator?

X retired it in 2022 and has not replaced it. The remaining first-party check is the post composer: paste the URL, look at the unfurl it draws, and delete the draft. That preview comes from the same pipeline that renders the posted card.

What size should the card image be?

For summary_large_image, a 2:1 image of at least 300 × 157 pixels; 1200 × 600 or 1200 × 630 are the usual safe choices and work for the Open Graph card too. For summary, a square of at least 144 × 144. X documents a 5 MB ceiling and supports JPG, PNG, WEBP and static GIF.

Does this tool fetch my page?

No. It parses markup you paste, entirely in your browser, which is why it works on a staging site or on a page that is not published yet. If you want a live fetch with the image measured and the card drawn for four platforms, use the [Open Graph preview](/t/open-graph-preview) instead.

How to use the x (twitter) card validator

  1. 1Copy the meta tags from your page — the whole <head> is fine.
  2. 2Paste them into the box; anything that is not a <meta> tag is ignored.
  3. 3Read the checks table, fixing anything marked Fail first.
  4. 4Copy the suggested markup block if you need a complete, correct set of tags.
  5. 5Paste the live URL into the X composer to confirm the real unfurl.

Sources & specifications

Embed this tool

Put the working x (twitter) card validator on your own site. It runs in your visitors' browsers exactly as it does here — free, no account, nothing uploaded.

Share this tool

Last updated

More seo tools