How links and emoji really count toward your 280

By Mara Ellis Published Updated 2 min read

Short answer

On X, every link counts as a flat 23 characters no matter its real length, because X wraps it with its t.co shortener. Every emoji weighs 2 characters, including complex ones like family sequences. CJK characters also weigh 2. Plain Latin letters weigh 1. So a post with one link and two emoji has already spent 27 characters before any words.

Key takeaways

  • A link always counts as 23 characters, whatever its true length.
  • Every emoji weighs 2, and even multi-part emoji like family sequences still count as 2, not more.
  • Chinese, Japanese, and Korean characters weigh 2 each; plain Latin letters weigh 1.
  • X measures text in Unicode NFC, so "café" counts as 4 characters, not 5.

The counter in your head is probably wrong about two things: links and emoji. X does not count raw characters; it counts weighted characters, and the weights are published. Here is how they actually work, with the numbers from X’s own documentation.

Every link counts as a flat 23 characters, regardless of how long the URL really is. X automatically wraps each link with its t.co shortener, so https://example.com and a 120-character URL both cost exactly 23. There is no point shortening a link by hand to save space, and pasting a long, readable link is fine.

How are emoji counted?

Every emoji weighs 2 characters, and that stays true even for complex emoji. A simple emoji counts as 2, and a multi-part sequence joined with zero-width joiners, such as a family emoji, still counts as 2 in total rather than once per component. Skin-tone modifiers do not add to the count either. So emoji are predictable: each visible emoji is 2.

Do Chinese, Japanese, or accented characters count differently?

CJK characters weigh 2 each, while most accented Latin characters weigh 1. Chinese, Japanese, and Korean characters are counted as 2, which is why a post in those languages fits roughly 140 characters. Accented Latin text like “café” counts as 4 because X normalizes text to Unicode NFC first, combining the accent into one character.

What does this mean when you are tight on space?

Budget 23 characters for each link and 2 for each emoji before you count your words. A post with one link and three emoji has already spent 29 of your 280. If you are close to the limit, dropping a decorative emoji frees 2 characters instantly, and trimming words is covered in how to fit a long tweet into 280.

Sources

  1. Counting characters, X Developer Platform documentation.
  2. twitter-text, X’s open-source character-counting library, GitHub.

Frequently asked questions

Does a shorter URL save characters?

No. X wraps every link with t.co and counts it as 23 characters whatever its real length, so hand-shortening a URL saves nothing.

Why does a family emoji count as only 2?

X counts the whole zero-width-joiner sequence as a single emoji. A family emoji is several code points joined together, but X weights the visible emoji as 2, not each part.

How many emoji can fit in one post?

Up to 140, because each emoji weighs 2 and the limit is 280 weighted characters. The same math gives roughly 140 CJK characters.

Does attached media count against my characters?

No. Photos, videos, and GIFs attached through official clients count as 0 characters. Only text, links, and emoji count.

Does twonvert count links and emoji exactly like X?

twonvert counts plain text and emoji the way X does, but it does not yet discount links to 23 characters, so subtract a little from its count when your post contains a link.