FIRST CH TOOLS / Text / 42 X POST COUNTER

X (Twitter) Post Counter

The length of a post on X is not a plain character count. CJK characters, kana and full-width punctuation cost 2 each, a link costs 23 whatever its length, and the limit is 280 weight. Paste a draft and this page shows the weight, what is left and exactly where the post stops fitting, detecting URLs, mentions and hashtags and counting them at their effective weight. Built for checking a draft before it goes out.

Counted as you type

Your draft
0
Weight (limit 280)
280
Left
0
Characters as written
0
Lines
Preview & overflow
URL, mention or hashtag Past the limit — will not be posted
Detected entities

No URL, mention or hashtag found yet.

Checks

    For a plain count of characters, words and lines, use Character Counter — it counts a different way from this page. Normalising full-width and half-width forms is in Full-width ⇄ Half-width Converter.

    How to Use

    1. Paste the draftWeight, remaining budget and line count update as you type. Besides the standard 280, the X Premium limits of 4,000 and 25,000 are available.
    2. Look at the overflowAnything highlighted in red is the part that would be cut. URLs, mentions and hashtags are coloured, and the table below lists their effective weight.
    3. Fix it and copyGoing over your target (275 by default) raises a warning while still being postable. "Trim to the limit" cuts the draft mechanically at the last position that fits.

    About This Tool

    Length on X is measured as a weighted character count. When the limit went from 140 to 280 in 2017, per-character weights came with it. Latin letters, digits and common punctuation count as 1; everything else — CJK, kana, full-width punctuation, emoji — counts as 2, and a post is publishable while the total stays at or below 280. That is why a Japanese post effectively stops at 140 characters, and why writing to "280 characters" always misses.

    The weight table is the one X publishes in twitter-text (configuration v3). Weight 1 covers U+0000–U+10FF (Latin, Latin Extended, Greek, Cyrillic and so on) plus the punctuation at U+2000–U+200D, U+2010–U+201F and U+2032–U+2037. That is why an em dash (—) and curly quotes (“ ”) cost 1 while Japanese brackets and 。、 cost 2. The text is normalised to NFC before counting, exactly as X does, so a "カ" followed by a combining voiced mark counts as one character (weight 2), not two.

    Links are counted at a flat 23. This page detects both links written with a scheme (https://…) and bare domains (example.com, example.co.jp/path). Note, though, that the list of top-level domains used for the bare form is a built-in list of the ones that turn up in practice, not the complete gTLD/ccTLD list X carries. A bare domain on an unusual TLD is counted here as plain text while X would count it as 23 — writing https:// in front always makes the two agree. An email address (name@example.com) is not a link on X, and is counted as plain text here too.

    Hashtags and mentions are ordinary text. They carry no special weight, so a Japanese hashtag costs 2 per character (#Webツール is 1 + 3 + 8 = 12). A hashtag made only of digits (#1) is not a hashtag on X and is not detected here either. The handles X prepends to a reply are excluded from the weight, but that happens in the composer, so this page counts only the characters you write in the body.

    The target field exists for house rules. A post written right up to the limit breaks the moment someone adds a quote, a reply handle or one more tag, and every edit turns into a rewrite. Aiming at 260–275 leaves room for an afterthought, which is why exceeding the target warns you even though the post still fits.

    Your draft never leaves the browser — the counting and the overflow highlight both run locally. Directly callable via URL parameters: /en/x-length/?text=hello / /en/x-length/?text=draft&limit=280&target=260

    Other Tools