The tool you need, ready to use

Social Media Character Counter

Paste your text and the remaining characters for X, Threads, Instagram, TikTok, Bluesky, LinkedIn, YouTube titles and YouTube descriptions appear at once. Select a platform to highlight the part over its limit, see how CJK characters, emoji and links were counted, check the hashtag and link rules, and copy the parts of a post that has to be split.

Last updated 2026-10-22All math stays in your browser
Example

Part over the selected platform's limitTags, links and characters that break a rule

  • 0Characters
  • 0No spaces
  • 0Lines
  • 0Words
  • 0Hashtags
  • 0Mentions
  • 0Links
  • 0Emoji

  • CJK, kana, etc.
  • Latin, digits, symbols
  • Spaces and line breaks
  • Emoji
  • Links

Tag and link checklist

  • InstagramUp to 5 hashtags
  • InstagramUp to 20 @ tags
  • ThreadsUp to 5 different links
  • ThreadsTopic tag = first tag only
  • BlueskyUp to 3,000 UTF-8 bytes
  • YouTubeNo < or > (title, description)
  • YouTubeOver 60 hashtags: all ignored

Last updated 2026-10-22Your inputs are not stored

ROBERIN standardThe tool you need,
ready to use.
  • Clear at a glanceInputs and results sit where you expect them.
  • Result firstThe key number comes first; the working only when you need it.
  • Ask lessNo sign-up and no unnecessary details.

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

  1. 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.
  2. 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.
  3. 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.
  4. 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.
  5. 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".

Based on public documentation (checked 2026-10-22)
PlatformLimitCounting unitLinksRelated rules
X post280Weighted: CJK characters and emoji 2, Latin letters, digits and spaces 123Long posts for Premium: 25,000
Threads post500Characters, emoji in UTF-8 bytesFull length (this tool)5 different links, topic tag is the first tag only, text attachment 10,000
Instagram caption2,200Code points (this tool)Full length5 hashtags (Help), 20 @ tags
TikTok caption2,200UTF-16 units (posting API)Full lengthThe limit in the app may differ
Bluesky post300Graphemes (visible characters) + 3,000 UTF-8 bytesShortened: domain + 13 path characters + ...A combined emoji counts as 1
LinkedIn post3,000Code points (this tool)Full lengthBased on the UGC Post API
YouTube title100Code points (this tool)Full lengthNo < or >
YouTube description5,000 bytesUTF-8 bytesFull lengthNo < 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.

Count for one character (or one link); YouTube description in bytes
CharacterXThreadsInstagram, LinkedIn, YouTube titleTikTokBlueskyYouTube description
中 (CJK)211113
A (Latin letter)111111
é (accented Latin letter)111112
Space, line break111111
… (ellipsis)211113
😀 (emoji)241214
🇰🇷 (flag)282418
👨‍👩‍👧 (family emoji)21858118
52-character link235252522752

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.

338 characters · 1 link · 2 emoji → X 328 / 280, over on Bluesky and the YouTube title as well, within the limit on the other 5
PlatformCountedLimitResult
X post32828048 over
Threads post344500156 left
Instagram caption3382,2001,862 left
TikTok caption3402,2001,860 left
Bluesky post33030030 over
LinkedIn post3383,0002,662 left
YouTube title338100238 over (not text for a title)
YouTube description344 bytes5,000 bytes4,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.

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.