A draft looks like it fits: 265 characters in the word counter, 42 words, no warnings. You paste it into X, add a link and a mention, and the composer says you are over. Nothing is broken. The word counter measures raw text; X applies its own counting rules, replaces links with a t.co URL and may give some characters more weight than others. The only reliable final check is the composer for the account you are using.
Part of the word counter guide. Draft and measure in the word counter, then verify the post in X before publishing.
What the word counter actually reports
The word counter reports characters with spaces, characters without spaces, words, sentences, paragraphs and estimated reading and speaking time. Those numbers are useful for drafting: they tell you whether a post is 180 characters or 420, and whether a thread is 600 words or 1,200. They do not calculate X's weighted length, thread numbering or link shortening.
Treat “characters with spaces” as a rough ceiling for plain English text. If the draft contains only Latin letters, digits and ordinary punctuation, the composer will often show a similar number. Once you add emoji, CJK characters, links or thread markers, the raw count and the composer can diverge. That is not a bug in either tool; they measure different things.
What X counts, and why the rules move
X counts most characters as one. Some emoji and some CJK characters can count as more than one, and the exact weighting is set by X, not by your text editor. A flag emoji, a skin-tone modifier or a character outside the Basic Latin range may consume more of the limit than its visual width suggests. Treat any “one emoji equals one character” rule as a simplification, not a guarantee.
The standard limit shown in the composer is 280 characters for most accounts at the time of writing, with different limits for some account types and features. Those rules can change. Do not hard-code a limit into a template or a social preview tool and assume it will stay correct. Check X's current help page and the composer for your account before a campaign that depends on a precise count.
Links are replaced, not counted as typed
X replaces links with a fixed-length t.co link. The raw URL in your draft is not what the composer counts, so a long UTM-tagged URL may cost less than its character count suggests, and a short link may still be wrapped. The replacement length is set by X and can change, so the only safe method is to paste the final URL into the composer and read the remaining count.
This matters for threads and replies. A link that fits in a standalone post may push a reply over the limit when combined with numbering and a mention. Build the post with the final link in place, then decide whether the link belongs in the first post, a reply or a follow-up. Shortening a URL for display can help readability, but it does not guarantee a particular counted length.
Link placement also changes the reading experience. A post that ends with a bare URL reads like an afterthought; a post that names the destination before the link gives people a reason to tap. If the link is essential, put it in the first post and keep the thread's promise visible. If it is supplementary, move it to a reply so the main post can stay short. The composer count follows the link wherever it goes, so decide placement before you finalize the numbering.
Threads, numbering and per-post limits
Thread numbering consumes characters in every post: “1/8”, “2/8” and so on. The word counter sees those characters as part of the draft, but it does not split the draft into posts or reserve room for the next number. If you write a 1,400-character thread, you still need to know how it divides at the composer's limit, not at the whole-draft total.
Plan the thread before drafting. Decide the number of posts, reserve space for the numbering and any link, then write each post to fit. A common workflow is to draft the thread in one document, split it into per-post blocks, count each block separately, and paste each one into the composer. Do not trust an auto-threader to preserve meaning or numbering; review the result post by post.
Hashtags and mentions count as typed. A mention such as @brand consumes characters in the post where it appears, and a hashtag consumes its letters and the hash. Neither is weighted like a link. Keep one or two hashtags, place the mention only where it is needed, and count the final text rather than the draft without them.
A manual counting workflow
- Draft without counting. Write the idea first; stopping every sentence to check a meter produces choppy posts.
- Measure the raw draft. Paste it into the word counter for characters and words. Use the with-spaces count as a rough ceiling, not a verdict.
- Split threads into posts. Number each post and count each block separately. Add a buffer for links, mentions and edits.
- Paste into the composer. Add the final link and any media. Read the remaining-character indicator for your account.
- Cut, do not cram. Remove a clause, move a detail to a reply or drop a hashtag. If the count still fails, the post is carrying too much.
Two posts measured
Example 1: a plain English post
A 38-word post has 240 characters including spaces and 203 without spaces. With only Latin letters, digits and periods, the composer will usually show a number close to 240. That leaves room under a 280-character limit for most accounts, but not enough for a long link and a mention. Paste the final version with the link before assuming it fits; the t.co replacement and the mention both change the count.
Example 2: a thread with weights
A six-post thread totals 1,500 characters in the word counter, with numbering and one link in the final post. The average is 250 characters per post, but averages hide the problem: one post contains a block of CJK text and an emoji, and the composer counts it higher than the raw text. Another post carries the link and the numbering. Count each post in the composer, keep a 20–30 character buffer, and rewrite the heavy post instead of trimming words at random.
| Element | Word counter | X composer | What to do |
|---|---|---|---|
| Plain Latin text | Counts each character | Usually counts each character as one | Use the raw count as a starting estimate |
| Spaces | Included in the with-spaces count | Counted | Do not budget from the no-spaces number |
| Emoji | Counts Unicode characters | Some count as more than one | Verify every emoji-heavy post in the composer |
| CJK characters | Counts each character | Some carry extra weight | Check the composer for the account |
| Links | Counts the full URL | Replaced by a fixed-length t.co link | Paste the final URL before judging the count |
| Thread numbering | Counts the characters | Counts them in each post | Reserve space per post, not for the thread total |
| Premium or other limits | No special handling | Account-dependent | Read the composer for your plan |
If the post is part of a longer article, the summarizing guide helps compress the source without losing the point, and grammar check before publish catches the errors that survive a character limit. The word counting guide explains the raw metrics in more detail.