Social Media Character Counter
Count your text once and compare it with the documented limits of X, LinkedIn, YouTube, Instagram, TikTok, Threads and Bluesky, each in the unit that platform uses.
Up to 500,000 characters. Your text stays in your browser.
| Limit | Used / limit | Status |
|---|---|---|
| X | ||
Post Weighted count: a link counts 23, an emoji 2. Latin, Greek, Cyrillic and similar letters count 1; Chinese/Japanese/Korean characters and many symbols (€, …, •) count 2. | 0 / 280 | Within limit 280 left |
Long post (Premium) Weighted count: a link counts 23, an emoji 2. Latin, Greek, Cyrillic and similar letters count 1; Chinese/Japanese/Korean characters and many symbols (€, …, •) count 2. The platform states only the number. We assume the same counting rule as a normal post. | 0 / 25,000 | Within limit 25,000 left |
Post Counted as visible characters (an emoji or accented letter is one). | 0 / 3,000 | Within limit 3,000 left |
| YouTube | ||
Video title Counted as visible characters (an emoji or accented letter is one). | 0 / 100 | Within limit 100 left |
Video description Counted as visible characters (an emoji or accented letter is one). The YouTube API measures the description in bytes (5,000), not characters. | 0 / 5,000 | Within limit 5,000 left |
Caption Counted as visible characters (an emoji or accented letter is one). From the platform's publishing API documentation; the app itself may differ. | 0 / 2,200 | Within limit 2,200 left |
Hashtags in a caption Number of #hashtags in the text. From the platform's publishing API documentation; the app itself may differ. | 0 / 30 | Within limit 30 left |
| TikTok | ||
Caption Counted in UTF-16 units: a basic emoji counts 2. From the platform's publishing API documentation; the app itself may differ. The source says "UTF-16 runes". We read this as UTF-16 code units, so an emoji outside the basic plane counts 2. | 0 / 2,200 | Within limit 2,200 left |
| Threads | ||
Text post An emoji counts as its size in UTF-8 bytes; every other character counts 1. From the platform's publishing API documentation; the app itself may differ. | 0 / 500 | Within limit 500 left |
| Bluesky | ||
Post (characters) Counted as visible characters (an emoji or accented letter is one). From the platform's publishing API documentation; the app itself may differ. | 0 / 300 | Within limit 300 left |
Post (UTF-8 bytes) Counted in UTF-8 bytes: accented letters take 2, a basic emoji 4. From the platform's publishing API documentation; the app itself may differ. | 0 / 3,000 | Within limit 3,000 left |
How it works
Type or paste a text and the tool measures it once, then compares the result with every limit in the table, grouped by platform. Each row shows the amount used, the limit, the status (within, exactly at, or over the limit) and how many are left or over. The text is processed in your browser and is not uploaded or stored.
A character count is not one number. Platforms measure in different units, so the same text can be within one limit and over another. The tool computes these measurements:
- X weighted count. From X's documentation of counting characters and the open twitter-text configuration. Every link counts as 23 characters regardless of length, and every emoji counts as 2, even a long sequence such as a family. Characters up to U+10FF and a few punctuation ranges (U+2000 to U+200D, U+2010 to U+201F, U+2032 to U+2037) count 1; everything else, including Chinese, Japanese and Korean characters, counts 2. The text is normalized to NFC first, so a letter with a combining accent is the same as the precomposed letter.
- Visible characters (graphemes). One user-perceived character, so an accented letter or an emoji counts once.
- UTF-16 units. What
.lengthreturns in JavaScript. TikTok's API states its limit in "UTF-16 runes"; we read that as UTF-16 code units, which is our reading, not a fact the source confirms, and the table marks the row. - UTF-8 bytes. Used for Bluesky's second limit.
- Threads rule. Threads documents that emoji are counted as their size in UTF-8 bytes. The tool counts every other visible character as 1.
- Hashtags. The number of #tags in the text, not counting a
#fragment inside a link such as https://example.com/#section.
Where the source does not name the unit
LinkedIn says only "3,000 characters". YouTube says "100 characters" for a title. The Instagram API documentation says "2,200 characters". None of these pages defines what a character is, and the Threads page does not define a non-emoji character either. For these rows the tool counts visible characters, which is our reading, not the platform's statement. For plain text without emoji or combining marks the readings agree. Texts that mix emoji or unusual scripts are where a platform may count differently.
Examples
The values below are what the counting rules produce for each text.
| Text | Measure | Result |
|---|---|---|
| Hello, world! 👋 | X weighted (X's own example) | 16 |
| café, typed as one character or as e plus accent | X weighted | 4 both ways (X's own example) |
| A link with a 300-character path | X weighted | 23, the same as a short link |
| see https://example.com/x now | X weighted | 31 (4 + 23 + 4) |
| https://example.com/x. | X weighted | 24: the final full stop is not part of the link |
| example.com | X weighted | 11: no https://, so it is ordinary text here |
| 日本語 | X weighted | 6 |
| 141 characters of 日 | X weighted / LinkedIn | 282, over 280 on X; far below LinkedIn's 3,000 |
| 👨👩👧👦 (family emoji) | X / graphemes / UTF-16 / Threads | 2 / 1 / 11 / 25 |
| 😀 repeated 300 times | Bluesky graphemes / bytes | 300 (at the limit) / 1,200 |
| 😀 repeated 126 times | Threads | 504, over the limit of 500 |
| #1 repeated 31 times | Instagram hashtags | 31, one over the limit of 30 |
Exactly at a limit counts as within it: 280 weighted characters on X show "At the limit", 281 show "Over the limit".
Things to watch for
- Limits change. Platforms change them without notice. The values here were checked against each platform's documentation on October 11, 2026; the date also appears above the results table. If a number matters for a campaign, confirm it in the platform itself.
- Several rows come from API documentation. The Instagram caption and hashtag limits, the TikTok caption limit, the Threads limit and both Bluesky rows were verified in the platforms' API or protocol documents, not in the apps' help pages. The apps can differ, and the table marks these rows.
- Hashtags are an approximation. The tool counts a
#followed by letters, digits or underscores, including duplicates and all-digit tags, but not a#inside a link. Platforms may skip some of these. - Link detection is limited to https:// and http://. A bare domain such as example.com is counted as ordinary text, although X itself may treat it as a link. Characters glued to a link, with no space, are read as part of it.
- Emoji detection is an approximation. It relies on the Unicode data in your browser. A very new emoji may be counted differently from the way the platform counts it.
- X replies. X's documentation says mentions added automatically at the start of a reply are not counted. The tool counts everything in the box, so it matches a reply only if you paste text without those mentions.
- Long posts on X are an assumption. The 25,000 figure comes from X's changelog, which names Premium accounts and no counting rule; the tool uses the normal weighted count.
- What the tool does not cover. Profile bios, display names, usernames, comments and Facebook posts are not shown. We could not verify those numbers from official platform pages, and sources found elsewhere contradict each other, so we show no number rather than a guess.
Frequently asked questions
Last updated: 10/11/2026
Related tools
Count characters with and without spaces, see the length in UTF-16 units and UTF-8 bytes, and check how many SMS parts your text needs.
Add utm_source, utm_medium, utm_campaign and optional parameters to a link, with correct encoding and warnings for mixed case and spaces.