Tweet Length Checker
Count your tweet the way X actually counts it: weighted characters, every URL priced at 23 via t.co, emoji and CJK at double weight — against the real 280-character limit. Includes a thread splitter for long drafts.
100% client-side — your draft never leaves your browser URLs always cost 23 · emoji cost 2 · CJK costs 21. Your draft
characters left
weighted used
words
URLs (23 each)
emoji
2. URLs detected
Each link below is wrapped by X's t.co shortener and costs a flat 23 characters, no matter how long the original address is.
3. Thread splitter
Over the limit? Split the draft into a numbered thread. Each tweet reserves its i/N suffix from its own 280 budget, so every part is postable as-is.
4. Worked examples
Every number below was computed by this page's own counting engine — not typed by hand.
5. How the counting works
- Weighted model, not raw length. This tool implements X's published weighted scheme (twitter-text v3 config): limit
280, every URL23, code points inside the ranges[0–4351],[8192–8205],[8208–8223],[8242–8247]cost 1, everything else costs 2. - URLs.
http(s)://links are detected and priced at 23 each. Trailing punctuation (.,!?)…) is excluded from the link, and a closing parenthesis is kept only when parentheses are balanced — mirroring how X linkifies text. Barewww.example.comlinks without a protocol are counted literally. - Emoji & CJK. Counted per Unicode code point: 😀 = 2, 👍🏽 = 4, 🇮🇩 = 4, 你好 = 4. A ZWJ family (👨👩👧👦) costs 11 here — 2 per person emoji plus 1 per joiner, since U+200D is itself a light character — deliberately conservative versus X's docs, which describe joined emoji as a single pair.
- Normalization. Text is NFC-normalized before counting, matching X: "café" costs 4 whether the é is one code point or two.
- Thread splitter. Greedy word packing; a single over-long word is hard-split by code point. The
i/Nsuffix is reserved from each tweet's own 280 budget, and every part is re-measured after numbering. Line breaks are treated as spaces when splitting. - Honest limits. This is a client-side approximation of X's rules. X can change its config; media attachments cost 0 here as on X; X Premium's 25,000-character posts are not tracked — this tool targets the standard 280 limit.
6. Frequently asked questions
Is the 280-character limit still in effect on X?
Yes. Every free X account can post up to 280 characters, and this counter tracks exactly that budget. X Premium subscribers can publish posts up to 25,000 characters, but the standard 280-character post is still the default experience on the network — and the format most reach and engagement data is based on.
Why does every URL count as exactly 23 characters?
X wraps every link in its t.co shortener before publishing, so the original address — whether 12 or 200 characters long — is replaced by a t.co link that always costs 23 characters. This tool detects http(s) links in your draft and prices each one at 23 automatically, so shortening links by hand saves you nothing.
How does X count emojis?
Under X's weighted rules, most emoji cost 2 characters each because they sit outside the light Unicode ranges. This tool counts per Unicode code point, so a simple emoji like 🎉 costs 2, while a zero-width-joiner sequence such as the family emoji 👨👩👧👦 costs 11 in total — 2 for each of the four person emoji plus 1 for each of the three joiners (U+200D is itself a light character). Note that X's own docs describe joined and skin-tone emoji as a single pair, so this tool is deliberately conservative on complex emoji: if it says your draft fits, it fits.
Why do Chinese, Japanese, and Korean characters count double?
When Twitter moved from 140 to 280 characters in 2017, it kept Japanese, Korean, and Chinese at their old ceiling: each CJK character carries roughly twice the information of a Latin character, so each one costs 2. Technically, X gives weight 2 to every code point outside a small set of light ranges (basic Latin plus common punctuation and symbols) — CJK, emoji, and arrows all cost double.
Do spaces and line breaks count toward the limit?
Yes. Spaces, tabs, and line breaks each cost 1 character, exactly like letters. The only special cases are URLs at a flat 23, media attachments at 0, and double-weight characters such as emoji and CJK.
Do photos, videos, GIFs, or polls use up characters?
No. Media attachments — photos, videos, GIFs, and polls — cost 0 characters and do not shrink your 280 budget. Only the text itself, with each URL priced at a flat 23, counts.
How is this different from a normal character counter?
A plain character counter treats every character as 1, so a draft with a long URL or several emoji can look fine there yet get rejected by X. This tool applies X's real weighted rules — URLs at a flat 23, double weight for emoji, CJK, and symbols — and adds a thread splitter that reserves the numbered i/N suffix from each tweet's own 280 budget.
Is my draft uploaded to any server?
No. All counting happens in your browser with JavaScript: your text never leaves your device, there is no account or signup, and the page keeps working even if you go offline after it loads.
7. Related tools
Free tool by NRTechStudio