Skip to content
Twit'n'Go

Guide

How X (Twitter) Counts Characters

The 280 on X isn't 280 letters. It's 280 weighted units, and once you know the weights, posts stop mysteriously going over.

Twit'n'Go · · 2-minute read

Short answer

X counts weighted characters: code points in a few ranges (most Latin, Greek, Cyrillic, Hebrew, Arabic and common punctuation) count 1, everything else including emoji and CJK counts 2, any link counts 23, and text is NFC-normalized first; the limit is 280.

Key takeaways

  • Limit: 280 weighted characters for a standard post.
  • Weight 1: code points U+0000 to U+10FF plus some general punctuation (dashes, curly quotes, primes).
  • Weight 2: everything else, including emoji (however complex), Chinese, Japanese and Korean.
  • Every link: 23, because X wraps it with t.co.
Jump to a section
  1. What are the weights?
  2. Why is every link 23?
  3. What's NFC normalization?
  4. What surprises people?
  5. How can I check a post?

What are the weights?

X gives each character a weight of 1 or 2, and a post can hold 280 units. The light ranges, from X's open-source configuration, are:

Code points What's in there Weight
U+0000 to U+10FF Latin, Greek, Cyrillic, Armenian, Hebrew, Arabic, Indic scripts, Thai, Georgian and more 1
U+2000 to U+200D Spaces of various widths 1
U+2010 to U+201F Hyphens, dashes, curly quotes 1
U+2032 to U+2037 Prime marks 1
Everything else Emoji, CJK, Hangul, the ellipsis …, most symbols 2

So 140 Japanese characters fill a post, and so do 140 emoji.

X replaces every link with a t.co short link and counts that length, 23, regardless of the original. A 300-character URL and x.com cost the same. That's also why stripping tracking parameters doesn't save space on X; it's still worth doing for privacy, which the link cleaner handles.

What's NFC normalization?

Before counting, X converts text to Unicode Normalization Form C, where a letter and its accent become one character where possible. "café" can be typed as four code points or as five (e followed by a combining accent). After NFC both are four, so both count 4.

What surprises people?

  • The ellipsis. … (U+2026) isn't in the light ranges, so it counts 2.
  • The em dash. — (U+2014) is in the light range and counts 1.
  • Emoji with variation selectors. ❤️ is a heart plus an invisible selector; it still counts 2 as one emoji.
  • Bare domains. example.com in your text is detected as a link and counts 23, even without https://.

How can I check a post?

Paste it into the composer. It applies these rules, shows the count in a ring and highlights whatever goes past 280. For longer pieces the thread splitter uses the same counting to make every part fit.

FAQ

Do @mentions count?

Mentions you type count like normal text. When you reply, the handles X adds automatically at the start of the reply don't count.

Do images and videos use characters?

No. Media attached through X's apps doesn't take any of the 280.

Why does a flag emoji count 2 if it's two code points?

X counts each emoji as 2 whatever it's made of: flags, skin tones and family sequences joined with zero-width joiners all count 2.

Sources

  1. X Developer Platform: Counting characters
  2. twitter-text configuration (v3 weights)
  3. Unicode Standard Annex #15: Normalization Forms

Share this: X · LinkedIn · Reddit ·