X (Twitter) 280-Character Tweet Limit: Specs & Counting Rules
X caps every Promoted Tweet at 280 characters — the same hard limit as organic tweets, applied uniformly across Promoted Ads, Video Ads, Vertical Video Ads, and Takeovers. The character math, however, is not what most copywriters assume. This page documents the exact counting rules and what gets rejected.
Use the Ad Specs Validator
Paste your copy once. See if it fits Google, Meta, LinkedIn, TikTok, and 8 more ad networks — instantly.
The hard limit: 280 characters for all paid tweet formats. There is no exception for ad accounts, no Premium override for promoted content, and no overflow into a second tweet. The X Ads API rejects the tweet on submission with a 186 error code ("Tweet needs to be a bit shorter") — the campaign will not save until you trim.
Why 280? X doubled the original 140 cap in November 2017 after research showed only 9% of English tweets hit the old limit, while Japanese, Korean, and Chinese tweets — where one character carries more meaning — rarely came close. The 280 figure was chosen to give Latin-script languages roughly the same expressive room CJK languages already had. CJK characters still count as 2 against the limit (so the practical Japanese cap is 140), which is the closest thing X has to a built-in fairness adjustment.
How X counts characters (the rules that trip people up):
- URLs always cost
23characters. Whether you pastehttps://x.com(13chars visible) or a180-character UTM-loaded link, X's t.co wrapper charges a flat23. Do not pre-shorten with Bitly — you'll pay the23-char tax twice (once for the Bitly URL, once when t.co re-wraps it). - Emoji cost varies. Most single emoji count as
2characters. Compound emoji built with zero-width joiners (👨👩👧👦, skin-tone modifiers, flag sequences) can cost4-8characters each. The 👨👩👧👦 family emoji is11UTF-16 code units but X charges8. - @mentions and #hashtags count fully.
@getadplusis10characters. There is no discount. - Line breaks count as
1character each. Three-line tweets with double-spacing burn4-6characters on whitespace alone. - RTL languages (Arabic, Hebrew) count by code point, same as Latin script — no
2xpenalty. - Quote tweets don't include the quoted tweet's text in your
280, but the quoted-tweet URL costs23.
Truncation behavior: X does not truncate paid tweets — it rejects them outright at the API level. This differs from Google Ads (silent truncation with …) and LinkedIn (visible "see more"). If your tweet is 281 characters, it will not run. Period.
Copy rules for fitting 280:
- Front-load the value prop in the first
70characters. That's what shows in the timeline preview on narrow viewports before any "show more" wrap. - Put the URL at the end, not the middle. URL-in-middle tweets read as press-release boilerplate and historically underperform on CTR.
- One CTA verb. "Get," "Try," "See," "Read." Multi-CTA tweets ("Learn more or sign up today") waste
15-20characters on hedging. - Aim for
71-100characters of body copy + URL. Twitter's own 2014 research (still cited) showed tweets in this range earned the highest engagement; nothing in the 280 era has overturned it. - Avoid ALL CAPS WORDS — they trigger X's spam-signal weighting on Promoted Tweets and don't save characters.
Card vs. text: When you attach a Website Card or Image, the card preview replaces the URL visually but the URL still counts as 23 in the body. You cannot "hide" the URL by attaching a card — you can only choose whether it shows as raw text or as a card unfurl.
Worked trim — 60 chars down to fit alongside a URL:
Original headline (62 chars): Reconcile 10 ad networks in one dashboard — try AdPlus today
With URL appended: 62 + 1 space + 23 = 86. Under 280, fine. But to hit the 100-char engagement sweet spot with room for one hashtag:
Trimmed (51 chars): 10 ad networks, one dashboard. Stop reconciling.
Final tweet (78 chars total): 10 ad networks, one dashboard. Stop reconciling. https://t.co/x #adops
Example
A B2B tweet reads: "We built AdPlus because reconciling 5 ad platforms every Friday wasted 6 hours. Now: 10 networks, one login. [URL]" — that's 108 chars of copy + 23 for the URL = 131 total. Well inside 280, inside the engagement sweet spot, with 149 characters of headroom for a hashtag or emoji if needed.
Questions
Does X Premium's 25,000-character limit apply to ads?
How do I count characters accurately for non-English tweets?
AdPlus is live — free Starter tier
One login for 12 ad networks. AI plans your campaign, validates every asset automatically, and publishes across every connected account. Start on the free Starter tier.
Get started