📈 SEO & Marketing Free Forever

Twitter X Character Counter, Count & Preview Your Post

This Twitter X character counter uses the platform's real weighted counting rules, URLs, emoji, and wide characters included, so your count matches what X actually enforces. See a live post preview and automatically split long text into a numbered thread, no sign up needed.

0 of 280

Start typing to see your count.

0
Counted by X
0
Visible characters
0
Links
0
Mentions
0
Hashtags

Why this number differs from a plain character count. X does not count characters the way a text editor does, and the difference is big enough to get a post rejected.

  • Links cost a flat 23. Every URL is rewritten as a t.co link before posting, so a 4 character link and a 300 character link both cost exactly 23.
  • Some scripts cost double. Chinese, Japanese, Korean and several other ranges are charged 2 per character. A 140 character Japanese post is already at the limit.
  • Emoji cost 2, not 1 or 4. A plain count reads an emoji as two or more units because of how text is stored. X charges a whole emoji, including flags and skin tones, as a single double-weight character.

Highlighted in the box above: links, mentions and hashtags. Mentions and hashtags count normally, they just get linkified.

About This Tool

Why this counter does not just run .length, and what it counts instead

Typing 280 plain characters into X does not always mean you have 280 characters of room left, and typing fewer than 280 does not guarantee you fit. X counts differently than a naive character count, and this tool implements that real weighting rather than the shortcut most simple counters take. Everything runs client side against the text you type, nothing is posted anywhere.

The two weighting rules it actually implements

Every URL counts as exactly 23 X automatically wraps any link you post through its t.co shortener, and every wrapped link occupies the same fixed 23 characters in the count regardless of how long the original URL actually is. This tool finds links the same way X does, with or without https and www, as long as the address ends in a real domain such as .com or .io, and adds 23 to the total for each match instead of counting its real character length.
Wide characters count as 2 X gives weight 1 to Latin, Greek, Cyrillic, Arabic, Hebrew, Devanagari and Thai letters and to common punctuation. Everything else counts as 2, including CJK ideographs, Hangul, fullwidth forms and symbols like € or …. Every emoji counts as 2 as a whole, so a flag, a skin tone or a family emoji built from several code points still costs just 2.
// how each character is weighed function weigh(text) { text = text.normalize('NFC'); var total = 0; // links first: each one costs 23 // emoji next: a whole sequence costs 2 // then every other code point: // 1 if in 0-4351, 8192-8205, // 8208-8223 or 8242-8247 // 2 for everything else return total; }
>

The tool walks the text by code point, not by UTF-16 code unit, so a four byte character is never split into two halves. Emoji sequences are matched first, so a family emoji made of five code points costs 2, not 8.

ContentNaive .length countThis tool's weighted count
https://example.com/a/very/long/path3623
日本語 (3 CJK characters)36
👨‍👩‍👧 (family emoji)82
Plain ASCII sentenceSameSame
The ring and remaining count use the weighted number, not the typed number. The tool tracks both. Visible characters is what you see in the box. Counted by X is the weighted total that decides whether the post goes through. The ring and the remaining figure use the weighted total, so a tweet full of emoji or CJK text will show far less headroom than the number of characters you literally typed would suggest.
Live tag highlighting

URLs, hashtags and mentions are detected with separate regex patterns and colored in the box as you type and in a live post preview, so you can see at a glance what X will treat as a link, tag or mention.

Thread splitter

The splitter fills each post as far as the limit allows, then backs up to the nearest paragraph, sentence or word break. It never cuts a link or an emoji in half, and it keeps room for a suffix like 3/7 so each numbered post still fits. You can turn numbering off, copy each post or download the whole thread.

Real t.co 23-character URL weighting Unicode-aware wide character doubling Not a naive .length counter

Platform limit references

Writing to a hard limit

Checking whether a post with multiple links still fits under 280 before you paste it in, writing in Japanese, Korean or Chinese and seeing your real remaining count instead of a misleadingly generous one, splitting a long announcement into a properly numbered thread automatically, and drafting social copy for a client where every character genuinely counts.

Common Questions

FAQ: Twitter/X Character Counter

X automatically wraps every link you post in a t.co shortened URL for tracking and security scanning, regardless of how short your original link already was. That wrapped link is a fixed length, so even a link like "x.co/a" counts the same 23 characters as a very long one. This is why this counter always applies the 23 character weight to any detected URL rather than the actual text length.

Standard accounts are limited to 280 weighted characters per post, which is what this tool checks against. X Premium (paid) subscribers have access to a much higher limit, up to 25,000 characters for longer form posts, though 280 is the limit most people plan around. Use the Free and Premium switch above the box to check against either one.

Most emoji live outside the basic Unicode range used by standard Latin text, in ranges the platform classifies as "wide," similar to how CJK characters are treated. X applies the same double weighting to these characters to keep post length roughly consistent with their visual and technical footprint, since a single emoji can require more storage and rendering space than a standard letter.

No, @mentions count as regular text, one character per character, they are not shortened or weighted specially the way URLs are. This tool treats @handles the same as any other typed text in the counting logic.

It breaks at paragraph, sentence or word boundaries, never inside a word, link or emoji, and reserves room in each post for the "1/5" style counter suffix, using the same weighted counting rules as the main counter. It's a very close approximation to a manually planned thread, though always do a final read through before posting, since context and flow across posts is something only a human can judge well.

No, hashtags are counted as regular text, character by character including the # symbol, they receive no special shortening or weighting treatment, unlike URLs. A hashtag like #MondayMotivation simply counts each of its characters normally.

This tool implements the publicly documented core rules of X's counting algorithm, URL shortening and wide character weighting, which covers the vast majority of real world cases accurately. X's exact internal implementation includes some additional edge case handling for unusual Unicode sequences that isn't fully documented publicly, so extremely rare character combinations could occasionally produce a count off by a character or two.

No, this tool has no connection to X's posting API, it does not publish anything on your behalf, and it does not store, log, or transmit anything you type. All counting happens locally in your browser.