glossary

How the X Character Limit Works, Number by Number

Taras Shynkarenko
Taras Shynkarenko
Updated: 7 min read
How the X Character Limit Works, Number by NumberHow the X Character Limit Works, Number by Number

TL;DR

7 min read

X documents a maximum of 280 characters for a post on its Counting Characters page, and X's Help Centre documents 25,000 characters for anyone subscribed to any paid tier of X Premium. The count is weighted rather than raw, since X's live twitter-text configuration file gives a weight of 1 to code points 0 through 4351 and a weight of 2 to everything else, so CJK characters and emoji each cost two. Every URL counts as 23 characters whatever its real length, attached media counts as zero, and X publishes no current figure at all for the length of a direct message.

What is the X character limit?

Free accounts get 280 characters per post, and that number is the X character limit stated on X's own Counting Characters documentation page, which opens with the line "Posts on X can contain up to 280 characters" (checked 9 September 2026). Anyone subscribed to any paid tier of X Premium can post up to 25,000 characters instead, a figure X states in its Help Centre article About X Premium: "Longer posts allow subscribers to post up to 25,000 characters." Both numbers cap the text of one post rather than a chain of them, so writing past whichever cap applies to you means posting a reply thread.

X lists longer posts under the features available to every Premium tier, including the cheapest one, so the 25,000 figure is not restricted to the higher tiers. The same Help Centre article adds that longer posts work in a quote or a reply, and that everyone can read a longer post while only subscribers can create one.

Free vs Premium post budget
Free account280
X Premium, any tier25,000
Both figures come from X's own documentation, checked 9 September 2026.

Does X still count some characters as two?

X counts characters by weight rather than one at a time, and the file that defines those weights is still published. X's Counting Characters page links to a configuration file in the open source twitter-text library, and that file, config/v3.json, sets maxWeightedTweetLength to 280, scale to 100 and defaultWeight to 200, then names four code point ranges that carry a weight of 100 instead: 0 to 4351, 8192 to 8205, 8208 to 8223, and 8242 to 8247 (checked 9 September 2026).

Divide those weights by the scale of 100 and the rule reads as one unit of budget for any character inside those four ranges and two units for every other character. Latin, Greek, Cyrillic, Hebrew and Arabic all sit inside 0 to 4351 and cost one each. Chinese, Japanese and Korean characters sit far above 4351 and cost two each, which is why X's own Counting Characters page puts the practical CJK maximum at 140 characters rather than 280. Emoji cost two each as well, and X's page states that a family sequence built from four emoji and three zero width joiners still counts as 2, not as its raw code unit length.

How does X count URLs, media and quote posts?

X swaps every URL in a post for a t.co link and charges it a flat 23 characters. The Counting Characters page states that all URLs "are wrapped with t.co shortener and count as 23 characters, regardless of the original length", and the twitter-text configuration file carries the same number as transformedURLLength: 23. A twelve character link and a two hundred character link therefore cost the same.

The same page states three more counting rules. Attached media posted through official clients counts as 0 characters. Hashtags count normally, meaning the hash symbol plus the tag text. The @mentions X auto populates at the start of a reply do not count, while any mention you type yourself does. X documents nothing about how the quoted post's link is counted inside a quote post, so treat any figure you see for that as unverified.

Which X length limits does X actually document?

X publishes hard numbers for post text, profile fields and media alt text, and publishes nothing for direct messages. The table separates what X states in its own material from what circulates without an X source, checked 9 September 2026.

FieldValueSourceX documented?
Post text, free account280 weighted charactersCounting CharactersYes, developer docs
Post text, any X Premium tier25,000 charactersAbout X PremiumYes, Help Centre
Any URL after t.co wrapping23 charactersCounting Characters and transformedURLLength in config/v3.jsonYes, both
Each emoji2 charactersCounting CharactersYes, developer docs
CJK and most non-Latin code points2 characters eachdefaultWeight: 200 in config/v3.jsonYes, developer docs
Attached media through official clients0 charactersCounting CharactersYes, developer docs
Auto-populated @mentions at the start of a reply0 charactersCounting CharactersYes, developer docs
Display name50 charactersHelp with username registrationYes, Help Centre
Handle, the @username15 charactersHelp with username registrationYes, Help Centre
Bio160 charactersHow to customize your profileYes, Help Centre
Image alt text1,000 charactersmaxLength on the alt text field in X's OpenAPI specificationYes, developer docs
Direct message text10,000 characters is widely reportedNo X source found in the Help Centre or the API specificationNo
Quoted post link inside a quote postreported as not countingNo X source foundNo

Both rows in the bottom half match what many people report from testing. Neither is a published specification, so do not put either in a client deliverable as one.

A close-up of a phone screen showing text being typed, next to the section explaining how to calculate the weighted length left in a post.

How do you work out what a post has left?

Add one unit for every light character, two for every heavy one, and 23 for every link. The formula X's own library implements is:

weighted length = (light characters x 1) + (heavy characters x 2) + (23 x number of URLs)

Take a post with 200 plain Latin characters, three emoji and one link. That gives 200 + (3 x 2) + 23 = 229 weighted characters, leaving 51 of the 280 for a free account. Now take a post written in Japanese with 140 characters and no link: 140 x 2 = 280, which lands exactly on the cap with no room for a URL at all. A Japanese post carrying a single link is capped at 128 characters, since 280 minus 23 leaves 257 units and 257 divided by 2 rounds down to 128.

Same 280 budget, two very different posts
English post with a link
  • 200 Latin characters cost 200
  • Three emoji cost 6
  • One URL costs 23, whatever its length
  • 229 used, 51 left
Japanese post with a link
  • Every character costs 2
  • One URL still costs 23
  • 257 units left for text after the link
  • 128 characters is the ceiling
Weights and the 23 character URL length per X's Counting Characters page and twitter-text config/v3.json, checked 9 September 2026.

How long can a display name, handle and bio be on X?

X caps a display name at 50 characters, a handle at 15, and a bio at 160. The 50 and 15 figures come from the Help Centre article Help with username registration, which states that a username "cannot be longer than 15 characters" while "your name can be longer (50 characters)". The 160 figure comes from How to customize your profile, which lists the editable field as "Bio (maximum 160 characters)". The same username article adds that a handle accepts only letters, numbers and underscores, and that no handle may contain the words X or Admin unless it is an official X account.

What is the character limit for a direct message on X?

X does not publish a character limit for a direct message anywhere its Help Centre or its developer documentation states plainly. The Help Centre article About Direct Messages walks through sending, editing, pinning and reporting messages without naming a length, and Direct Message FAQs names an account limit of 500 direct messages sent per day rather than any per message character count. X's own OpenAPI specification sets no maxLength on the message text field, and it sets none on the post text field either, so the API contract is silent on both.

A figure of 10,000 characters circulates widely for direct messages. Cite it as commonly reported and unconfirmed rather than as a specification, because the number X actually publishes for DMs is the 500 per day sending cap. The one length figure that page does state is unrelated: it warns that a DM sent through SMS should stay under 160 characters, because a carrier splitting a longer text can push the remainder out as a public post.

RedReplier
RedReplier

Get Started

Reddit, X, Bluesky & HN

Real-time intent alerts

Unlimited AI replies

Ranked by buyer intent

A person scrolling a social feed on a laptop, next to the section on why platform character limits matter for monitoring mentions.

Why do these limits matter outside the composer?

A 280 character network and a 25,000 character network produce different signals for the same buying intent, which changes how you read what you monitor. RedReplier's X monitoring watches X alongside Reddit, Bluesky, Facebook and Hacker News, ranks the mentions it finds by buying intent, and explains with AI why each one was flagged. The wider practice is covered in X social listening, and the query syntax for narrowing a search before you monitor it is covered in advanced search operators on X.

The neighbouring platforms all draw the line somewhere different: the Bluesky character limit is 300 graphemes, the LinkedIn post character limit is 3,000 characters, and the Reddit post character limit is different again. Knowing which cap a platform enforces tells you whether a mention you surface is a full argument or a one line aside.

Frequently Asked Questions

Is the X character limit still 280?

X's Counting Characters documentation states that posts on X can contain up to 280 characters, checked 9 September 2026. That 280 is a weighted count rather than a raw one, so a post of 280 emoji or 280 Chinese characters will not fit. X Premium subscribers on any paid tier get 25,000 characters instead, per X's Help Centre.

Do CJK characters really count as two?

Yes, and X's live configuration file is the reason. The twitter-text config/v3.json file sets a default weight of 200 against a scale of 100, and grants the reduced weight of 100 only to code points 0 through 4351 plus three small punctuation ranges. Chinese, Japanese and Korean characters sit above 4351, so each costs two units, and X's own page puts the CJK maximum at 140 characters.

Every URL counts as exactly 23 characters after X wraps it in a t.co link, whatever its original length. X states this on its Counting Characters page and repeats the number as transformedURLLength in the twitter-text configuration file. Shortening a URL yourself before posting saves nothing.

Do photos and videos count against the X character limit?

No. X's Counting Characters page states that media attached through official clients counts as 0 characters. Attaching an image, a video or a GIF therefore leaves the full text budget intact.

How long can an X bio be?

X's Help Centre article on customizing your profile lists the bio field as a maximum of 160 characters. The same set of Help Centre articles caps a display name at 50 characters and a handle at 15. Those three figures are among the few length limits X states in plain language for members rather than for developers.

What is the X direct message character limit?

X publishes no current character limit for a direct message. Its Help Centre articles on direct messages describe sending, editing and reporting without naming a length, and X's OpenAPI specification sets no maximum on the message text field. The 10,000 character figure that circulates has no X source behind it, so cite it as commonly reported rather than documented.

What happens if a post runs over the X character limit?

Both the 280 character cap for free accounts and the 25,000 character cap for X Premium apply to a single post, not to a chain of them. Writing past whichever limit applies to your account means splitting the text into a reply thread instead. X offers no way to post more text in one block once you hit the cap for your tier.

Why doesn't shortening a URL yourself save space on X?

X replaces every link with a t.co wrapper and charges a flat 23 characters, no matter how long the original URL was. A short link and a long link end up costing the same 23 units. Shortening the URL yourself before you post saves nothing.

Can non-subscribers read an X Premium post longer than 280 characters?

Anyone can read a post longer than 280 characters, but only X Premium subscribers can write one, according to X's Help Centre article About X Premium. The same article notes that longer posts also work inside a quote or a reply. The 280 character cap only limits who can compose the longer text, not who can see it.

Is the 25,000 character limit only for the top X Premium tier?

No, X lists longer posts among the features available on every Premium tier, including the cheapest one. The 25,000 character limit is not reserved for higher-priced tiers. Any paid subscription level unlocks the same post length.

See us more often in Google

One click marks RedReplier as a preferred source, so our articles sit higher in your Top Stories, AI Mode, and AI Overviews.

Before you go...

RedReplier

RedReplier

Catch every buyer asking for what you sell

RedReplier watches Reddit, X, Bluesky and Hacker News in real time, ranks every thread by buyer intent, and drafts your reply, so you get there first.

Reddit, X, Bluesky & HN

Real-time intent alerts

Unlimited AI replies

Ranked by buyer intent

Related Articles