Skip to main content
Posts on X can contain up to 280 characters. However, not all characters count equally—emojis, URLs, and certain Unicode ranges have special counting rules.

Character weights

X uses a weighted character counting system. Most characters count as 1, but some count as 2:
Character typeWeightMax characters
Latin, punctuation, common symbols1280
Emojis2140 emojis
CJK (Chinese, Japanese, Korean)2140 characters
Other Unicode2 (default)Varies
Use the open-source twitter-text library to accurately count characters in your app.

Emoji counting

All emojis count as 2 characters, regardless of complexity:
EmojiDisplayCharacter countUnicode
👾Single emoji2U+1F47E
🙋🏽With skin tone2🙋 + 🏽 modifier
👨‍🎤Combined with ZWJ2👨 + ZWJ + 🎤
👨‍👩‍👧‍👦Family sequence24 emojis + 3 ZWJs
Zero-width joiners (ZWJ) combine emojis visually but don’t add to the count.

URL handling

All URLs are wrapped with t.co shortener and count as 23 characters, regardless of the original length:
https://example.com                    → 23 characters
https://example.com/very/long/path     → 23 characters
This applies to any valid URL detected in post text.

Special cases

ContentCounting rule
@mentions in repliesAuto-populated @mentions at the start of replies don’t count
New @mentions@mentions you add manually count normally
MediaAttached media (via official clients) counts as 0 characters
HashtagsCount normally (# + tag text)

Text encoding

The X API requires UTF-8 encoding. Character length is calculated using Unicode Normalization Form C (NFC). Example with café:
FormBytesCharacters
NFC (composed)c a f é4
NFD (decomposed)c a f e ́5
X normalizes to NFC, so both encode to 4 characters.

Implementation

Use the official twitter-text library for accurate character counting:
import { parseTweet } from 'twitter-text';

const result = parseTweet('Hello, world! 👋');
console.log(result.weightedLength); // 16
console.log(result.valid);          // true
The library handles all edge cases including emoji sequences, URL detection, and Unicode normalization.

Resources