Twitter Card Validator

See the card X (Twitter) will draw for a link, check the twitter and og tags with the fallback rules, and measure the image.

See the card X (formerly Twitter) will draw for a link before you post it: the resolved title, description, and image with X's fallback rules, every twitter: and og: tag on the page, the image measured against X's size rules, and whether Twitterbot can fetch the page at all.

How it works

Enter a page URL and the validator fetches it once, the way X's crawler (Twitterbot) does, and reads the served HTML, not what JavaScript adds afterwards, which the crawler does not run either. It then:

  • Resolves the card the way X does: the card type from twitter:card, and the title, description, and image from the twitter: tag, else the og: tag, else the page title and meta description, showing where each value came from.
  • Draws the card as X draws it in 2026 (a large image card with the title over the image and the domain below, or a summary card with a square thumbnail) using the real image, downscaled on our server for the preview.
  • Checks every field: missing or relative image URLs, http images on https pages, titles over 70 and descriptions over 200 characters, the image against X's minimums (300 x 157 or 144 x 144), the 2:1 or 1:1 crop, 4096 px and 5 MB limits, and supported types; player and app cards get their extra fields checked.
  • Checks crawlability: the HTTP status and redirects (X reads the final page), robots.txt evaluated for the Twitterbot group, and the noindex directive (which does not affect cards).

Fails are things that stop X drawing the card or the image; warnings shrink or crop it; info rows are optional. One validation uses one unit of the daily page-fetch allowance, and the report link (?job=) re-opens for seven days without another fetch. Fix the tags with the Open Graph Generator, which pre-fills from the same page.

What the results mean

Pass / Warn / Fail / Info
Pass: present and fine. Warn: present but cropped, truncated, or improvable. Fail: something that stops X drawing the card or its image, or a crawler block. Info: optional or for other platforms, never counted against the page.
How X draws it
The card preview: large image card (2:1 image, title at the bottom left, "From domain" below), summary card (square thumbnail, domain, title, description), player card (large image with a play mark), or app card.
What X resolves
The card type, title, description, image, alt text, site, and creator X will use, each with the tag it was taken from.
Image size
The image's pixel size, ratio, file size, and type against the rules for the card type; "cropped" means X cuts it to 2:1 or 1:1.
robots.txt
Whether the Twitterbot (or *) group allows this path. Disallowed means a bare link on X.
Raw tags
Every twitter: and og: meta tag found in the served HTML.
Copy link / Copy report
The report URL to share (valid for seven days) or the report as plain text for a ticket.
Recent checks
Your last 10 checks, kept in your browser for 30 days. Click one to re-open its report without a new fetch.

Frequently asked questions

What is a Twitter Card, and why does my link show no preview on X?

The preview card X draws under a post that contains a link: an image, the title, and the domain (a summary card adds the description). X builds it from twitter:* meta tags on the linked page, falling back to the Open Graph tags every other platform uses. No preview usually means one of four things: the page has no twitter:card or og:image, the image URL is relative or broken, robots.txt blocks Twitterbot, or X cached an old version of the page. This validator checks all four.

Which meta tags does a Twitter Card need?

At minimum twitter:card (summary or summary_large_image), a title, and an image. X reads twitter:title, twitter:description, and twitter:image, and when any is missing falls back to og:title, og:description, and og:image, then to the page <title> and meta description. twitter:site (your @handle) and twitter:image:alt are optional. The report shows which tag each value came from.

What image size does X want for a card?

For a large image card (summary_large_image): at least 300 x 157, cropped to 2:1, so 1200 x 628 (1.91:1) or 1200 x 600 is the standard; for a summary card: at least 144 x 144, cropped square, so 400 x 400 or larger. Any card image must be under 5 MB, under 4096 px on each side, and a JPG, PNG, WEBP, or GIF (no SVG). The validator measures the image and says which rule it breaks; the Twitter Image Resizer has both sizes as presets.

Summary or summary_large_image: which card type should I use?

summary_large_image for almost everything: it shows the picture at full width with the title over it, which is what articles, products, and landing pages want. summary shows a small square thumbnail next to the title and description, which suits pages without a strong image. Player cards are for embeddable video or audio and app cards for app store listings; both need extra tags the report checks.

How do I check what the card looks like now that X removed its validator?

X retired the Card Validator in 2022; since then the only official preview is the composer itself. This page draws the card the way X draws it today (2026): the large image card with the title overlaid at the bottom left and the domain underneath, or the summary card with its square thumbnail, from the tags on your page and the real image. For the final check, paste the link into a draft post on X; the composer shows the live card without posting.

I fixed the tags but X still shows the old card. Why?

X caches cards for a while (about a week is commonly reported) and there is no refresh button since the validator closed. Options: post the link with a harmless query string added (?v=2), which X treats as a new URL, or wait for the cache to expire. Run this validator first to be sure the served HTML has the new tags; if it does, the rest is X's cache.

Why does robots.txt matter for Twitter Cards?

X fetches the page with its crawler, Twitterbot, which respects robots.txt. A Disallow for the path (or for everything) in the Twitterbot group, or in the * group when there is no Twitterbot group, means X cannot read the tags and shows a bare link. The report fetches your robots.txt and evaluates the rules for this URL the way the crawler does; the image host must allow Twitterbot too.

Is the Twitter Card validator free, and are there limits?

Free with no signup. Each validation fetches the page once (plus the image and robots.txt) and uses one unit of your daily page-fetch allowance, shown in the banner above the form; every plan has a cap and higher tiers get a higher one. A report link (the URL with ?job=) can be re-opened or shared for seven days without another fetch.