Social Media Character Limits: 12 Platforms Compared
A “character” is not the same thing on every platform. One service may count visible grapheme clusters, another may count UTF-16 units or UTF-8 bytes, and X applies a weighted URL and character system. This guide explains what the PostChars checker measures—and where its numbers are only planning references.
Open the free Cross-Platform Post Checker to compare one draft across 12 social and messaging fields. Text is processed locally in your browser.
Quick comparison: what the checker measures
The figures below describe the specific field implemented by PostChars, not a promise that every account, app version or publishing API accepts the same text. “Official/API” means the linked platform documentation states the field limit. “Reference” means the number or counting method is a useful planning estimate, not a verified universal enforcement rule.
| Platform | Field checked | Reference | Counting method | Scope |
|---|---|---|---|---|
| X | Standard post | 280 | Weighted units | Parser-based reference; recognized URLs use a fixed weight of 23. Paid and longer-post formats differ. |
| Caption | 2,200 | Visible graphemes | Meta publishing API documents 2,200 characters; grapheme counting is an estimate, not API validation. | |
| Standard post | 3,000 | Visible graphemes | LinkedIn Help states 3,000 characters. Complex Unicode may count differently. | |
| Threads | Standard post | 500 | Visible graphemes | Common standard-post reference. Extended text attachments are a different format. |
| YouTube | Video title | 100 | Visible graphemes | Official title field limit; this is not the video description limit. |
| TikTok | Video caption | 2,200 | UTF-16 units | Official Direct Post API field. In-app publishing rules may differ. |
| Bluesky | Post text | 300 graphemes and 3,000 bytes | Graphemes + UTF-8 bytes | AT Protocol lexicon defines both constraints; both must be satisfied. |
| Post title | 300 | Unicode code points | Editorial planning reference, not a verified universal limit. Subreddit rules may be stricter. | |
| Discord | Standard message | 2,000 | UTF-16 units | Official standard cap; Nitro supports up to 4,000. UTF-16 is a planning approximation for emoji. |
| Telegram | Bot API message | 4,096 | Unicode code points | Bot API sendMessage text after entity parsing. Media captions have separate limits. |
| Page post draft | No verified universal cap | Visible graphemes | Count-only workspace. The checker deliberately does not invent a hard limit. | |
| Pin description | 500 | Unicode code points | Official Save-button prefilled description limit, not a guarantee for every Pin composer field. |
Why the counting method matters
Unicode text can be measured in several valid ways. A grapheme cluster is usually what a person perceives as one character; a code point is a Unicode value; JavaScript string length counts UTF-16 code units; and UTF-8 measures encoded bytes. These values can diverge for emoji, combining marks, flags and joined emoji sequences.
X adds another layer: its published twitter-text rules assign weighted lengths to characters and recognized URLs. A URL commonly consumes 23 weighted units regardless of its visible length. A plain text.length check cannot reproduce that behavior.
Bluesky demonstrates why a single number is sometimes insufficient: its post record is constrained by both a grapheme maximum and a UTF-8 byte maximum. A draft can fit one limit and exceed the other.
How to use the comparison safely
- Paste the exact draft into the Cross-Platform Post Checker.
- Read the field and scope shown on each platform card. A YouTube title, Telegram Bot API message and Pinterest prefilled description are not interchangeable fields.
- Check whether the result is an official/API constraint or a planning reference. Do not treat a reference as a platform guarantee.
- For a final check, paste the text into the destination platform’s own composer. Account type, API version, media type and product changes can affect acceptance.
Source documentation
- X text parsing: twitter-text
- Instagram Graph API: media publishing reference
- LinkedIn Help: Post and share updates
- Meta Help Center: Instagram and Threads product guidance
- YouTube Help: upload video details
- TikTok Content Posting API: Direct Post
- Bluesky AT Protocol: post lexicon
- Reddit API documentation
- Discord Help: Sending Messages
- Telegram Bot API: sendMessage
- Facebook Help Center
- Pinterest Developers: Save button descriptions
Maintenance note: Platform rules and API schemas can change. PostChars labels uncertain or field-specific rules instead of presenting every number as a universal hard limit. This page was last reviewed on November 1, 2026.
Frequently asked questions
Why does one draft get different counts on different platforms?
Platforms do not share one definition of a character. X uses weighted units, TikTok’s Direct Post API uses UTF-16 runes, Bluesky uses graphemes and UTF-8 bytes, and other checks may use code points or visible graphemes.
Does an “in limit” result guarantee the platform will accept my post?
No. The checker validates the scoped rule shown on each card. It cannot account for every account tier, moderation rule, media attachment, app version or live API change.
Why does Facebook show no limit?
PostChars has not verified a reliable universal Facebook Page post cap. It reports the draft length without inventing a pass/fail threshold.
Does PostChars upload my draft?
No. The comparison runs in your browser. Optional analytics, if you consent, record limited usage events and never include the text you enter.