Twitter Character Limit: 280, and How Links and Emoji Count
The Twitter character limit is 280, but X counts every link as 23 and every emoji as 2. See the weights, worked examples and how other platforms count.
By TheTextKit TeamPublished

A card lists what each item costs toward the 280 limit on X. A letter counts 1. A link counts 23. An emoji counts 2. A Chinese, Japanese or Korean character counts 2. Each row has a colored label.
The Twitter character limit is 280, but X does not count 280 characters. It adds up a weight for each one: a letter counts 1, every link counts 23 however long it is, and every emoji and every Chinese, Japanese or Korean character counts 2. That is why a short post can be refused while a long one goes through, and why a plain character counter gives the wrong answer.
This guide sets out the weights from X's own documentation and code, works through examples, and compares the limits of LinkedIn, YouTube and Google Ads. We also found that our own checker used the wrong count for X and fixed it.
How X counts the Twitter character limit
X's developer documentation on counting characters says a post has a maximum weighted length of 280. The weights come from X's open-source twitter-text library, whose configuration file sets the maximum at 280, a default weight of 2 for any character, and a length of 23 for a link. Four ranges of characters get a weight of 1 instead.
| What you type | Weight | Examples |
|---|---|---|
| Characters from U+0000 to U+10FF | 1 | Latin letters, digits, accented letters, Greek, Cyrillic, Hebrew, Arabic, Hindi, Thai |
| Spaces, curly quotes and dashes in the General Punctuation block (U+2000 to U+200D, U+2010 to U+201F, U+2032 to U+2037) | 1 | The curly quotation marks, the dash characters, thin spaces |
| A link | 23 | Any web address, however long |
| An emoji | 2 | Flags, skin tones, a family |
| Any other character | 2 | Chinese, Japanese and Korean characters, the euro sign, arrows |
The library also normalizes the text before it counts, so a letter e followed by a combining accent is one character, the same as the single character é. Hashtags, mentions and cashtags are ordinary text, and each of their characters counts 1.

A table of three posts with two counts each. A post with a 51 character link has 108 plain characters and counts 80 on X. A post with a 137 character link has 145 plain characters and counts 31 on X. A note followed by three emoji has 16 plain characters and counts 19 on X.
Worked examples
The table shows the plain character count next to the count X uses. We got the X numbers by running each post through the twitter-text library and checked them against our own counter.
| Post | Plain characters | X count |
|---|---|---|
| 57 characters of text and a 51 character link | 108 | 80 |
| 8 characters of text and a 137 character link | 145 | 31 |
| 13 characters of text and three emoji | 16 | 19 |
| 140 Japanese characters | 140 | 280 |
| 140 emoji | 140 | 280 |
| 280 Latin letters | 280 | 280 |
| One family emoji | 7 | 2 |
The second row is the one that surprises people. A post can carry a link of any length and the link costs 23, so there is no reason to shorten it by hand. The last row matters to developers. A family emoji is four people joined by three invisible characters, which is 7 code points and 11 in the length of a JavaScript string. X counts it as 2.
Characters that surprise people
Because the rule is a list of ranges and not a feeling, a few common symbols behave oddly. These weights come straight from the ranges above:
| Character | Weight | Why |
|---|---|---|
… (single ellipsis character) | 2 | U+2026 sits between the punctuation ranges |
... (three full stops) | 3 | Three characters of weight 1 |
€ | 2 | U+20AC is outside the ranges |
£ and ¥ | 1 | Inside the first range |
| Copyright sign (U+00A9) | 1 | Inside the first range |
| Trademark sign (U+2122) | 2 | Outside the ranges |
→ and ✓ | 2 | Outside the ranges |
| Curly quotes and dashes | 1 | Inside the General Punctuation ranges |
So a pound sign is cheaper than a euro sign, and the single ellipsis character saves one point against three full stops. Neither difference matters until you are a point or two over, and then it does.

A table of six symbols and what each counts toward the X limit. The single ellipsis character counts 2. Three full stops count 3. The euro sign counts 2. The pound sign counts 1. The arrow counts 2. The dollar sign counts 1.
Emoji and non-Latin text: the real Twitter character limit is 140
The documentation puts it plainly: each emoji weighs 2, skin tone and joined sequences included, and so does each Chinese, Japanese or Korean character. With a limit of 280, that makes 140 the practical limit for both. It is why posts in those languages look half as long as the same text in English.

A table of three ways to fill a post. 280 Latin letters count 280. 140 Japanese characters count 280. 140 emoji count 280.
Not every alphabet pays double. Greek, Cyrillic, Hebrew, Arabic, Hindi and Thai all sit below U+1100, so each of their characters weighs 1. We tested a short phrase in each and they matched the library, one point per character. The extra cost falls on scripts whose characters sit above that point, such as Chinese, Japanese and Korean.
How other platforms count
The same words mean different things on other platforms. We looked for each limit on the platform's own help page.
| Platform and field | Limit | What counts |
|---|---|---|
| X post | 280 | Weighted, as above |
| LinkedIn post | 3,000 | "Posts can contain up to 3,000 characters" |
| YouTube title | 100 | Characters |
| YouTube description | 5,000 | Characters |
| Google Ads headline | 30 | Double-width characters count 2 |
| Google Ads description | 90 | Double-width characters count 2 |
Google Ads has a rule like X's for Chinese, Japanese and Korean text: each double-width character counts as 2 toward the limit, so a Japanese headline of 15 characters is already full. Unlike X, it does not give links or emoji a special weight. Instagram does not publish its limits on a page we could open, so we cannot confirm the widely quoted figures of 2,200 for a caption and 150 for a bio. They are in the checker as presets, and you should check them on the app.
Search results are a different case again. A meta title and a meta description are cut by pixel width, not by count. Our guide to meta description length explains why the 60 and 160 figures are guides and not limits.

A table of six fields and their limits. An X post is 280. A LinkedIn post is 3,000. A YouTube title is 100. A YouTube description is 5,000. A Google Ads headline is 30. A Google Ads description is 90.
What our checker got wrong
Our Character Limit Checker used to count plain characters for every platform and said so in a note. For most platforms that is fine. For X it is wrong whenever a post has a link or an emoji, and for Google Ads it is wrong for Chinese, Japanese and Korean text. We rebuilt the X count on the weights above and the Google Ads count on Google's double-width rule.
To test the X count we compared it with the twitter-text library, version 3.1.0, in three ways:
- Generated posts. We built 20,000 posts that mixed words in several scripts, hashtags, mentions, emoji and links with and without
http. The new count matched the library on every post. The old plain count differed on 16,477 of them, and by more than 10 on 6,781. That test set is heavy on links and emoji on purpose, so ordinary posts differ less often, but one link is enough. - Single characters. We tried all 1,112,032 valid characters on their own and inside a word. The counts matched on every one.
- Rare combinations. With an emoji selector added after each character, 2,632 symbols differed, and 29 differed with a skin tone added. These are unusual combinations, such as a selector after a symbol that is already a picture.
There are two known limits. Without http, the tool recognizes addresses that end in one of 71 common endings such as .com, .org and .io. The library knows every registered ending, so an address with a rare ending can differ by a few points. The library's emoji data also dates from 2018. It counts the newer technologist emoji as 5, while X's documentation says a joined emoji counts 2, and the checker follows the documentation. Treat a post within a point or two of 280 with care.
How to shorten a post that is over the Twitter character limit
- Count it the way X does. Paste the draft into the Character Limit Checker, choose the X preset, and read the weighted number. The panel shows links and emoji separately, so you can see where the points go.
- Leave the link alone. Cutting a link down saves nothing, because it costs 23 either way.
- Check the emoji. Each one costs 2, so three emoji cost as much as six letters.
- Use the single ellipsis character. It costs 2 against 3 for three full stops.
- For Chinese, Japanese and Korean text, plan for 140. Anything you add costs double.
- Use the right counter for other fields. The Character Counter gives plain totals and the Word Counter counts words. The SERP Preview shows how a title and description look in search.
Frequently asked questions
What is the Twitter character limit?
280, counted as a weighted length. A letter, digit or common punctuation mark counts 1, a link counts 23 whatever its length, and an emoji or a Chinese, Japanese or Korean character counts 2. X's own documentation lists these weights.
How many characters is a link on X?
- X counts any link as 23 characters, however long the address is, because it wraps links in its t.co shortener. A short link and a link of 140 characters cost the same.
How many characters is an emoji on X?
- X's documentation says each emoji has a weight of 2, including skin tone and joined sequences such as a family. That means 140 emoji fill a post exactly.
Why can I only write 140 characters in Japanese, Chinese or Korean?
Each of those characters has a weight of 2, and the limit is 280, so 140 characters fill a post. Letters in most other alphabets, such as Greek, Cyrillic, Arabic and Hebrew, weigh 1.
Can I post more than 280 characters?
Some paid X accounts can write longer posts, but the page we used, X's guide to counting characters, lists only 280. Check the composer on your own account and use the custom limit box in our checker for any other number.
Check your post now
Paste your draft into the Character Limit Checker, pick X, and see the weighted count, the links and the emoji before you post. Your text stays in your browser and nothing is uploaded.
