BuzzyX

The X character limit, and how X actually counts

Divv SaxenaPublished Last updated 5 min read

A post on X can hold 280 characters, but X does not count characters the way a word processor does. A link always counts as 23, whatever its length. Every emoji counts as 2. Chinese, Japanese and Korean characters count as 2 each, so those posts fit about 140. That is why a post that looks short can still be over the limit.

This page lists every text limit on X with the source for each one, explains the weighting rules from X's character counting documentation, and covers what to do when you have more to say than one post allows.

Every text limit on X

FieldLimitSource
Post280 charactersX counting characters
Longer post (X Premium)25,000 charactersAbout X Premium
Bio160 charactersHow to customize your profile
Display name50 charactersHelp with username registration
Username (handle)15 characters at most; letters, numbers and underscores onlyHelp with username registration

The post limit is weighted, which the next section explains. The profile limits behave more simply: X's help pages say a bio over 160 characters cannot be saved, and a username cannot contain spaces. The username checker tests a handle against those rules as you type.

How X weights characters in a post

X counts each character with a weight of 1 or 2 and adds them up. The 280 limit applies to that weighted total, not to the number of symbols you see.

Character typeWeightHow many fit in one post
Latin letters, digits, punctuation, spaces, common symbols1280
Emoji2140
Chinese, Japanese and Korean characters2140
Other Unicode2 by defaultVaries
  • An emoji is always 2. A skin tone modifier does not add to it, and neither does a family or profession emoji built from several emoji joined together. X's documentation counts the four-person family emoji as 2.
  • Accented letters count once. X normalises text before counting, so an é typed as one character or as e plus an accent both count as one.
  • Styled letters usually count as 2. The bold and italic letters made by font generators are special Unicode symbols outside the ranges X weights as 1, so a word in fancy letters uses about twice the space. The font generator shows each style's count before you copy it.
ContentHow X counts it
Any URL23 characters, whatever its real length, because X wraps it with t.co
Mentions added automatically at the start of a reply0
Mentions you type yourselfCounted normally, letter by letter
HashtagsCounted normally: the # plus the text
Attached photos, GIFs and video0

Two consequences people miss. A short link such as example.com still uses 23, so shortening a URL by hand saves nothing. And a long URL costs no more than a short one, so there is no reason to trim a link that makes sense to readers. Typing a reply's mentions by hand, instead of letting X add them, does cost characters.

Free toolX character counterPaste a draft and see its weighted count with X's rules: links as 23, emoji and CJK as 2.

When one post is not enough

There are three ways to say more than 280 characters allows, and they suit different things.

  • Cut it. Most drafts over the limit carry a warm-up sentence and a closing restatement. Delete both and the point usually fits. This is the option that reads best in a fast feed.
  • Write a thread. Split the text into numbered posts that each make sense alone. The thread splitter breaks long text at sentence boundaries into posts that fit, so no sentence is cut in half.
  • Write a longer post. X Premium subscribers can post up to 25,000 characters and use bold and italic text. X's help page notes that you can edit a longer post for an hour after sending it. Readers see the first part in the feed and tap to expand the rest, so the opening still has to earn the click.

Counting characters in your own app

If you build anything that composes posts, do not count with string length. JavaScript's length property counts UTF-16 code units, so it reports an emoji as 2 and a family emoji as 11, and it knows nothing about the 23 character rule for links. X's documentation recommends its open-source twitter-text library, which applies the weights, detects URLs the way X does and normalises text first.

js
import { parseTweet } from "twitter-text";

const result = parseTweet("Hello, world! 👋");
result.weightedLength; // 16
result.valid; // true

The example is the one in X's documentation: the fourteen characters before the emoji, including both spaces, weigh 1 each, and the emoji adds 2.

BuzzyX · X growth workspace

Grow on X with posts that sound like you.

Compose in your voice, schedule the week, find posts worth replying to and read real analytics from the X API. $29/mo after the trial, everything included.

Try BuzzyX free →See pricing7-day free trial. Card required, $0 today, cancel in Settings.

Frequently
asked questions

Something else on your mind? Get in touch.

How many characters can an X post have?

280 for a standard post. X Premium subscribers can write longer posts of up to 25,000 characters.

Do spaces count toward the X character limit?

Yes. A space counts as one character, the same as a letter or a punctuation mark.

Do links count toward the 280 characters?

Yes, but always as 23 characters. X wraps every URL with its t.co shortener, so a link counts as 23 whether it is short or very long.

Why does an emoji use two characters on X?

X weights every emoji as 2 in its count, including emoji with skin tones and emoji built from several joined together. A post can therefore hold 140 emoji.

How long can an X bio be?

160 characters. X will not save a bio longer than that, so shorten it until the count is at or under 160.

Why can I only write about 140 characters in Japanese or Chinese?

X counts each Chinese, Japanese and Korean character as 2, so a full post holds about 140 of them. The rule exists because those scripts carry more meaning per character.

Share

All growth guides