Every platform counts characters differently
The limits are 280 characters on X (formerly Twitter), 500 on Threads, 2,200 for an Instagram caption, 2,200 for a TikTok caption, 300 on Bluesky, 3,000 on LinkedIn, 100 for a YouTube title and 5,000 bytes for a YouTube description. The numbers are not the only difference. X counts Chinese, Japanese and Korean characters as 2, Threads counts emoji in UTF-8 bytes, and YouTube descriptions count every character in bytes. The same text can fit comfortably on one platform and run over on another.
Paste your text into the workspace above and the remaining count for all 8 limits appears on the ring gauges at once. Select a gauge and the part that goes over that platform's limit is highlighted inside the text box, while the How it is counted bar below shows how many characters each kind of text, such as Latin letters, spaces, emoji and links, was counted as. When X, Threads or Bluesky is over its limit, the text is also split into parts that fit.
Why the same text fits in one place and not another
Each platform counts in a different unit. X gives every character a weight, so CJK characters and emoji count as 2. Threads counts characters but counts emoji as the number of UTF-8 bytes they take. The TikTok posting API counts UTF-16 units, Bluesky counts what the user sees (graphemes), and a YouTube description counts UTF-8 bytes. If you fit your text to the headline number alone, you tend to get stopped just before posting in situations like these.
- Posting one text in several places: a caption that is roomy on Instagram can be too long for X. Cut to the first gauge that turns to the accent color.
- Writing for X in a CJK language: Japanese, Chinese or Korean text alone reaches the limit at 140 characters. Spaces and digits count as 1, so you can fit slightly more.
- Using many emoji or flags: on Threads, one 😀 counts as 4 and one flag 🇰🇷 counts as 8.
- Writing a long YouTube description in a CJK language: each character takes 3 bytes, so the 5,000-byte limit is reached at 1,666 characters.
- Adding many hashtags on Instagram: Instagram Help says you can use up to 5 tags on a post. You can hit the tag limit while plenty of characters remain.
How to use it
- Write or paste your text into the text box. The Paste button inserts the clipboard text as is, and Ctrl+Enter (⌘+Enter on a Mac) in the box copies the whole text.
- Read the remaining count on the 8 gauges at the top. The fuller the ring, the closer to the limit; when it is over, the ring and number change to the accent color and show a minus sign.
- Select the gauge of the platform you are posting to. The part of the text over that platform's limit is highlighted, and anything that breaks a rule, such as a sixth Instagram hashtag or a < or > on YouTube, is underlined.
- Check How it is counted to see where the number grew, and the Tag and link checklist to see whether hashtags, mentions and links are within the rules.
- If X, Threads or Bluesky is over its limit, copy the parts under Split into parts one by one and post them as a chain (a thread or replies). The numbering (1/2) can be switched on and off.
Limits and counting units by platform
The table below shows the limits written in each platform's public developer documentation and help pages. Where the documentation does not state a counting unit, this tool counts code points and the table says "this tool".
| Platform | Limit | Counting unit | Links | Related rules |
|---|---|---|---|---|
| X post | 280 | Weighted: CJK characters and emoji 2, Latin letters, digits and spaces 1 | 23 | Long posts for Premium: 25,000 |
| Threads post | 500 | Characters, emoji in UTF-8 bytes | Full length (this tool) | 5 different links, topic tag is the first tag only, text attachment 10,000 |
| Instagram caption | 2,200 | Code points (this tool) | Full length | 5 hashtags (Help), 20 @ tags |
| TikTok caption | 2,200 | UTF-16 units (posting API) | Full length | The limit in the app may differ |
| Bluesky post | 300 | Graphemes (visible characters) + 3,000 UTF-8 bytes | Shortened: domain + 13 path characters + ... | A combined emoji counts as 1 |
| LinkedIn post | 3,000 | Code points (this tool) | Full length | Based on the UGC Post API |
| YouTube title | 100 | Code points (this tool) | Full length | No < or > |
| YouTube description | 5,000 bytes | UTF-8 bytes | Full length | No < or >; over 60 hashtags, all are ignored |
The Instagram developer documentation (Graph API) still lists 30 hashtags, while Help says 5. This tool checks 5, on the basis of posting from the app. For TikTok, users report that the app accepts longer captions, but the value confirmed in the official documentation is the posting API's 2,200.
How many characters one character counts as
This table shows how a single character becomes a different number on each platform. Instagram, LinkedIn and YouTube titles all count code points, so they share one column.
| Character | X | Threads | Instagram, LinkedIn, YouTube title | TikTok | Bluesky | YouTube description |
|---|---|---|---|---|---|---|
| 中 (CJK) | 2 | 1 | 1 | 1 | 1 | 3 |
| A (Latin letter) | 1 | 1 | 1 | 1 | 1 | 1 |
| é (accented Latin letter) | 1 | 1 | 1 | 1 | 1 | 2 |
| Space, line break | 1 | 1 | 1 | 1 | 1 | 1 |
| … (ellipsis) | 2 | 1 | 1 | 1 | 1 | 3 |
| 😀 (emoji) | 2 | 4 | 1 | 2 | 1 | 4 |
| 🇰🇷 (flag) | 2 | 8 | 2 | 4 | 1 | 8 |
| 👨👩👧 (family emoji) | 2 | 18 | 5 | 8 | 1 | 18 |
| 52-character link | 23 | 52 | 52 | 52 | 27 | 52 |
The family emoji is three person emoji joined by 2 zero-width joiners, so it is 5 code points and 18 bytes in UTF-8. Bluesky counts one visible unit as 1, and X counts an emoji as 2 whatever its length. The 52-character link (https://example.com/blog/2026/10/sns-character-guide) counts as 23 on X, and as 27 on Bluesky, where the official app shortens it to example.com/blog/2026/10....
Example: a reading night announcement
This is the "X announcement" example that appears when you first open the workspace. It has a title line, a paragraph, a sign-up link and 2 hashtags, and is 338 characters as a user sees them.
| Platform | Counted | Limit | Result |
|---|---|---|---|
| X post | 328 | 280 | 48 over |
| Threads post | 344 | 500 | 156 left |
| Instagram caption | 338 | 2,200 | 1,862 left |
| TikTok caption | 340 | 2,200 | 1,860 left |
| Bluesky post | 330 | 300 | 30 over |
| LinkedIn post | 338 | 3,000 | 2,662 left |
| YouTube title | 338 | 100 | 238 over (not text for a title) |
| YouTube description | 344 bytes | 5,000 bytes | 4,656 bytes left |
The X count of 328 is 247 Latin letters, digits and symbols, 54 spaces and line breaks, 2 emoji × 2 = 4, and 1 link at 23. The count passes 280 at the link, so everything from the link to the end is highlighted as the part over. Splitting cuts at the blank line after the announcement paragraph and makes a first part of 266 and a second part of 68 (including the numbers " 1/2" and " 2/2").
Rules for splitting a post that is too long
Splitting is offered when a post is over the limit on X, Threads or Bluesky, which support chained posts. Each part is counted again the way that platform counts, so that it fits within the limit.
- Where it cuts: it looks for the last blank line within the limit first. If there is none, it tries a line break, then a sentence end (a period, question mark or exclamation mark followed by a space, or 。!?), then a space.
- No tiny parts: it does not cut within the first 40% of what fits. If there is no place to cut after that point, it cuts between characters at the limit.
- Links are never cut: a link is handled as one block. On X it counts as 23 in whichever part it lands.
- Room for numbers: with numbering on, the characters for a suffix such as " 1/3" are subtracted before splitting. If the number of parts changes, it splits again to fit the length of the numbers.
- Whitespace at the edges: spaces and line breaks at a cut are removed from the start and end of each part. Line breaks inside a part stay.
Common mistakes
- Thinking X is 280 for every language: X counts CJK characters as 2, so text in those languages reaches the limit at 140. Latin letters, digits and spaces take less.
- Using a short URL to save characters on X: X counts a link as 23 whatever its length. A link shorter than 23 characters still counts as 23.
- Counting an emoji as 1 on Threads: Threads counts emoji in UTF-8 bytes. One 😀 is 4, and one family emoji is 18.
- Using Instagram's 30 hashtags: the Help page says 5. Tags beyond 5 are underlined in the text box.
- Thinking a YouTube description is 5,000 characters: the unit is bytes, so one CJK character takes 3 bytes and an accented letter takes 2. The description gauge shows what is left in bytes.
- Counting a Bluesky link at full length: the official app stores a long link in shortened form, so it counts for less than its full length. This tool shortens it the same way.
Limits of this tool
- Limits and counting rules are based on public documentation checked on October 22, 2026. Platforms can change their limits and the app can count differently from the documentation, so check text close to a limit once more in the app's composer.
- Instagram, LinkedIn and YouTube titles have no counting unit in their documentation, so this tool counts code points. Text with many combined emoji or combining characters may differ from the app's number.
- Only addresses starting with http:// or https:// are treated as links. An address written without a protocol, such as example.com, may become a link on X or Threads, but this tool counts it as plain characters.
- A hashtag is a run of characters after # with at least one letter, and a mention is a run of letters, digits, underscores and periods after @. A number alone, like #1, is not a tag, and what each platform accepts as a tag differs slightly.
- The 25,000 characters of X Premium and the 10,000 characters of a Threads text attachment are not on the gauges. They count against the limit of a regular post.
- Your text is counted only inside this browser. It is not sent to a server and is not kept in the address or in storage.
Sources
Basis: limits and counting rules were checked directly in each platform's developer documentation, help pages and official app source on October 22, 2026.
- 01X — Counting charactersPost limit of 280, CJK characters and emoji count as 2, links count as 23
- 02twitter-text — config/v3.jsonRanges with weight 1: 0–4351, 8192–8205, 8208–8223 and 8242–8247; everything else 2
- 03X Help — X PremiumLong posts of up to 25,000 characters for subscribers
- 04Meta — Threads API, PostsText limit of 500, emoji in UTF-8 bytes, 5 different links, first valid tag is the topic tag
- 05Meta Newsroom — Threads text attachments (2025-09-04)Attach up to 10,000 characters of text to a post
- 06Meta — Instagram Graph API, IG User MediaCaption up to 2,200, 30 hashtags, 20 @ tags
- 07Instagram Help — Use hashtags on InstagramUp to 5 tags on a post
- 08TikTok — Content Posting API, Direct Posttitle (caption) up to 2,200 UTF-16 units
- 09Bluesky — lexicon app.bsky.feed.posttext up to 300 graphemes and 3,000 bytes
- 10Bluesky social-app — url-helpers.tstoShortUrl: a path over 15 characters becomes domain + 13 path characters + ...; composer limit MAX_GRAPHEME_LENGTH 300
- 11LinkedIn — UGC Post APIPost text up to 3,000 characters
- 12Google — YouTube Data API, Videostitle 100 characters, description 5,000 bytes, < > not allowed
- 13YouTube Help — Hashtag policyWith more than 60 hashtags, all hashtags are ignored
Frequently asked questions
How many characters can I write on X (Twitter)?
X allows 280 characters, counting CJK characters and emoji as 2 and Latin letters, digits and spaces as 1. Text in Japanese, Chinese or Korean alone reaches the limit at 140 characters, and spaces and digits let you fit slightly more. A link counts as 23 whatever its length, and Premium subscribers can write long posts of up to 25,000 characters.
How long can an Instagram caption be, and how many hashtags can I use?
An Instagram caption can have up to 2,200 characters. Instagram Help says you can use up to 5 tags on a post, and the developer documentation (Graph API) sets the limit for @ tags at 20. This tool underlines hashtags beyond 5 in the text box.
How long can a Threads post be, and how are emoji counted?
A Threads post can have up to 500 characters. Characters count as 1 each, but emoji are counted in UTF-8 bytes, so one 😀 is 4 and one flag is 8. Over 500, you can use the split tool to make a chain of posts, or attach up to 10,000 characters of text.
How many characters does a link count as?
X counts every http or https link as 23 whatever its length. The official Bluesky app counts a long link in shortened form, as the domain plus the first 13 characters of the path followed by ... For Threads, Instagram, TikTok, LinkedIn and YouTube, this tool counts links at full length.
A YouTube description is 5,000, so why does CJK text fill it faster?
The YouTube description limit is 5,000 UTF-8 bytes, not characters. Latin letters and digits take 1 byte, accented letters 2, CJK characters 3 and emoji 4 or more, so CJK text alone reaches the limit at 1,666 characters. A title is counted at 100 characters, not bytes.
How is the Bluesky limit of 300 counted?
Bluesky counts each unit a user sees on screen (a grapheme) as 1, so a family emoji or a flag is also 1. There is a separate limit of 3,000 UTF-8 bytes, and this tool marks whichever limit is passed first as the part over.
Where does the split tool cut a post?
Within the limit it looks for the last blank line first, then a line break, a sentence end and a space, in that order. It never cuts a link, and with numbering (1/2) on it subtracts the characters the number takes before splitting. It appears when a post is over the limit on X, Threads or Bluesky.
Where is my text saved?
It is not saved. Characters are counted only inside this browser, nothing is sent to a server, and nothing is kept in the address or in browser storage. When you close the page, the text is gone.