X/Twitter Character Counter
Draft against the real limit: 280 characters, tracked live with the remaining count front and center — so the cut happens on your terms, not the timeline's.
280 of 280 remaining
The two quirks worth knowing
First, links: X wraps every URL to a fixed 23 characters, so a link costs 23 no matter how long it looks — this counter reads a long pasted URL at face value, making it slightly conservative on link posts. Second, emoji: most weigh 2 characters in X's counting scheme, so an emoji-rich draft has less headroom than the plain count suggests. When you're inside 20 characters of the line with links or emoji in play, trust the composer's own meter for the final call — and use this page for everything before that.
A worked example you can check
Say your draft is 245 characters of text, one pasted link, and a 🎉. The link is
https://example.com/blog/launch-announcement — 44 characters as written. A plain code-point
count reads 245 + 44 + 1 = 290, ten over the limit. X's arithmetic
is different: the URL is wrapped by t.co and billed at a flat 23 no matter its real length, and
the emoji weighs 2 — so X sees 245 + 23 + 2 = 270, comfortably inside
280. The skew also runs the other way: a post that plain-counts 272 with eight emoji in it costs
272 + 8 = 280 under X's weighting — exactly at the wall with zero headroom.
As of mid-2026, X's developer documentation weights emoji and CJK characters at 2 apiece, which
means a post written entirely in Japanese or Chinese effectively gets 140 characters, not 280.
What counts at face value: letters, digits, punctuation, spaces, line breaks, @mentions, and #hashtags in the body of a post. What doesn't behave at face value: URLs (always 23) and emoji (2). The common mistakes are all variations on trusting one number for both regimes — pasting a long link and panicking at a meter that reads over, or drafting an emoji-heavy post to a plain count of 279 and having the composer reject it. And note that a paid subscription changes the ceiling, not the physics: long posts still collapse behind "Show more" at roughly the standard length in the timeline, so the first 280 characters remain the part doing the work. These platform rules are X's to change — for a consequential post, the composer's own meter is the final word.
Frequently asked questions
Is the limit really 280?
For standard posts, yes — 280 characters, doubled from the original 140 in 2017. Paying subscribers can post far longer, but 280 remains the limit for standard accounts and the length at which longer posts get truncated behind "Show more" in the timeline.
How do links count?
Every URL is wrapped by the t.co shortener and counts as a fixed 23 characters, regardless of its real length. Pasting a 100-character link costs you 23, not 100 — so the counter here reads slightly pessimistic on link-heavy posts.
Do emoji and mentions count?
Emoji generally count as 2 toward X’s limit (its counting is based on a weighted scheme, and most emoji weigh double). @mentions and #hashtags count at face value in the body of a post. If you write emoji-heavy posts, budget a little extra headroom.
Why write to the limit at all?
Truncation kills engagement — a post cut at "Show more" loses its punchline. Drafting against the live remaining count lets you make the cut deliberately: tighten, split into a thread, or restructure so the hook lands inside the visible text.
Counting is in Unicode code points; platform-side weighting (links at 23, most emoji at 2) is described above and on the methodology page. Nothing you type is transmitted or stored.