X does not count characters. It counts weight — and the difference decides whether your post sends.
Runs in your browser. Nothing you type leaves this page.
.length gets wrongX wraps every link in t.co, so a nine-character link and a nine-hundred-character link both cost the same 23. A post that looks 90 characters over can be comfortably inside the limit — and a counter that measures the raw string will refuse it.
Latin letters, Greek, Cyrillic, Hebrew, Arabic and Thai all cost 1. Chinese, Japanese and Korean characters cost 2, as do emoji. So 150 Japanese characters is 300 to X — over the limit — while your notes app, your CMS field and almost every character counter you might have drafted it in say 150 and report room to spare. The disagreement is not discovered while writing. It is discovered at the end.
A four-person family emoji is four people joined by three invisible characters. A flag is two letters in disguise. X charges 2 for the whole thing; count the pieces separately and you get 11 for the family and 4 for the flag. This is the rule almost every counter gets wrong, including ours until we tested it against X's own configuration.
| What | Cost | Example |
|---|---|---|
| Latin, punctuation, common symbols | 1 | abc → 3 |
| Greek, Cyrillic, Hebrew, Arabic, Thai | 1 | Ж → 1 |
| CJK — Chinese, Japanese, Korean | 2 | 日本語 → 6 |
| Any emoji, however complex | 2 | 👨👩👧👦 → 2 |
| Any URL, however long | 23 | https://a.co → 23 |
Counting happens after Unicode NFC normalisation, so a composed é and a decomposed e + accent give the same answer.
The tool above is the same code that runs in PostSiete Lens, a free Chrome extension that puts the real count inside X, LinkedIn, Instagram, Threads and Facebook while you type. No account, no trial. It reads — it never posts for you.
Add to Chrome — free →Yes, at a flat 23 each, regardless of the link's real length. Shortening a URL before posting saves you nothing on X.
X has offered longer posts to paying subscribers. The 280 figure here is the standard limit that applies without a subscription, which is what this counter measures against.
Because it is 300 to X. CJK characters cost 2 each, so the practical limit for Japanese, Chinese or Korean text is about 140 visible characters.
No. The counting runs in your browser; the page makes no network request with your text.
emojiParsingEnabled — the weighted length "considers all emoji as a single code point … including longer grapheme clusters combined by zero-width joiners."