Twitter X Character Counter, Count & Preview Your Post
This Twitter X character counter uses the platform’s real weighted counting rules, URLs, emoji, and wide characters included, so your count matches what X actually enforces. See a live post preview and automatically split long text into a numbered thread, no sign up needed.
Start typing to see your count.
Why this number differs from a plain character count. X does not count characters the way a text editor does, and the difference is big enough to get a post rejected.
- Links cost a flat 23. Every URL is rewritten as a t.co link before posting, so a 4 character link and a 300 character link both cost exactly 23.
- Some scripts cost double. Chinese, Japanese, Korean and several other ranges are charged 2 per character. A 140 character Japanese post is already at the limit.
- Emoji cost 2, not 1 or 4. A plain count reads an emoji as two or more units because of how text is stored. X charges a whole emoji, including flags and skin tones, as a single double-weight character.
Highlighted in the box above: links, mentions and hashtags. Mentions and hashtags count normally, they just get linkified.
Why this counter does not just run .length, and what it counts instead
Typing 280 plain characters into X does not always mean you have 280 characters of room left, and typing fewer than 280 does not guarantee you fit. X counts differently than a naive character count, and this tool implements that real weighting rather than the shortcut most simple counters take. Everything runs client side against the text you type, nothing is posted anywhere.
The two weighting rules it actually implements
Note the use of Array.from(text) rather than indexing the string directly. Plain JavaScript string indexing splits by UTF-16 code unit, which breaks emoji and other characters outside the Basic Multilingual Plane into two garbage half-characters. Array.from iterates by Unicode code point instead, so each real character, including a four-byte emoji, is counted once before the wide check doubles it.
| Content | Naive .length count | This tool’s weighted count |
|---|---|---|
| https://example.com/a/very/long/path | 38 | 23 |
| 日本語 (3 CJK characters) | 3 | 6 |
| Plain ASCII sentence | Same | Same |
Live tag highlighting
URLs, hashtags and mentions are detected with separate regex patterns and wrapped in colored spans in a preview pane, so you can see at a glance what X will treat as a link, tag or mention.
Thread splitter
A separate function splits long text into multiple posts by walking word by word and checking the running weighted count against the 280 limit minus an 8 character reserve for a numbering suffix like 3/7, so each generated post actually fits once numbered.
Platform limit references
- X’s official counting characters documentation defines the exact weighting rules this tool implements, including the 23 character t.co length and the weighted ranges for double width characters.
- Unicode Standard Annex 11, East Asian Width is the underlying standard behind which characters count as wide.
Writing to a hard limit
Checking whether a post with multiple links still fits under 280 before you paste it in, writing in Japanese, Korean or Chinese and seeing your real remaining count instead of a misleadingly generous one, splitting a long announcement into a properly numbered thread automatically, and drafting social copy for a client where every character genuinely counts.
FAQ: Twitter/X Character Counter
X automatically wraps every link you post in a t.co shortened URL for tracking and security scanning, regardless of how short your original link already was. That wrapped link is a fixed length, so even a link like “x.co/a” counts the same 23 characters as a very long one. This is why this counter always applies the 23 character weight to any detected URL rather than the actual text length.
Standard accounts are limited to 280 weighted characters per post, which is what this tool checks against. X Premium (paid) subscribers have access to a much higher limit, up to 25,000 characters for longer form posts, though the standard 280 limit remains the default most people plan around and is what this tool is built for.
Most emoji live outside the basic Unicode range used by standard Latin text, in ranges the platform classifies as “wide,” similar to how CJK characters are treated. X applies the same double weighting to these characters to keep post length roughly consistent with their visual and technical footprint, since a single emoji can require more storage and rendering space than a standard letter.
No, @mentions count as regular text, one character per character, they are not shortened or weighted specially the way URLs are. This tool treats @handles the same as any other typed text in the counting logic.
It splits your text at word boundaries, never mid-word, and reserves a small buffer of characters in each post for the “(1/5)” style counter suffix, using the same weighted counting rules as the main counter. It’s a very close approximation to a manually planned thread, though always do a final read through before posting, since context and flow across posts is something only a human can judge well.
No, hashtags are counted as regular text, character by character including the # symbol, they receive no special shortening or weighting treatment, unlike URLs. A hashtag like #MondayMotivation simply counts each of its characters normally.
This tool implements the publicly documented core rules of X’s counting algorithm, URL shortening and wide character weighting, which covers the vast majority of real world cases accurately. X’s exact internal implementation includes some additional edge case handling for unusual Unicode sequences that isn’t fully documented publicly, so extremely rare character combinations could occasionally produce a count off by a character or two.
No, this tool has no connection to X’s posting API, it does not publish anything on your behalf, and it does not store, log, or transmit anything you type. All counting happens locally in your browser.
From the blog
Search, without the guesswork
What actually moves rankings and what is folklore.