X does not count characters the way you do
Most counters tell you how many characters you typed. X enforces something different: a weighted budget of 280 units, where three rules change what a character costs.
- Every link costs 23. X wraps URLs in t.co before counting, so a long tracking URL and a short one cost exactly the same.
- Non-Latin script costs 2 per character. Hindi, Arabic, Chinese, Japanese and Korean all weigh double, which halves your real budget to about 140 characters.
- Emoji cost 2, not 4 or 8. A flag or skin-tone emoji is several codepoints but one grapheme, and X charges it as one at weight 2.
What this means if you post in Hindi
It is the rule that catches Indian accounts out most often. A 140-character Hindi post uses the entire 280 budget, so a thought that fits comfortably in English will not fit in Devanagari. Transliterated Hinglish written in Latin script weighs 1 per character and gets the full 280.
The counter flags this as soon as it sees a double-weight character, so you can see the gap between what you typed and what X charges you.
Frequently asked questions
What is the Twitter (X) character limit?
280 characters on a free account. X Premium raises the cap to 25,000, but the timeline still collapses anything past 280 behind a "show more", so 280 remains the number worth writing to.
How many characters does a link use on X?
Exactly 23, however long the URL actually is. X wraps every link in its t.co shortener before counting, so a 200-character tracking URL costs the same 23 as a short one. This is the rule people most often get wrong, usually by assuming links cost more than they do.
Why does my Hindi post hit the limit sooner?
X weights characters rather than counting them. Latin script weighs 1 per character, but Devanagari, Arabic, Chinese, Japanese and Korean all weigh 2. A post in Hindi therefore has roughly half the room of the same post in English: 140 characters, not 280.
How much does an emoji count for?
Two, and only two, even for a flag or a skin-tone emoji that a naive counter reports as four or eight. X counts the whole emoji as one grapheme at weight 2.
Does this count the same way as X itself?
It applies the three rules X publishes in its developer documentation: t.co link weighting at 23, the weighted character ranges, and grapheme-level emoji counting. It is not connected to X and cannot see your account, so treat it as an accurate model rather than a guarantee.