Social Media Character Counter
Check your draft against documented platform rules, then split long posts without losing text. Everything runs locally in this tab.
How to use the social media counter
- Paste or type your post here…
- One draft, all platforms. Expand a row for fields, limits and splitting.
- For long posts, review the proposed parts and optionally add numbering. Copy individual parts or copy them all.
- For a video description, inspect the length boundary and edit your original text yourself. Check the final draft in the destination editor before publishing.
Features
- Checks one draft against several platform fields
- Explains platform-specific counting and limits
- Splits long posts without discarding text
- Shows field-specific limits and remaining space
- Counts links, hashtags and mentions for review
- Offers optional numbering for split posts
Use cases
- Prepare a post for more than one platform
- Split a long update into numbered parts
- Check a post containing links or hashtags
- Review a video description before publishing
Why platform counts differ
A grapheme is a character as it is typically perceived: an accented letter or a family emoji may consist of several Unicode code points. Bytes measure encoded size instead. The same draft can therefore fit one platform and exceed another.
X applies a weighted model and transforms recognized URLs before counting. Bluesky independently checks graphemes and bytes. YouTube descriptions use bytes, while the TikTok video API specifies UTF-16 units. The source sections above describe the supported fields.
Spaces and explicit line breaks remain part of the text. Word counts use language-aware segmentation where available. URL, hashtag and mention totals are informational detections, not promises that every platform will linkify them identically. Repeated hashtags are grouped without regard to case or canonically equivalent accents.
For Facebook, Instagram, LinkedIn and other targets marked approximate, a documented or secondary-source ceiling is used with grapheme counting. An official source does not automatically establish exact Unicode semantics. Estimated results guide editing and never claim that the platform has accepted or rejected your draft.
Practical examples and limits
Try a family emoji, a letter with a combining accent and a Chinese sentence. Compare the grapheme count with UTF-8 bytes: a short-looking description can still consume substantial space.
Paste a long URL into an X post and compare it with Bluesky. Then enable numbering in the splitter: the numbering consumes part of each post’s allowance. Paragraph and sentence boundaries are preferred when they leave a reasonably full part.
The splitter preserves every original space and line break. A link or hashtag longer than the allowance remains whole with a warning. This tool does not rewrite your message, score engagement or predict where a feed will fold text.
Also compare Russian and Chinese platforms: VK, OK, MAX, Weibo, WeChat, Douyin, Xiaohongshu and Bilibili. Choose the listed field and check its source; API, promoted-post and member limits apply only to those workflows.
Privacy and accuracy
Drafts live only in page memory. They are not sent to a server, stored in browser storage, added to URLs or included in page metadata. Reloading or leaving the page loses the draft. Copying writes to your clipboard only when you request it.
Limits describe the linked fields and sources, not every account tier or publishing workflow. The X library has older emoji data, and browsers without Intl.Segmenter use an approximate Unicode fallback. Verify unusual Unicode and the final publishing result in the platform editor.
Questions about social media counting
Sources and last verified
Caption
Approximate count: 2,200 graphemes
Instagram captions use Sprout Social’s publishing reference. This is an approximate grapheme count, not a verified Instagram Unicode validator; captions, bios and Stories are different fields.
Sprout Socialsupport.sproutsocial.comInstagram · Caption: source documentation · Sprout SocialSecondary estimate · Verified 2026-09-12
Bio
Approximate count: 150 graphemes
Instagram bio length uses Hootsuite’s guide as a secondary reference. Links and other profile fields are separate. Review emoji and combining characters in Instagram before saving.
Hootsuiteblog.hootsuite.comInstagram · Bio: source documentation · HootsuiteSecondary estimate · Verified 2026-09-12
Post
Approximate count: 63,206 graphemes
Facebook post length uses Sprout Social’s publishing reference as a secondary estimate. Ads, backgrounds, Reels and publishing tools can impose different limits. Graphemes are an approximation of the native editor’s count.
Sprout Socialsupport.sproutsocial.comFacebook · Post: source documentation · Sprout SocialSecondary estimate · Verified 2026-09-12
Post
Approximate count: 3,000 graphemes
LinkedIn documents the standard post ceiling, but does not define its Unicode counting unit in this help page. This tool uses graphemes as an estimate. Articles and profile headlines have different rules.
LinkedInlinkedin.comLinkedIn · Post: source documentation · LinkedInOfficial source · Verified 2026-09-12
X
Post
280 weighted characters
Standard X posts use twitter-text 3.1.0: weighted characters, NFC normalization and transformed URLs. The parser’s older emoji data may differ from today’s editor. Premium long posts, media and automatic reply mentions are outside this check.
Xdocs.x.comX · Post: source documentation · XOfficial source · Verified 2026-09-11
Threads
Post
Approximate count: 500 graphemes
Threads separates ordinary posts from longer text attachments. Select the matching field. Meta documents both ceilings, while this grapheme count remains approximate; a text attachment is not a longer ordinary post.
Metaabout.fb.comThreads · Post: source documentation · MetaOfficial source · Verified 2026-09-12
Text attachment
Approximate count: 10,000 graphemes
Threads separates ordinary posts from longer text attachments. Select the matching field. Meta documents both ceilings, while this grapheme count remains approximate; a text attachment is not a longer ordinary post.
Metaabout.fb.comThreads · Text attachment: source documentation · MetaOfficial source · Verified 2026-09-12
TikTok
Video caption (API)
2,200 UTF-16 units
This is TikTok’s video Direct Post API caption rule, measured in UTF-16 units. A supplementary emoji uses two units; a composed emoji can use more. In-app and photo-post limits can differ.
TikTokdevelopers.tiktok.comTikTok · Video caption (API): source documentation · TikTokOfficial source · Verified 2026-09-11
YouTube
Video description
5,000 UTF-8 bytes
YouTube descriptions are limited by UTF-8 bytes, not visible characters. The characters < and > are forbidden. The draft is never normalized or shortened.
YouTubedevelopers.google.comYouTube · Video description: source documentation · YouTubeOfficial source · Verified 2026-09-11
Video title
Approximate count: 100 graphemes
YouTube titles have a character ceiling separate from description bytes. The source does not define the title’s Unicode unit, so grapheme counting is approximate. The forbidden characters < and > are still checked exactly.
YouTubedevelopers.google.comYouTube · Video title: source documentation · YouTubeOfficial source · Verified 2026-09-12
Telegram
Bot message (plain text)
Approximate count: 4,096 graphemes
Telegram Bot API limits apply after entity parsing. Paste plain text as it should appear after formatting: HTML and Markdown are not parsed here. Grapheme counts and split budgets are approximate, and Premium app captions may differ from bot captions.
Telegramcore.telegram.orgTelegram · Bot message (plain text): source documentation · TelegramOfficial source · Verified 2026-09-12
Bot media caption (plain text)
Approximate count: 1,024 graphemes
Telegram Bot API limits apply after entity parsing. Paste plain text as it should appear after formatting: HTML and Markdown are not parsed here. Grapheme counts and split budgets are approximate, and Premium app captions may differ from bot captions.
Telegramcore.telegram.orgTelegram · Bot media caption (plain text): source documentation · TelegramOfficial source · Verified 2026-09-12
Bluesky
Post
300 graphemes
3,000 UTF-8 bytes
Bluesky checks both visible grapheme clusters and the UTF-8 size of the original text. Both limits must be met; a complex emoji can use many bytes.
Blueskygithub.comBluesky · Post: source documentation · BlueskyOfficial source · Verified 2026-09-11
Pin title
Approximate count: 100 graphemes
Pinterest documents separate Pin title and description limits. This tool follows the linked current specs rather than older scheduler tables. Grapheme counting is approximate; the editor remains the final check.
Pinteresthelp.pinterest.comPinterest · Pin title: source documentation · PinterestOfficial source · Verified 2026-09-12
Pin description
Approximate count: 800 graphemes
Pinterest documents separate Pin title and description limits. This tool follows the linked current specs rather than older scheduler tables. Grapheme counting is approximate; the editor remains the final check.
Pinteresthelp.pinterest.comPinterest · Pin description: source documentation · PinterestOfficial source · Verified 2026-09-12
Discord
Message (Free / Basic)
Approximate count: 2,000 graphemes
Discord Free and Nitro Basic share the standard message limit; full Nitro has a separate allowance. This is an approximate grapheme count. Markdown, custom emoji markup and mention identifiers can consume more space than their visible rendering.
Discordsupport.discord.comDiscord · Message (Free / Basic): source documentation · DiscordOfficial source · Verified 2026-09-12
Message (Nitro)
Approximate count: 4,000 graphemes
Discord Free and Nitro Basic share the standard message limit; full Nitro has a separate allowance. This is an approximate grapheme count. Markdown, custom emoji markup and mention identifiers can consume more space than their visible rendering.
Discordsupport.discord.comDiscord · Message (Nitro): source documentation · DiscordOfficial source · Verified 2026-09-12
VK ВКонтакте
Post
Approximate count: 16,384 graphemes
VK uses Autoposter’s wall-post reference. Grapheme counting is an estimate; article and media fields have separate rules.
Autoposterautoposter.digitalVK ВКонтакте · Post: source documentation · AutoposterSecondary estimate · Verified 2026-09-12
OK Одноклассники
Promoted post
Approximate count: 25,000 graphemes
OK’s source describes promoted posts, with up to 25,000 characters. Grapheme counting is approximate; this is not a limit for every OK format.
OKok.ruOK Одноклассники · Promoted post: source documentation · OKOfficial source · Verified 2026-09-12
MAX
Bot message (plain text)
Approximate count: 4,000 graphemes
MAX’s Bot API allows up to 4,000 characters in a chat or channel message. This estimate counts plain text; HTML and Markdown are not parsed.
MAXdev.max.ruMAX · Bot message (plain text): source documentation · MAXOfficial source · Verified 2026-09-12
Weibo 微博
Post
Approximate count: 5,000 graphemes
Weibo’s verified feedback account lists 5,000 Chinese characters for regular posts and 10,000 for members. Grapheme estimates do not reproduce mixed-script weighting or link handling. Reposts, comments and API sharing have different limits.
Weibo 意见箱sina.cnWeibo 微博 · Post: source documentation · Weibo 意见箱Official source · Verified 2026-09-12
Post (member)
Approximate count: 10,000 graphemes
Weibo’s verified feedback account lists 5,000 Chinese characters for regular posts and 10,000 for members. Grapheme estimates do not reproduce mixed-script weighting or link handling. Reposts, comments and API sharing have different limits.
Weibo 意见箱sina.cnWeibo 微博 · Post (member): source documentation · Weibo 意见箱Official source · Verified 2026-09-12
WeChat 微信
Customer service message (API)
Approximate count: 2,048 UTF-8 bytes
This is WeChat Customer Service API text, not Moments, personal chats or public-account articles. The source specifies 2,048 bytes; UTF-8 is used as a reference estimate. Other sending restrictions still apply.
WeChat Customer Servicedeveloper.work.weixin.qq.comWeChat 微信 · Customer service message (API): source documentation · WeChat Customer ServiceOfficial source · Verified 2026-09-12
Douyin 抖音
Video caption (API)
Approximate count: 1,000 graphemes
Douyin’s video publishing API allows 1,000 characters in its text field, including topics and mentions. This grapheme estimate does not cover every editor or video format.
Douyinpartner.open-douyin.comDouyin 抖音 · Video caption (API): source documentation · DouyinOfficial source · Verified 2026-09-12
Xiaohongshu 小红书
Standard note
Approximate count: 1,000 graphemes
MyAIBot documents 1,000 characters for standard Xiaohongshu note bodies. This is an estimated publishing-tool reference; titles and long-form notes have separate rules.
MyAIBotmyaibot.vipXiaohongshu 小红书 · Standard note: source documentation · MyAIBotSecondary estimate · Verified 2026-09-12
Bilibili 哔哩哔哩
Video description (API)
Approximate count: 249 graphemes
Bilibili’s Open Platform submission API specifies a description shorter than 250 and a title shorter than 80: the reference budgets here are 249 and 79. Unicode counting is estimated; these are not universal app-editor limits.
Bilibili Open Platformbilibili.apifox.cnBilibili 哔哩哔哩 · Video description (API): source documentation · Bilibili Open PlatformOfficial source · Verified 2026-09-12
Video title (API)
Approximate count: 79 graphemes
Bilibili’s Open Platform submission API specifies a description shorter than 250 and a title shorter than 80: the reference budgets here are 249 and 79. Unicode counting is estimated; these are not universal app-editor limits.
Bilibili Open Platformbilibili.apifox.cnBilibili 哔哩哔哩 · Video title (API): source documentation · Bilibili Open PlatformOfficial source · Verified 2026-09-12
Coverage is field-specific. Estimates, API limits and account tiers are labeled; confirm the result in the destination editor. There is no universal ideal length or guaranteed reach score.
Related tools
JSON to YAML
Convert JSON to YAML locally while preserving number text and quoted strings; copy or download the complete result.
Open tool — JSON to YAMLYAML to JSON
Convert one YAML document locally to JSON with exact number text and bounded aliases, then copy or download the complete result.
Open tool — YAML to JSONHTML to Markdown
Convert pasted or local HTML into Markdown, review conversion notes, and copy or download the result.
Open tool — HTML to MarkdownJavaScript Regex Tester
Test a JavaScript pattern locally and inspect matches, captures, and UTF-16 positions.
Open tool — JavaScript Regex TesterMarkdown to HTML
Convert a Markdown draft to an HTML fragment, inspect the source and inert preview, then copy or download it.
Open tool — Markdown to HTMLText Sorter
Sort lines alphabetically by a chosen language or by Unicode code point, keeping duplicates, blank rows and complete line contents.
Open tool — Text SorterRemove Duplicate Lines
Keep the first copy of each exact text line, preserving order, significant spaces and blank rows, then copy or download the result.
Open tool — Remove Duplicate LinesText Diff Checker
Compare two drafts locally, with exact whole-line changes, visible whitespace rules and clear final-newline handling.
Open tool — Text Diff CheckerCase Converter
Convert text to uppercase, lowercase, capitalized words or sentence case with explicit letter rules.
Open tool — Case ConverterHTML Entity Encoder/Decoder
Encode or decode literal HTML references with explicit context, Unicode options and LF output, without parsing or rendering markup.
Open tool — HTML Entity Encoder/DecoderMarkdown Table Generator
Edit a small literal-text table, set alignment and copy GFM Markdown or import tab-separated text.
Open tool — Markdown Table GeneratorQuery String Parser & Builder
Edit ordered URL parameters, retain repeated names and copy a normalized query or HTTP(S) URL.
Open tool — Query String Parser & BuilderURL Encoder & Decoder
Convert a UTF-8 URL component or form value with explicit space and plus rules, then copy or download the result.
Open tool — URL Encoder & DecoderBase64 Encoder & Decoder
Encode UTF-8 text as standard or URL-safe Base64, or decode either format with clear errors and complete text output.
Open tool — Base64 Encoder & DecoderXML Formatter
Check namespace-aware XML 1.0, format or compact locally, and copy or download UTF-8 output.
Open tool — XML FormatterJSON Formatter & Validator
Check JSON syntax, format or minify locally, and copy or download output while preserving original data tokens.
Open tool — JSON Formatter & ValidatorSMS Character Counter & Segment Calculator
See how your message is encoded, where its segments end and what it may cost. Your text stays in your browser.
Open tool — SMS Character Counter & Segment CalculatorCharacter Counter
Count characters, words, sentences and paragraphs. Check word density, reading time and UTF-8 size, all in your browser.
Open tool — Character CounterText Size Calculator
Compare text encodings and payload sizes in your browser.
Open tool — Text Size CalculatorPDF Text Cleaner
Fix line breaks and spacing in text copied from a PDF. Preserve your original and review ambiguous hyphens before copying the cleaned text.
Open tool — PDF Text CleanerFancy Text Converter
Convert supported fancy Unicode letters to normal text locally. Keep case, accents, emoji and your original text.
Open tool — Fancy Text ConverterGarbled Text Fixer
Fix garbled text and repair broken accents with a browser-based mojibake fixer. Review each possible UTF-8 reversal before applying it.
Open tool — Garbled Text FixerGmail Clipping Checker
Measure email HTML bytes in UTF-8, compare them with an advisory 102,000-byte Gmail reference, and inspect size contributors locally.
Open tool — Gmail Clipping Checker