postchars.
SOCIAL MEDIA PUBLISHING GUIDE · UPDATED NOVEMBER 2026

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.

PlatformField checkedReferenceCounting methodScope
XStandard post280Weighted unitsParser-based reference; recognized URLs use a fixed weight of 23. Paid and longer-post formats differ.
InstagramCaption2,200Visible graphemesMeta publishing API documents 2,200 characters; grapheme counting is an estimate, not API validation.
LinkedInStandard post3,000Visible graphemesLinkedIn Help states 3,000 characters. Complex Unicode may count differently.
ThreadsStandard post500Visible graphemesCommon standard-post reference. Extended text attachments are a different format.
YouTubeVideo title100Visible graphemesOfficial title field limit; this is not the video description limit.
TikTokVideo caption2,200UTF-16 unitsOfficial Direct Post API field. In-app publishing rules may differ.
BlueskyPost text300 graphemes and 3,000 bytesGraphemes + UTF-8 bytesAT Protocol lexicon defines both constraints; both must be satisfied.
RedditPost title300Unicode code pointsEditorial planning reference, not a verified universal limit. Subreddit rules may be stricter.
DiscordStandard message2,000UTF-16 unitsOfficial standard cap; Nitro supports up to 4,000. UTF-16 is a planning approximation for emoji.
TelegramBot API message4,096Unicode code pointsBot API sendMessage text after entity parsing. Media captions have separate limits.
FacebookPage post draftNo verified universal capVisible graphemesCount-only workspace. The checker deliberately does not invent a hard limit.
PinterestPin description500Unicode code pointsOfficial 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

  1. Paste the exact draft into the Cross-Platform Post Checker.
  2. 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.
  3. Check whether the result is an official/API constraint or a planning reference. Do not treat a reference as a platform guarantee.
  4. 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

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.