How Many Characters on X (Twitter)? Limits & Counting Rules
Discover character limits on X (Twitter): 280 for free posts, 25,000 for Premium, 160 for bios, and 10,000 for DMs. Learn how weighted counting works.
Standard posts on X (formerly Twitter) permit up to 280 characters for free accounts, while X Premium subscribers can publish longform posts of up to 25,000 characters. In addition to standard posts, specific character limits govern every feature across the platform: profile bios allow 160 characters, display names permit 50 characters, usernames (@handles) are capped at 15 characters, and Direct Messages support up to 10,000 characters.
Disabled Post Button or Highlighted Text: Exceeding the 280-Character Limit
Symptom: Post Button Inactive or Over-Limit Text Highlighted
When drafting a post on X, you may notice that the post button becomes greyed out and unclickable, or the composer highlights excess characters at the end of your draft in red. The interface prevents you from clicking publish, effectively blocking your post until text is removed.
Cause: Exceeding Tiered Character Caps
This issue occurs because your draft exceeds the maximum character capacity allocated to your account tier. Standard free accounts on X operate under a strict 280-character limit for posts, replies, and quote posts. If your text exceeds 280 characters, the composer halts publication.
Subscribers to X Premium unlock significantly higher character caps. X Premium accounts can compose longform posts up to 25,000 characters. Historically, the platform’s character limits underwent several updates:
- March 21, 2006: Launched with a 140-character limit per post, based on standard SMS text messaging limits of 160 characters with 20 characters reserved for address headers.
- November 7, 2017: Doubled the standard post limit from 140 to 280 characters to create parity across different languages and give users more room for self-expression.
- February 9, 2023: Introduced a 4,000-character limit for Twitter Blue (now X Premium) subscribers while keeping free accounts at 280 characters.
- April 13, 2023: Increased the subscriber limit to 10,000 characters.
- June 20, 2023: Expanded the X Premium post limit to its current 25,000-character maximum.
Fix: Trim Drafts, Create Threads, or Upgrade Tier
To resolve an inactive post button or highlighted text, you have three primary solutions:
- Edit and Trim Text: Edit your message to remove redundant words or spaces until the total length drops below 280 characters.
- Split into a Thread: Use the thread composer to divide long text into multiple sequential posts, each staying within the 280-character boundary.
- Upgrade Account: Subscribe to X Premium if you regularly need to publish longform content, articles, or extended updates up to 25,000 characters in a single post.
Rapidly Decreasing Counter: Understanding X’s Weighted Character Rules
Symptom: Remaining Character Tally Drops Faster Than Typed Characters
While typing your post, the remaining character counter in the composer may decrease by more than one count per typed symbol. You might type a five-word phrase or add a link and see 23 characters vanish instantly from your remaining total.
Cause: Weighted Character Counting and Encoding System
X does not count characters using a simple 1-to-1 plain text tally. Instead, the backend applies a weighted character counting system based on Unicode codepoints, link wrapping rules, and media handling.
1. Standard Text vs. CJK Characters
- Latin Letters, Numbers, and Symbols: Standard English characters, standard punctuation marks, symbols, and single space bars count as 1 character weight each.
- Chinese, Japanese, and Korean (CJK) Characters: CJK ideographs carry a weight of 2 characters each. Because Asian languages convey more meaning per character than English, doubling their weight maintains balance across languages.
2. Emojis and Complex Sequences
- Universal Emoji Weight: All emojis count as 2 characters, regardless of visual complexity.
- Modifiers and Joiners: Emojis containing skin tone modifiers, profession combined symbols, or multi-person family sequences still count as exactly 2 characters. Zero-width joiners (ZWJ) combine emojis visually on screen but do not add to the overall character count.
3. Web URLs and Links
- Automatic t.co Wrapping: Any valid web link included in post text is automatically shortened using X’s official t.co domain wrapper.
- HTTPS Links: Every HTTPS URL counts as exactly 23 characters toward your limit, whether the original link is 15 characters long or 200 characters long.
- HTTP Links: Standard HTTP URLs count as 22 characters.
4. Media Attachments and Descriptions
- Media Cards: Photos, videos, GIFs, or polls attached to a post via official client apps count as 0 characters against your 280-character limit.
- Alt Text Limits: Optional image descriptions (alt text) provided for accessibility carry their own independent limit of 1,000 characters per image description.
5. Mentions, Hashtags, and Encoding
- Hashtags and Added Mentions: Hashtags (#topic) and manually typed @mentions count normally (1 character per letter/symbol, including
#and@). - Auto-Populated Reply Mentions: Auto-populated @mentions at the beginning of direct replies do not count toward your character allowance.
- Unicode Normalization: X processes text using UTF-8 encoding normalized under Unicode Normalization Form C (NFC), ensuring accent marks and composed glyphs count consistently.
Fix: Adjust Formatting for Weighted Elements
When drafting posts with heavy media or links, reserve 23 characters for every web link you plan to insert. If your character budget is tight, limit the use of CJK characters or emojis, as each emoji reduces your remaining post capacity by 2 characters.
Profile Save Errors and Truncated Messages: Bio, Handle, and DM Boundaries
Symptom: Profile Form Rejection or Direct Message Delivery Failure
When attempting to update your profile bio, change your display name, register a handle, or send a Direct Message, the system throws a saving error or cuts off your text unexpectedly.
Cause: Specific Surface Limits Across the Platform
The 280-character and 25,000-character rules apply specifically to feed posts. Other features on X carry distinct character caps:
- Profile Bio (160 Characters): Your profile bio is capped at 160 characters. Because emojis count as 2 characters each, adding multiple emojis or long URLs into a bio quickly consumes the 160-character allowance.
- Display Name (50 Characters): The visible name displayed above your account handle supports up to 50 characters. It accepts letters, spaces, and emojis, but cannot exceed 50 characters total.
- Username / Handle (15 Characters): Account handles (@username) must be between 5 and 15 characters in length. Handles are strictly restricted to letters, numbers, and underscores; spaces and special symbols are prohibited.
- Direct Messages (10,000 Characters): Private messages sent via DMs support up to 10,000 characters per message, providing extensive room for private discussions without splitting text into multiple messages.
Fix: Conform Text to Surface-Specific Limits
- For Bios: Keep your summary concise and within 160 characters. Remove unnecessary spaces or excess emojis.
- For Display Names: Keep display names under 50 characters.
- For Usernames: Ensure your handle is between 5 and 15 characters using only valid alphanumeric characters and underscores.
- For Direct Messages: If a DM exceeds 10,000 characters, break the content into separate messages before sending.
Verifying Draft Length: Manual Step-by-Step Calculations and Validation Tools
Symptom: Uncertainty About Post Length Before Publishing
When composing text off-platform, it can be difficult to verify whether a draft containing web links, emojis, and hashtags will successfully fit within X’s limits.
Cause: Discrepancy Between Raw Character Count and Weighted Character Count
Standard text editors count raw string length rather than X’s weighted algorithm. A raw character count of 270 might actually evaluate to 290 weighted characters on X if emojis or URLs are present.
Fix: Calculate Weighted Characters Manually or Use Validation Libraries
To verify your draft before posting, break down the text into its weighted components.
Worked Example: Step-by-Step Character Calculation
Consider the following sample draft post:
Launching our rocket prototype today! 🚀 Check out the specs: https://mysite.org/space-project #aerospace
Let’s sum each component according to X’s counting rules:
- Initial Text:
"Launching our rocket prototype today! "
- Length: 37 characters (36 letters and punctuation marks + 1 space).
- Weight: 37 × 1 = 37 characters.
- Emoji:
"🚀"
- Weight: Standard emoji weight = 2 characters.
- Middle Text:
" Check out the specs: "
- Length: 22 characters (20 letters/punctuation + 2 spaces).
- Weight: 22 × 1 = 22 characters.
- HTTPS Link:
"https://mysite.org/space-project"
- Weight: Wrapped via t.co shortener = 23 characters.
- Space:
" "
- Weight: 1 space = 1 character.
- Hashtag:
"#aerospace"
- Length: 10 characters (
#symbol + 9 letters). - Weight: 10 × 1 = 10 characters.
Total Calculation: 37 + 2 + 22 + 23 + 1 + 10 = 95 weighted characters.
Because 95 weighted characters is well below the 280-character maximum for free accounts, this post will publish cleanly without triggering an error.
After performing a manual breakdown, using a dedicated tool like Word Counter allows you to quickly draft text without manually summing weights. Developers building custom applications can also integrate X’s official open-source twitter-text library (available for JavaScript and Python). The library parses draft strings and provides exact values for weightedLength and validity checks prior to posting.