How X counts characters: emoji, links and the 280 limit
X counts a weighted length, not characters. Its documentation says most characters count as 1, emoji and Chinese, Japanese and Korean characters count as 2, and every link counts as 23. A post can hold up to 280.
The weights
X's developer documentation gives the rule as a short table (checked 2026-10-10):
| Character type | Weight | Fits in one post |
|---|---|---|
| Latin, punctuation, common symbols | 1 | 280 |
| Emoji | 2 | 140 |
| Chinese, Japanese, Korean | 2 | 140 |
| Other Unicode | 2 (the default) | varies |
The exact boundary is in the configuration file of twitter-text, the open-source library X published, which the documentation points to. Version 3 of that file sets the limit to 280, the scale to 100 and the default weight to 200, and gives a weight of 100 to four ranges of code points: U+0000 to U+10FF, U+2000 to U+200D, U+2010 to U+201F and U+2032 to U+2037. A weight of 100 on a scale of 100 counts as 1, and the default of 200 counts as 2.
The first range covers Latin, Greek, Cyrillic, Arabic, Hebrew and Thai among others. Worked out from those ranges and counted with our tool:
| What you type | Counts as |
|---|---|
| a, é, Ж (Latin, accented Latin, Cyrillic) | 1 each |
| “ and the long dash | 1 each |
| … (the single ellipsis character), ™, € | 2 each |
| Korean, Chinese or Japanese characters | 2 each |
| 😀 | 2 |
| 👍🏽 or 👨👩👧 (one emoji built from several pieces) | 2 |
| https://example.com | 23 |
Links are always 23
The documentation puts it this way: “All URLs are wrapped with t.co shortener and count as 23 characters, regardless of the original length”. A link of 19 characters and one of 83 both count as 23. That includes a bare domain: example.com with no https:// in front still counts as 23, so “see example.com now” is 31, not 19.
Not everything with a dot is a link. The library only treats a word as one when it ends in a real domain ending, so file.txt counts as 8 ordinary characters.
Emoji are 2, however they are built
“All emojis count as 2 characters, regardless of complexity”, the documentation says, and the joiners that combine emoji do not add to the count. 👨👩👧 is five code points and still 2. Our counter gives 2 to every emoji sequence the browser recognises.
One thing to know if you use the library yourself: the npm package we tested against, twitter-text 3.1.0, carries an older emoji list and counts sequences it does not recognise piece by piece. 🧑🚀 and ❤️🔥 each come out as 5 there. We ran all 3,773 emoji in Emoji 15.1 through both: 2,963 agree at 2, and 810 newer ones get a larger number from the package. We follow the documentation and count them as 2. We could not test X's own composer, so if a brand-new emoji decides whether your post fits, check it there.
What 280 holds
- 280 Latin letters.
- 140 Korean, Chinese or Japanese characters.
- 140 emoji.
- A link plus 257 Latin characters, spaces included.
The documentation also says length is calculated on text in Unicode Normalization Form C, so an é typed as one character and an é typed as e plus a combining accent both count as 1.
What a text box cannot know
Two rules depend on how a post is sent, not on its text. Names that X adds automatically at the start of a reply do not count, and media attached through the official apps counts as 0. A mention you type yourself counts like any other text, and so do hashtags. Our counter sees only the text, so it counts everything you paste.
Subscribers to X Premium can write longer posts of up to 25,000 characters. The 280 rule above is for ordinary posts.
How we checked
The rules above were read from X's documentation and the version 3 configuration file on 2026-10-10. The regular expression our counter uses to find links is identical, character for character, to the one in the npm package twitter-text 3.1.0, and a test compares the two. On top of that, 1,655 sample texts mixing links, emoji and several scripts get the same weighted length and the same link positions from both.
See the weighted length of your own text as you type.
Open the character counterSources
- X developer documentation: Counting characters (checked 2026-10-10)
- twitter-text configuration file, v3.json (checked 2026-10-10)
- twitter-text, the open-source library X published (we tested against npm version 3.1.0)
- X Help Center: About X Premium (checked 2026-10-10)
- Unicode Technical Standard #51: Unicode Emoji
Found a mistake, or a rule that has changed? Email contact@lumenlab.page. We check it, fix it and put the new date on this guide.