Twitter Character Counter
Count your post against X/Twitter's real 280-character limit, live as you type, using the same weighted-character algorithm Twitter itself uses.
Uses X's own weighted-character algorithm (NFC normalization, most CJK and emoji characters counted as 2), not a plain character count — runs entirely in your browser, nothing you type is sent anywhere.
Need the opposite? Use Character Count Tool
What is Twitter Character Counter?
A Twitter Character Counter tells you how much of X/Twitter's 280-character limit a post uses, before you try to publish it and get rejected. It's not a plain character count: Twitter normalizes text to NFC form and weighs each character, so most Latin letters, numbers, and common punctuation count as 1 character each, while CJK characters (Chinese, Japanese, Korean), emoji, and many other non-Latin scripts count as 2. That weighting is why pasting the same sentence into a generic character counter and this one can give different numbers, and why a post that looks short can still hit the limit faster than expected if it includes emoji or non-Latin text. This tool replicates X's own published counting algorithm so the number you see here matches what the X composer would show. Counting happens live as you type, entirely in your browser. Nothing you type or paste is sent anywhere.
How to Use the Twitter Character Counter
- 1
Type or Paste Your Post: Enter your text in the box. The character count updates on every keystroke.
- 2
Watch the Count: The ring and number turn amber inside the last 20 characters, and red once you go over 280.
- 3
Trim as Needed: Edit your text until the remaining count is 0 or higher, then copy it into X/Twitter's own composer.
How the Weighted Character Count Works
X's official counting algorithm (published as the open-source twitter-text library) does two things a plain character count doesn't: 1. It normalizes your text to Unicode NFC form first, so a letter typed as a base character plus a separate combining accent mark (two code points) counts the same as the single precomposed character most keyboards actually produce. 2. It assigns each character a weight: most Latin letters, digits, and common punctuation get a weight of 1. Nearly everything else — CJK characters, emoji, and most non-Latin scripts — gets a weight of 2. The weighted total is compared against the 280-character limit, not the raw number of characters you typed.
Why Not Just Use text.length?
A plain `text.length` count in JavaScript measures UTF-16 code units, which already miscounts most emoji (many are stored as two code units, a "surrogate pair," but should count as one character). On top of that, X's own limit doesn't treat every character equally in the first place — it specifically weighs CJK and emoji as 2 regardless of how many code units they take up internally. A tool that only fixes the surrogate-pair problem still won't match what X actually shows you; matching X requires replicating its specific weighting rules, not just counting characters correctly in the generic sense.
Frequently Asked Questions
Common questions about Twitter Character Counter.