X/Twitter Character Counter
Draft against the real limit: 280 characters as of mid-2026, tracked live with the remaining count front and center — so the cut happens on your terms, not the timeline's.
280 of 280 remaining
What this page counts
The live meter above checks your draft against 280 characters — X's published limit for a standard post as of mid-2026, doubled from 140 in 2017. That cap is a product decision, not a fixed property of text, so this page states it with a date: when X changes the limit, the page copy and the preset above are updated. Paying subscribers can post far longer, but 280 remains the figure a standard account drafts against.
What the meter counts is Unicode code points, the convention most platforms document for their caps. Concretely, café is 4 code points because the precomposed é is one; a CJK character is one; and 🎉 is 1 code point even though it occupies two UTF-16 units in JavaScript's internal representation. Spaces, line breaks, punctuation, digits, @mentions and #hashtags all count at face value — "Line one" over "Line two", with a line break between them, reads 17, the break included. The Characters stat card and the remaining figure are two views of the same number: units counted, and 280 minus units.
The one known wrinkle is the joined emoji. A family emoji such as 👨👩👧 is a single visible glyph built from several code points held together by invisible joiners; this counter reports the code points, so it reads 5 for that one glyph. Platforms disagree with each other on such sequences, which is one reason the final authority on a borderline draft is always X's own composer.
Read next: X's weighted counting, explained — what the 23-per-URL and weight-2 rules mean for the number you see here, and in which direction each one pushes it. The rest of the site's background reading is in the guides.
Where X's count differs: described, not modeled
Some platform rules run in this site's engine; others are stated on the page and deliberately not simulated. X's weighted counting is in the second group. Per X's developer documentation as of mid-2026, every URL is fixed at 23 characters regardless of its real length, and emoji and CJK characters are weighted 2 apiece. The counter above does none of that weighting: it counts code points and only code points. The line is drawn where simulating a rule would require guessing at server-side behaviour that cannot be verified from the outside, and a checker that guesses silently is less useful than one that counts plainly and says where it stops. What the page can tell you honestly is the direction of the difference.
Links push the counter high. A pasted URL is read at face value —
https://example.com/engineering/export-pipeline-rewrite-notes-and-timings is 73 code points here — while X's rule bills any URL at a flat 23.
On link-heavy drafts this counter therefore reads over before X's figure would. That is the safe
direction: a draft that fits here with a link in it has not been made to fit by a shortening you
were counting on. A URL shorter than 23 characters as written would run the other way, but a complete
link that short is unusual.
Emoji and CJK push the counter low. Each 🎉 is 1 code point here and weighted 2 there; each CJK character is one here and weighted 2 there. On an emoji-rich or CJK draft this counter reads under while X's figure is higher. That is the unsafe direction, and it is why the band rule further down exists.
Mentions and hashtags push nothing. @mentions and #hashtags count at face value in the body of a post, so for them the plain count is the count on both sides. The guide covers the three rules in more depth; this page keeps to what they do to the meter.
Worked examples, computed at build time
Each figure below is produced by the same engine the live counter runs, called on the quoted draft when this page is built; none is typed by hand. Paste any of them into the box above and the meter will agree.
A plain post. "Shipping notes for the week: the export button remembers your last format, settings load faster, and the dark theme no longer flickers on first paint. Full changelog on the site." — 178 characters, 102 remaining. Nothing in it falls under X's weighted rules — no URL, no emoji, no CJK — so the only figure in play is the plain count.
A post with a long link. "Our write-up on the export pipeline rewrite is up, with the before-and-after timings and the two bugs it surfaced: https://example.com/engineering/export-pipeline-rewrite-notes-and-timings" — 188 characters, 92 remaining here. The URL alone accounts for 73 of those code points, counted at face value; X's rule fixes any URL at 23. Direction: the counter reads high, so a link post that fits here fits with the shortening still to come.
An emoji post. "Launch day 🎉🎉🎉 Thank you to everyone who tested the beta, filed bugs, and argued with us about the default font 🙏" — 113 characters, 167 remaining here, each emoji counted once. X weights each at 2, so X's figure for this draft is higher than the one shown: the counter reads low.
A Japanese post. "新しいバージョンを公開しました。書き出しが速くなり、設定画面の不具合も直しています。ご意見をお待ちしています。" — 55 characters, 225 remaining here, every character one code point. X weights CJK characters at 2, so the same direction applies: the counter reads low, and the real headroom is smaller than the meter suggests.
Mentions and hashtags. "Thanks to @example_team for the review pass. Notes and the full diff are in the thread below. #changelog #release" — 113 characters, 167 remaining. The handle and the two hashtags count at face value, so there is no skew in either direction.
A draft that is over. "We are moving the weekly release to Thursdays starting next month. The short version: fewer Friday rollbacks, a quieter weekend for the on-call rotation, and a full working day to watch the error dashboards before anyone logs off. The long version, with the numbers behind the decision, is in the linked post below." — 315 characters, 35 over the limit; the meter switches to "35 over the 280 limit" and the bar fills. With no URL, emoji or CJK in it, nothing in X's weighting applies in either direction: this draft needs 35 characters cut.
A borderline draft. "Reminder: the office closes at noon on Friday for the maintenance window. Save your work, sign out of the shared drives, and expect the badge readers to be offline until Monday morning. Facilities will post updates in the usual channel if the schedule changes. Thanks." — 268 characters, 12 remaining: inside the 20-character band this page treats as "verify in the composer". It contains nothing weighted, so it fits as counted; add one emoji and the direction of skew turns against you.
Where the checker stops, and how to read a borderline draft
The checker stops at the count. It does not shorten URLs, weight emoji, or decide what X will accept — those are X's rules, applied on X's side, and this page describes them rather than imitating them. So reading a draft has two steps. First, the plain count: if the meter is over, the draft is over, unless the overrun is entirely made of a long URL — the one case where the counter is reading high on purpose. Second, the contents: if the draft is inside 20 characters of the line and contains emoji or CJK text, assume the composer's figure is higher than this one and either cut headroom now or finish the draft in the composer with its own meter visible.
A simple habit covers almost every case. Draft here with the remaining count in view; when a draft lands in the band, look at what it is made of. Plain text, mentions and hashtags: the count is the count. Links longer than 23 characters as written, which includes most links with a path: you have more room than the meter shows. Emoji or CJK: you have less, by an amount this page does not model, so the composer gets the final say. For a consequential post — an announcement, a correction, a reply that has to land in one piece — treat any third-party counter, including this one, as a drafting aid rather than a guarantee.
Common misreadings
Trusting one number for two regimes. The usual misreading is pasting a long link, seeing the meter go over, and cutting good text to make room that X's rule would have given back; the mirror image is drafting an emoji-heavy post to a plain count just under 280 and finding the composer's own meter reads over. Both come from reading a code-point count as if it were X's weighted count. It is not, and this page says so rather than pretending otherwise.
Expecting the SMS flip. Readers who use the SMS checker learn to watch for the curly apostrophe, because one pasted from a word processor silently moves a text message from the 160-character budget to the 70-character one. That is a property of SMS encoding, not of characters in general: here, "It’s live" and "It's live" both read 9, because each apostrophe is one code point whichever shape it takes. The same engine confirms the contrast — "It’s live" detects as UCS-2 for SMS and "It's live" as GSM-7 — and none of that touches the 280-character count.
Counting glyphs instead of code points. One visible family emoji reads 5 here. If you count what you see rather than what is encoded, the meter will look wrong; it is reporting the sequence, and platforms disagree with each other about such sequences, which is exactly why the composer has the last word on them.
Assuming the paid ceiling changes the drafting. Paying subscribers can post far longer. This page does not state a figure for that tier and does not preset it: 280 is the standard limit as of mid-2026, and it is the one the meter checks. If X changes it, the page and the preset change with it.
Frequently asked questions
Is the limit really 280?
For standard posts, yes: 280 characters as of mid-2026, doubled from the original 140 in 2017. Paying subscribers can post far longer, but 280 remains the limit for standard accounts. The cap is a product decision rather than a property of text, so this page states it with a date and updates the copy and the preset when X changes it.
How do links count?
Under X's rule as of mid-2026, every URL counts as a fixed 23 characters regardless of its real length. This counter does not apply that rule: a pasted link is read at face value, so the URL in the worked example is 73 code points here against 23 there. The effect is that the counter reads high on link-heavy posts, which is the safe direction. The guide on X's weighted counting walks through it.
Do emoji and mentions count?
Emoji generally count as 2 toward X's limit, and CJK characters are weighted 2 as well, per X's developer documentation as of mid-2026. This counter counts each as one code point, so on emoji-heavy or CJK drafts it reads low. @mentions and #hashtags count at face value in the body of a post. If you write emoji-heavy posts, budget extra headroom and confirm in the composer.
Does this page apply X's weighting?
No, deliberately. X's weighted counting is described here, not modeled, because simulating it would mean guessing at server-side behaviour this page cannot verify from the outside. The page counts code points, tells you which direction each rule pushes the number, and leaves the final call to the composer.
Do spaces and line breaks count?
Yes. Every code point counts, including spaces, punctuation and line breaks: a two-line draft reading "Line one" over "Line two" comes to 17, the break included. The Characters stat card and the remaining figure are the same count seen from two sides.
Why does my count differ from the composer's?
Three causes cover nearly every case: a URL, which X fixes at 23 while this page counts it at face value; emoji or CJK characters, which X weights at 2 while this page counts once; and joined emoji sequences, which this page reports as their component code points and platforms count in their own ways. If none of those is in the draft, the counts should match — and if they do not, the contact page explains what to send.
Why write to the limit at all?
Because the cut is better made by you than by the limit. Drafting against the live remaining count lets you decide deliberately: tighten, split into a thread, or restructure so the point lands inside the budget — instead of discovering the overrun in the composer.
What happens if X changes the limit?
The page copy and the preset above are updated. Platform caps are product decisions — 280 reflects X's published rules as of mid-2026, stated with its history (140 until 2017) — and this site's promise is to state the cap as of a date and keep it current, never to guess at it.
Counting is in Unicode code points; platform-side weighting (links at 23, most emoji at 2) is described above and on the methodology page. Nothing you type is transmitted or stored.