A tweet is 280 characters on a standard account. That number has not moved since November 2017, when the platform doubled it from 140, and it is what every free account is working with today. X Premium raises the ceiling to 25,000 characters for a long post, with one caveat that matters more than the number: the timeline still shows only about the first 280 to everyone scrolling past.
If you are reading this because a post was refused at what your text editor swore was 250 characters, the limit is not your problem. X does not count characters. It counts weight, and three rules explain every disagreement you will ever have with it.
The answer is 280, and it is enforced
Two hundred and eighty weighted characters, on every standard account, in every language. It is a hard limit rather than a guideline: X refuses a post that goes over instead of trimming it to fit. That distinction is the reason a scheduling tool that does not check the count first fails at publish time rather than quietly publishing something clipped, and it is why the number is worth knowing before you write rather than after.
The 140 you may remember was the original limit, set by the SMS message length the service was built on top of. It doubled in November 2017 for languages written in alphabets, and it stayed at 140 in practice for languages that do not use one, for the reason in the script weighting section below.
The word doing the work in all of this is weighted. X publishes the configuration it uses to weigh a post, and it is not one unit per character you typed. Some things cost more than they look, some cost less, and a few cost nothing.
The 25,000 character long post, and what it buys
An X Premium subscription lets you publish a long post of up to 25,000 characters. It is a genuine format rather than a marketing line, and it is worth being precise about what it changes, because it is less than the number suggests.
What it changes is what you are allowed to publish. What it does not change is what anyone sees. A long post in the timeline renders the same way a 280 character one does: the opening, then a Show more link, and the other 24,000 characters behind it. Every reader scrolling past decides whether to open your piece on the strength of the first few lines, exactly as they did before you subscribed. That mechanic, and where the cut actually lands, is the whole subject of why your posts get cut off on X.
Which is the practical argument for threads over long posts for anything that is a sequence of points. Eight posts are eight separate items in the timeline, each one able to be replied to, quoted and seen on its own. How to write a thread people finish covers when to reach for one and how to structure it. Long posts earn their place when a piece has to be read in one sitting and breaking it up would damage it.
Why a link always costs 23
Every link you post is rewritten through X's own t.co shortener before it goes out, and the wrapped version is what gets counted. The result is a flat 23 characters, no matter what the original looked like. A four-letter domain and a campaign URL carrying six tracking parameters weigh exactly the same.
This cuts in both directions, which is why it causes so much confusion. A counter that measures literal string length will tell you a long link has eaten your entire post when it has taken 23 characters. The same counter will wave through a post carrying four short links that X will refuse, because those four links cost 92 between them rather than the fifty-odd characters they look like.
Two things worth knowing alongside it. Shortening a URL yourself before posting buys you nothing, because t.co wraps the shortened version anyway. And the preview card that appears under a post ending in a link is generated from the page you linked to, not from your text, so it costs nothing at all.
Why an emoji costs 2, and never 11
An emoji weighs 2, whatever it is made of. That second clause is where most character counters go wrong, because a lot of emoji are not single characters underneath. A family emoji is four separate people joined by zero-width joiners, eleven code points in total, and X still counts the whole cluster as 2. Skin tone modifiers, flags and profession emoji work the same way.
A counter that walks through a string one code point at a time reports eleven for that family, and this is the version of the bug people actually notice, because the number jumps by eleven when they type one thing. The honest way to count is by grapheme cluster, which is to say by what a reader would call a character.
The same weighting explains something that surprises people about bold and italic text on X. X has no formatting in a normal post, so every bold text generator substitutes lookalike characters from a different Unicode block. Those characters sit outside the ranges X charges 1 for, so a bold word costs double a plain one. Thirty characters of bold styling is sixty against your 280.
Japanese, Chinese, Korean and Thai get about 140
X gives a weight of 1 to the Latin, Cyrillic, Greek, Hebrew and Arabic ranges, and a weight of 2 to everything outside them. That includes Chinese, Japanese Kanji and Kana, Korean Hangul and Thai.
In practice it means a Japanese post is working with roughly 140 characters while an English one of the same limit gets 280. Russian and Arabic, which look like they ought to cost double, do not: they are inside the light ranges and get the full 280. This is also the answer to why the 2017 change was reported as not applying to Japanese, Chinese and Korean. The limit doubled for everyone; the weighting meant those languages ended up where they started.
Mixed posts are counted per character rather than per post, so a Japanese sentence containing an English product name lands somewhere between the two. If you write in more than one language, this is the single most useful thing to know about the count, because the same draft translated can fit in one language and be refused in another.
What costs you nothing
More than people expect, and it is usually good news for a draft that is over by a few characters.
- Media. Images, video and GIFs are attachments rather than text. Four images cost the same as none.
- Polls and quoted posts. Neither takes a character from your 280, though poll option text has its own separate limits.
- The link preview card. Generated from the destination page. Only the link itself is counted, at 23.
- Auto-mentions at the top of a reply. When you reply into a conversation with five people in it, those handles sit outside the post body and are free. Any handle you type yourself inside the post counts in full, including the @.
Two things that do count and often get missed: hashtags are ordinary text and cost what they are, and line breaks and trailing spaces cost one each. A post that is over by exactly three is sometimes over by the three blank lines at the bottom.
The other limit: 10,000 characters in a DM
Direct messages allow 10,000 characters, on every tier including free accounts. It is a different surface with a different rule, which is why a message that sends perfectly well in a DM is refused the moment you try to post it publicly.
Worth knowing if you are drafting outreach in the same document as your posts, because the two live at wildly different lengths and a template written for one will not survive being pasted into the other.
The character count is the smallest of the rules deciding whether a post lands. Where the timeline cuts your text, when it shows it, and what is worth saying in the space you have are covered across the rest of the X guides, starting with what to actually post.
Frequently asked questions
How many characters is a tweet?
A tweet is 280 characters on a standard X account. That limit has been in place since November 2017, when the platform doubled it from 140. An X Premium subscription raises the ceiling to 25,000 characters for a long post, but the timeline still shows only about the first 280 of it to anyone scrolling past.
Why does X say my post is too long?
Because X counts weight rather than characters, and three things weigh more than they look. Every link counts as a flat 23 characters however short or long it is, every emoji counts as 2, and Japanese, Chinese, Korean and Thai characters count as 2 each. A draft that a text editor reports as 250 characters can be over 280 by X's arithmetic, and X refuses the post rather than trimming it.
How long can a tweet be with X Premium?
Up to 25,000 characters. The caveat is what everyone else sees: the timeline still shows roughly the first 280 characters with a "Show more" link underneath, so a long post has to earn the tap with its opening lines. A thread is often the better structure, because each post in it is a separate item in the feed.
Do hashtags, mentions and images count toward the limit?
Hashtags and any handle you type yourself count in full, including the # and the @. Images, video, GIFs, polls, quoted posts and the link preview card cost nothing at all. The handles X adds at the top of a reply are also free, because they sit outside the post body.
How many characters is a Twitter DM?
Direct messages allow 10,000 characters, and that applies on every tier including free accounts. It is a separate limit from the 280 on a public post, which is why a message that sends fine in a DM is refused when you try to post it.
Has the tweet character limit changed from 280?
No. The standard limit has been 280 characters since November 2017 and it has not moved since. What changed is that X Premium added a much longer post format at 25,000 characters, which is an entitlement on top of the base limit rather than a replacement for it.