Twitter/X Character Limit in 2026: History and Why Emoji Count Differently
280 has held since 2017 for free accounts. But 280 what, exactly, is the part most explanations skip.
The platform launched in 2006 with a 140-character limit, inherited from SMS: the service was originally built to work over text message, and 140 left room for a username. That number held for eleven years. In November 2017, Twitter doubled it to 280 for every account, after a shorter trial with a subset of users — the company's own stated reason was that languages like English hit the wall far more often than CJK languages did, because of how the count actually worked, which is the part that matters here.
Need the count now? Paste your text into Character Limit Checker — it applies the same weighted rule explained below.
280 isn't 280 letters
The limit is enforced in weighted characters, not in plain letters, and the weighting is asymmetric by script:
- Latin-script text, digits and most punctuation count as 1 unit each.
- Korean, Japanese and Chinese characters, along with several other scripts, count as 2 units each.
- Most emoji count as 2 units, and some multi-codepoint emoji (a flag, a family group joined with zero-width joiners) count as more.
This is exactly why the 2017 change landed the way it did. A sentence that used up 140 Latin characters (1 unit each) was already at the wall. The same sentence's length in Korean characters (2 units each) hit the same wall at roughly 70 Korean characters — and doubling the cap to 280 helped English writers proportionally more, because Korean and Japanese posts were already fitting more meaning into the same character budget under the old rule.
What this means for a real post
If you write in English with a couple of emoji, "characters remaining" on the composer and a plain .length count in code will usually agree, because most of your text is 1-unit characters. The moment you mix in Korean, Japanese, or several emoji, they diverge — a post that looks short can already be near 280 weighted units, and a naive UTF-16 length check in your own tooling will under-count it. The platform's own composer counter is the authority here, but if you're building something that needs to predict the count before a user hits "post" — a scheduler, a bot, a draft tool — you need the same weighting rule, not a generic string length.
Character Limit Checker implements this weighted count for X specifically — alongside a plain grapheme count and a UTF-8 byte count, shown side by side so you can see exactly which number the platform is actually enforcing on your draft, and where it would cut if you went over.
Related pages here: where LinkedIn's “see more” cuts a post off, for a platform that publishes no official number, Discord's six embed limits, which all apply at the same time, and 자소서 글자수, 공백 포함인가 (Korean), on why a line break counts as one character in a form's box and two in what it submits.