Back to Blog
9 min read

What's the X Character Limit?

On X, 280 is a weighted count: every link is 23 characters and an emoji is 2. We flag over-limit text before you send.

What's the X Character Limit?

Short answer: X’s own documentation says posts can contain up to 280 characters, but not every character counts as 1. Every URL is wrapped by t.co and counts as 23 characters, whatever its real length. Emoji and CJK (Chinese, Japanese, Korean) characters count as 2. Status 200 Uploads applies that weighted count: in Schedule, “the counter counts links and emoji the way X does,” and a dry run or a scheduled post flags caption_over_limit when the text is longer than X allows. We send the text as it is; X may refuse it or cut it short. Longer posts for Premium accounts are not listed on X’s counting page, and the limit through us is 280 as X counts them. Sources: Counting Characters and Post and schedule to X (checked 26 October 2026).

Key Takeaways

Point Details
The limit is 280 weighted characters X’s docs: posts can contain up to 280 characters. URLs count as 23; emoji and CJK count as 2.
We count it the same way The dashboard counter “counts links and emoji the way X does.”
Over-limit text is flagged, not rewritten In a dry run or a scheduled post, caption_over_limit is raised. We send the text as it is; X may refuse it or cut it short.
A link also uses a link slot A post with a link counts toward the 20 link posts of the X add-on’s month; a post without one does not.
Media is separate from the text count X: attached media (via official clients) counts as 0 characters. Through us: text with up to 4 images, or text with one video.

This is not a repeat of why posting to X costs extra. That article covers X API pricing and why the add-on exists. This one is about the 280-character limit and how Status 200 Uploads applies it.

How X counts 280 characters

X’s Counting Characters page is the official rule set. It opens with: “Posts on X can contain up to 280 characters. However, not all characters count equally—emojis, URLs, and certain Unicode ranges have special counting rules.”

X uses a weighted system:

Character type Weight What that means at the 280 cap
Latin, punctuation, common symbols 1 Up to 280 of these
Emojis 2 Up to 140 emojis
CJK (Chinese, Japanese, Korean) 2 Up to 140 of these characters
Other Unicode 2 (default) Varies

Emoji. “All emojis count as 2 characters, regardless of complexity.” X’s table treats a single emoji, one with a skin-tone modifier, a ZWJ combination, and a family sequence each as 2. Zero-width joiners combine emoji visually but do not add to the count.

URLs. “All URLs are wrapped with t.co shortener and count as 23 characters, regardless of the original length.” The same 23 applies to https://example.com and to a long path, for any valid URL detected in the post text.

Other official rules. Auto-populated @mentions at the start of replies do not count; mentions you add yourself count normally. Attached media (via official clients) counts as 0 characters. Hashtags count normally. The X API requires UTF-8; length is calculated using Unicode Normalization Form C (NFC).

X also gives a worked example with the open-source twitter-text library: parseTweet('Hello, world! 👋') has weightedLength 16 and valid true. That is what X tells developers to use for an accurate count. Status 200 Uploads does not document that it embeds twitter-text; our product pages state the counting we apply: links as 23, emoji as 2, and “the way X counts them.”

Our X API guide restates the same official weights and notes: “Longer posts for Premium accounts: not listed on X’s counting page.” We do not claim a higher cap through Status 200 Uploads.

What you can post through Status 200 Uploads

Post and schedule to X (checked 26 October 2026) describes what you can send: text on its own, a post with one image or up to 4 images, or a post with one video, now or up to 365 days ahead. You sign in on X itself (OAuth); posts go out through our X app, so you do not need your own X developer account.

X needs the X add-on: $9 a month on any plan, Free included, for 200 X posts per billing month, at most 20 of them with a link. X posts do not count toward the plan’s own posts. The pricing FAQ uses the same figures: “It costs $9 a month and works with any plan. It includes 200 posts to X per billing month, and up to 20 of them may contain a link. X posts do not use your plan's post allowance.”

A post of words only is “up to 280 as X counts them.” And: “A post with a link counts toward the 20 link posts of the add-on's month; a post without one does not.” If you are near that monthly link cap, a URL in the text is the difference between using a link slot and not.

File limits, also on platform file limits: images up to 5 MB each; video up to 5 GB per file (the largest file we store; X itself accepts up to 8 GB). One video per post.

In the dashboard: connect X under Connections, then in Schedule “write the post (the counter counts links and emoji the way X does) and add an image or a video if you want one.” You can also post from the REST API, Python, n8n, or an AI app such as Claude. Optional setting: who can reply (x.whoCanReply) — everyone, the accounts you follow, the accounts you mention, your subscribers, or verified accounts.

Check a caption with a dry run

The platform page documents a text post to POST /api/v2/posts. The API docs add dryRun: true next to post (or inside it): every check a publish makes is run and nothing is sent. The answer is 200 with dry_run: true. A check is not counted toward your allowance.

This example is that documented cURL, with dryRun added from the API docs and a URL in the text so a link-bearing caption can be checked without sending it:

curl -i -X POST 'https://status200uploads.com/api/v2/posts' \
  -H 'Content-Type: application/json' \
  -H 'Authorization: Bearer rl_your_api_key' \
  -H 'Idempotency-Key: 8e03978e-40d5-43e8-bc93-6894a57f9324' \
  -d '{"dryRun": true, "post": {"accountId": "@yourprofile", "platform": "x", "content": {"text": "Hello https://example.com"}}}'

On X’s rules, https://example.com counts as 23 characters, not the length of the URL as typed. “Hello ” is 6 ordinary characters, so this caption is 29 as X counts it — well under 280. If the text were over the cap, a dry run or a scheduled post would be flagged caption_over_limit. No authenticated request was sent to collect this package.

What happens if the text is over the limit

When we flag something in an X post, the answer (and History) names it with a code. Your original file is never changed. For length, the code is caption_over_limit: “In a dry run or a scheduled post, a caption longer than X allows is flagged. We send it as it is; X may refuse it or cut it short.”

Use the dashboard counter, or a dry run, to see the flag before the post is due to go out. We do not silently trim the caption to 280. If you still send or schedule over-limit text, X is the one that may refuse it or shorten it.

FAQ

What's the character limit for a post on X? 280 weighted characters, per X’s Counting Characters page. Latin letters, punctuation and common symbols count as 1; emoji and CJK characters count as 2; every detected URL counts as 23.

Do spaces count? X’s counting page does not list spaces as a special exemption. The weights it publishes are for Latin, punctuation and common symbols (1), emoji (2), CJK (2), and other Unicode (2 by default), plus the URL, reply-mention and media rules above. Its own example, Hello, world! 👋, has weighted length 16, which includes the spaces in that string.

Does Status 200 Uploads support longer Premium posts? Not according to our docs. Our X API guide notes that longer posts for Premium accounts are not listed on X’s counting page. Through us, text is “up to 280 characters, counted the way X counts them.”

What happens if my caption is over the limit? A dry run or a scheduled post is flagged caption_over_limit. We send the text as it is; X may refuse it or cut it short. The dashboard counter counts links and emoji the way X does, so you can see the weighted length while you write.

Does a post with a link use one of the 20 link slots? Yes. “A post with a link counts toward the 20 link posts of the add-on's month; a post without one does not.” The add-on is $9 a month on any plan, for 200 X posts per billing month, at most 20 of them with a link. X posts do not use your plan’s post allowance.

How many images can I attach? Through us: text with one image, or up to 4 images, or text with one video. Images up to 5 MB; video up to 5 GB per file. Official X counting treats attached media (via official clients) as 0 characters; the 280 cap still applies to the text.


Sourced

  • Counting Characters — X Documentation: “Posts on X can contain up to 280 characters.” Weighted table (Latin 1, emoji 2, CJK 2, other Unicode 2 default). “All emojis count as 2 characters, regardless of complexity.” “All URLs are wrapped with t.co shortener and count as 23 characters, regardless of the original length.” Media via official clients counts as 0. twitter-text example: Hello, world! 👋 weightedLength 16. Opened 11 November 2026 (Europe/Ljubljana). Wayback 27 October 2026 (20261027131150) quotes the same 280 / 23 / emoji and CJK weights.
  • twitter-text: the library X points developers to. Opened 11 November 2026; Wayback 20260815161901.
  • Post and schedule to X (checked 26 October 2026): “Up to 280 characters, counted the way X counts them: every link counts as 23, an emoji as 2.” Add-on “$9 a month on any plan, Free included, for 200 X posts per billing month, at most 20 of them with a link. X posts do not count toward the plan's own posts.” “A post with a link counts toward the 20 link posts of the add-on's month; a post without one does not.” Dashboard: “the counter counts links and emoji the way X does.” caption_over_limit: “In a dry run or a scheduled post, a caption longer than X allows is flagged. We send it as it is; X may refuse it or cut it short.” Post types, 5 MB / 5 GB, 4 images or 1 video, 365-day schedule, OAuth, cURL example, x.whoCanReply. Opened 11 November 2026; no Wayback snapshot returned today.
  • X API Guide: restates X’s 280 rule, URL 23, emoji and CJK as 2, media as 0; “Longer posts for Premium accounts: not listed on X's counting page.” Opened 11 November 2026; no Wayback snapshot returned today.
  • Platform file limits: “Up to 4 images per post. Videos up to 5 GB, the largest file we store (X itself accepts up to 8 GB). One video per post.” Images 5 MB. Opened 11 November 2026. Wayback 20260715072441 exists; article uses live numbers (archive may differ).
  • API documentation: dryRun: true runs every publish check and sends nothing; documented cURL for an X text post; caption_over_limit among warning codes. X add-on “($9/month, any plan).” Opened 11 November 2026; no Wayback snapshot returned today.
  • Pricing: “X as a $9/mo add-on.” FAQ: “It costs $9 a month and works with any plan. It includes 200 posts to X per billing month, and up to 20 of them may contain a link. X posts do not use your plan's post allowance.” Opened 11 November 2026. Wayback 20260715064753 exists; article uses live wording (archive may differ).
  • Why posting to X costs extra: linked as the pricing companion, not as the source of the character-count rules. Opened 11 November 2026; no Wayback snapshot returned today.