XConvert
Downloads
Pricing

Generate Twitter Card Meta Tags Online

Create Twitter Card (twittercard) meta tags quickly, then copy and paste them into your site’s HTML head section.

Card
Content
Image
Card previewsummary_large_image
𝕏
Fill in title or image to see the preview
Generated meta tags1 tags
<meta name="twitter:card" content="summary_large_image">

How to Generate Twitter (X) Card Meta Tags

  1. Pick a Card Type: Choose summary (small square thumbnail beside title — text-heavy articles, docs, lists), summary_large_image (big 2:1 hero image above title — blog posts, landing pages, anything visual), app (deep-link to an iOS/Android app from the App Store / Play Store), or player (inline audio or video — requires manual approval from X before it will render).
  2. Fill the Required Fields: Enter Title (≤70 characters renders cleanly), Description (≤200 characters), Image URL (must be publicly reachable over HTTPS — no localhost, no signed S3 URLs, no staging. subdomains behind basic auth), and Image Alt Text (up to 420 characters describing the image for screen readers).
  3. Add Optional Attribution (Optional): Set Site Handle (@yourbrand — the X account that owns the site) and Creator Handle (@theauthor — the article's author). For app cards add twitter:app:id:iphone / :googleplay and optional :url deep-link; for player cards add twitter:player (HTTPS iframe URL), twitter:player:width, and twitter:player:height.
  4. Copy the <meta> Block: Click Generate / Copy to grab the full HTML snippet. Paste it inside <head> on every page you want to share — most static-site generators (Next.js, Hugo, Astro, Jekyll) inject these per-page from frontmatter.

Why Use a Twitter Card Generator?

Without twitter:card meta tags, links to your page render as a bare URL in the timeline — no image, no title, no description, no click incentive. With them, your post becomes a rich preview that takes up several lines of feed real estate and roughly doubles click-through versus a plain link. Common reasons to set them explicitly rather than rely on Open Graph fallback:

  • You want the large-image layout — X uses twitter:card to decide whether to render the small square (summary) or the big 2:1 hero (summary_large_image). Open Graph has no equivalent tag, so without twitter:card set explicitly, X defaults to the small thumbnail even if your og:image is 1200×630.
  • Different title or description for X vs. other platforms — Set twitter:title short and punchy for the 280-character context while keeping og:title longer for LinkedIn and Facebook. The fallback chain means missing twitter:* tags inherit from og:*, but explicit tags override.
  • Per-page author attribution — twitter:creator shows "@author" under the card and notifies that account when the link is shared widely. Open Graph has no per-post author attribution.
  • App install deep links — The app card surfaces "Open in App" / "Install" buttons pulling iTunes / Play Store IDs directly. No OG equivalent exists.
  • Inline audio / video — The player card embeds an HTTPS iframe so users play media without leaving X. Required for SoundCloud, Mixcloud, Vimeo-style embeds. (Manual approval needed — see the FAQ below.)
  • Debugging stale previews — When your card looks wrong on X, the first step is re-generating clean tags. X caches card data on roughly a 7-day cycle and there is no public API to flush it; the standard workaround is to append a cache-busting query (?v=2) when sharing.

Pair these with an Open Graph block for full social coverage. For the image asset itself, compress JPG or compress PNG to stay under the 5 MB hard cap, and use Crop Image to nail the exact 2:1 ratio. If you also need a homepage QR code in the same campaign, the QR Code Generator lives one click away.

Card Types Side-by-Side

Property summary summary_large_image app player
Layout Small square thumbnail left of title/description Hero image above title/description Native app card with install / open button Inline HTML5 audio or video player
Image aspect ratio 1:1 2:1 App icon (handled by the store) n/a (uses player iframe poster)
Image min dimensions 144 × 144 px 300 × 157 px n/a n/a
Image max dimensions 4096 × 4096 px 4096 × 4096 px n/a n/a
Image file size cap 5 MB 5 MB n/a n/a
Supported image formats JPG, PNG, WEBP, GIF (no animated GIF playback) JPG, PNG, WEBP, GIF (no animated GIF playback) n/a n/a
Whitelist / approval needed No No No Yes — manual approval from X required before the embed renders
Best for Reference articles, docs, link lists Blog posts, landing pages, product pages, news iOS / Android apps deep-linking from a web page SoundCloud, Mixcloud, Vimeo-style embeds

Required vs. Optional Tags by Card Type

Tag summary summary_large_image app player
twitter:card Required (summary) Required (summary_large_image) Required (app) Required (player)
twitter:title Required (≤70 chars renders cleanly) Required Inherited from app store metadata Required
twitter:description Optional (≤200 chars) Optional Optional Optional
twitter:image Required Required n/a Required (poster image)
twitter:image:alt Recommended (≤420 chars) Recommended n/a Recommended
twitter:site Recommended (@brand) Recommended Required Required
twitter:creator Optional Optional Optional Optional
twitter:app:name:iphone/:ipad/:googleplay n/a n/a Required (at least one platform) n/a
twitter:app:id:iphone/:ipad/:googleplay n/a n/a Required matching the name n/a
twitter:app:url:iphone/:ipad/:googleplay n/a n/a Optional deep link n/a
twitter:player n/a n/a n/a Required (HTTPS iframe)
twitter:player:width/:height n/a n/a n/a Required (pixel dimensions)
twitter:player:stream n/a n/a n/a Optional MP4 raw stream URL

Open Graph fallback: when twitter:title, twitter:description, or twitter:image are missing, X falls back to og:title, og:description, and og:image respectively. twitter:card itself has no OG equivalent — you must set it explicitly to get anything beyond the default small-image layout.

Frequently Asked Questions

Does X still validate cards now that the official Card Validator is gone?

X removed the preview functionality from the official Card Validator at cards-dev.twitter.com/validator in August 2022 and the tool has been effectively deprecated since the rebrand. The validator URL still resolves but no longer renders previews. X's own guidance is to use the Tweet Composer on x.com or the mobile apps — paste your URL into a draft tweet and the card preview that appears is the canonical preview. For automated checking, popular third-party debuggers include opengraph.xyz, metatags.io, and socialpreviewhub. None of them clear X's cache; only X's crawler can refresh that, on roughly a 7-day cycle.

What are the image size requirements?

For summary_large_image, X documents a 2:1 aspect ratio, minimum 300 × 157 px, maximum 4096 × 4096 px, and file size ≤5 MB. Supported formats are JPG, PNG, WEBP, and GIF (animated frames do not animate inside the card). The current sweet spot is 1200 × 628 (or 1200 × 630, which also works on Facebook, LinkedIn, Discord, and Slack). For summary, the requirement is 1:1 minimum 144 × 144 px, same 4096 × 4096 / 5 MB ceiling.

Why doesn't my card preview?

In rough order of likelihood: (1) X has cached an older version of the URL — append ?v=2 (or any unused query) when sharing to force a fresh fetch. (2) Your image is not publicly reachable — staging hosts, basic auth, signed S3 URLs, and CDNs that block unknown bots all fail. The X crawler must be able to GET the image anonymously over HTTPS. (3) robots.txt blocks Twitterbot — add an explicit User-agent: Twitterbot Allow: / rule. (4) The image exceeds 5 MB or uses an unsupported format. (5) twitter:card is missing entirely, so X falls back to the small layout regardless of og:image size.

Do I still need twitter:* tags if I already have og:* set?

For twitter:title, twitter:description, and twitter:image, no — X falls back to og:title, og:description, and og:image when the Twitter-specific tag is missing. But for twitter:card itself, yes — there is no Open Graph equivalent. Without twitter:card, X defaults to the small summary layout even when your og:image is a 1200×630 hero. The minimum viable setup if you already have a complete og:* block is just one extra tag: <meta name="twitter:card" content="summary_large_image">.

How do I refresh a stale card preview?

X's card crawler caches scrape results for roughly seven days and there is no public API to flush that cache. Three practical workarounds: (1) Add a cache-busting query parameter (?v=2, ?refresh=1) when sharing — X treats the new URL as a fresh fetch. (2) Wait out the cycle — about a week after your meta tags change, organic shares will pick up the new card. (3) For high-value campaigns, change the canonical URL (e.g., /launch → /launch-2) so the crawler treats it as new content. Note that opengraph.xyz and metatags.io previews refresh on every fetch, so they're useful for confirming your tags are correct even while X still serves the old preview.

Why does my player card show a blank preview?

The player card type is not self-serve. You must submit your domain for manual approval through X's Player Card Approval process before the embed renders for users. Approval requirements include: the player must work in all X clients (web, iOS, Android), no sign-in walls, no banners or non-standard UI inside the iframe, no mixed-content warnings, and HTTPS only. Until your domain is approved, the markup is parsed but the card displays as a plain link. This is why most independent publishers use summary_large_image and link out to their player rather than embedding inline.

What card-validator alternatives are people using in 2026?

The most common replacements are Tweet Composer itself (paste the URL into a new tweet draft — the rendered preview is canonical), opengraph.xyz (free, no signup, shows OG + twitter + LinkedIn previews side by side), metatags.io (similar, with an editable mock-up), socialpreviewhub.com, and opentweet.io's X Card Validator. For continuous monitoring, headless-Chrome scripts that scrape your own <head> and compare against expected values catch regressions before they ship. None of these tools can clear X's cache — they only confirm your tags are syntactically correct and resolve to the right image.

Are these meta tags case-sensitive, and do I use name= or property=?

Twitter/X tags use name="twitter:card" (HTML5 meta name), while Open Graph tags use property="og:title" (RDFa). X's parser is forgiving — it will accept property="twitter:card" too — but the spec is name=. The content value for twitter:card is case-sensitive: summary_large_image works, Summary_Large_Image does not. Handles in twitter:site and twitter:creator must start with @ and are case-insensitive (@xconvert and @XConvert both resolve to the same account).

Can I use the same image for og:image and twitter:image?

Yes, and that's the common pattern. A single 1200 × 630 JPG or PNG works for both, with og:image driving Facebook, LinkedIn, Discord, Slack, iMessage, and most other previewers, while twitter:image (or the OG fallback) drives X. The only edge case is the small summary card — if you specifically want X to show a square thumbnail while LinkedIn shows a hero, supply both twitter:image (square 144×144 to 4096×4096) and og:image (rectangular 1200×630), and set twitter:card to summary.

Related Generate tools
Og Image GeneratorFavicon GeneratorMeta Tag GeneratorJson Ld Schema GeneratorImage To Base64

Image Tools

Image CompressorCompress JPEGCompress PNGCompress GIFCompress WebPImage ConverterJPG ConverterImage Resizer

Video Tools

Video CompressorCompress MP4MP4 to GIFVideo to GIFVideo ConverterMP4 ConverterVideo Cutter

Audio Tools

Audio CompressorCompress MP3Compress WAVAudio ConverterMP3 ConverterFLAC to MP3Audio Cutter

Document Tools

Compress PDFMerge Images to PDFSplit PDFPDF to JPGUnzip FilesRAR Extractor
© 2026 XConvert.com. All Rights Reserved.
About UsPrivacy PolicyTerms of ServiceContactHelp Us Grow