Bytelify

Twitter Character Counter

Count your post against X/Twitter's real 280-character limit, live as you type, using the same weighted-character algorithm Twitter itself uses.

100% private, runs in your browser

Uses X's own weighted-character algorithm (NFC normalization, most CJK and emoji characters counted as 2), not a plain character count — runs entirely in your browser, nothing you type is sent anywhere.

Need the opposite? Use Character Count Tool

What is Twitter Character Counter?

A Twitter Character Counter tells you how much of X/Twitter's 280-character limit a post uses, before you try to publish it and get rejected. It's not a plain character count: Twitter normalizes text to NFC form and weighs each character, so most Latin letters, numbers, and common punctuation count as 1 character each, while CJK characters (Chinese, Japanese, Korean), emoji, and many other non-Latin scripts count as 2. That weighting is why pasting the same sentence into a generic character counter and this one can give different numbers, and why a post that looks short can still hit the limit faster than expected if it includes emoji or non-Latin text. This tool replicates X's own published counting algorithm so the number you see here matches what the X composer would show. Counting happens live as you type, entirely in your browser. Nothing you type or paste is sent anywhere.

How to Use the Twitter Character Counter

  1. 1

    Type or Paste Your Post: Enter your text in the box. The character count updates on every keystroke.

  2. 2

    Watch the Count: The ring and number turn amber inside the last 20 characters, and red once you go over 280.

  3. 3

    Trim as Needed: Edit your text until the remaining count is 0 or higher, then copy it into X/Twitter's own composer.

How the Weighted Character Count Works

X's official counting algorithm (published as the open-source twitter-text library) does two things a plain character count doesn't: 1. It normalizes your text to Unicode NFC form first, so a letter typed as a base character plus a separate combining accent mark (two code points) counts the same as the single precomposed character most keyboards actually produce. 2. It assigns each character a weight: most Latin letters, digits, and common punctuation get a weight of 1. Nearly everything else — CJK characters, emoji, and most non-Latin scripts — gets a weight of 2. The weighted total is compared against the 280-character limit, not the raw number of characters you typed.

Why Not Just Use text.length?

A plain `text.length` count in JavaScript measures UTF-16 code units, which already miscounts most emoji (many are stored as two code units, a "surrogate pair," but should count as one character). On top of that, X's own limit doesn't treat every character equally in the first place — it specifically weighs CJK and emoji as 2 regardless of how many code units they take up internally. A tool that only fixes the surrogate-pair problem still won't match what X actually shows you; matching X requires replicating its specific weighting rules, not just counting characters correctly in the generic sense.

FAQs

Frequently Asked Questions

Common questions about Twitter Character Counter.

A generic counter measures raw character length. This tool replicates X/Twitter's own weighted-counting algorithm, which counts most Latin text as 1 character each but counts CJK characters, emoji, and many other non-Latin scripts as 2. The two numbers only match for plain Latin-alphabet text with no emoji.

For the vast majority of text, yes — this tool implements X's published NFC-normalization and weighted-range rules exactly. The one known edge case is complex multi-part emoji sequences (such as a family emoji or a flag made of multiple joined code points): X's composer treats a recognized emoji sequence as a single 2-weight unit, while this tool weighs each code point in the sequence individually, which can overcount by a character or two for those specific emoji. Plain emoji, CJK text, and Latin text are unaffected.

No. X's real composer also shortens any URL to a fixed 23-character t.co link regardless of its real length, and that URL-shortening behavior isn't replicated here. If your post includes a link, X's actual character count may differ from this tool's count because of that, even though the weighted-character logic itself matches.

280 characters (weighted, per the rules above) for a standard post. X Premium subscribers have access to much longer posts, which this tool doesn't account for — it checks against the standard 280-character limit.

X's own published rationale is that these characters visually take up roughly twice the horizontal space of a Latin character in a typical font, so weighing them as 2 keeps the limit's effect on a post's visual length roughly consistent across scripts and character types.

No. Counting happens entirely in your browser using the same open-source counting rules X publishes. Nothing you type is sent to a server or stored.

This tool checks a single block of text against the 280-character limit. For a thread, paste and check each post's text separately.

Yes. Bytelify's Twitter Character Counter is free with no account or sign-up required.