Character Counter
Live character counts with X, SMS, search and social media limits.
0 characters · 0 words
Limits
Bars update as you type- X (Twitter) post 0 / 280Links count as 23 · emoji and CJK as 2 280 left
- Title tag 0 / 60 (guide)Google shows about 50–60; cut by pixel width 60 left
- Meta description 0 / 160 (guide)Snippets are shortened to fit the screen 160 left
- Instagram caption 0 / 2,200Also at most 30 hashtags and 20 @ mentions 2,200 left
- YouTube title 0 / 100Video title limit 100 left
- Custom limit 0 / 500500 left
More platforms
- YouTube description 0 / 5,000Video description limit 5,000 left
- Bluesky post 0 / 300Characters as you see them; also at most 3,000 UTF-8 bytes 300 left
- Threads post 0 / 500Emoji count as their UTF-8 size (4 or more); at most 5 links 500 left
- LinkedIn post 0 / 3,000Post text limit 3,000 left
Your text has emoji or combined characters. The X, Threads, Bluesky and SMS counts follow those platforms’ own rules; Instagram, YouTube and LinkedIn do not document how they count them, so keep a few characters spare.
SMS
GSM-7How the message is split
More details
- Code points
- 0
- Letters
- 0
- Digits
- 0
- Spaces & line breaks
- 0
- Punctuation & symbols
- 0
- Emoji
- 0
- Invisible characters
- 0
- Longest line (characters)
- 0
About the Character Counter
Type or paste text and see its length counted several ways at once: characters with and without spaces, words, lines, UTF-8 bytes and UTF-16 code units. Bars show how much room is left for an X post, an SMS, a title tag, a meta description, an Instagram caption or a YouTube title, and for a limit you set yourself.
A character here is what you see as one symbol, so 👍🏽 or a flag counts as 1 even though it is stored as several code points. When the text is too long, the part that does not fit is highlighted, so you know exactly where to cut.
How to use it
- Type or paste your text into the box. Every count updates as you type.
- Choose what you are writing for in Check against, for example X (Twitter) post or Meta description. Anything over that limit is highlighted under the box.
- Before sending a text message, look at the SMS panel: it shows the encoding, how many messages will be sent and which characters force Unicode.
- Need another limit? Enter it under Custom limit and choose what to count: characters, words, UTF-8 bytes, UTF-16 code units or code points.
Examples
New guide: https://example.com/blog/how-to-count-characters-in-any-language 🚀
X counts 37 of 280: the link counts as 23 and the emoji as 2
Your order’s on its way!
Unicode (UCS-2): 24 of 70 characters · with a straight apostrophe: GSM-7, 24 of 160
The curly apostrophe (’) is not in the GSM-7 alphabet. Replace look-alikes swaps it for a plain one.
Hi 👋🏽
Characters: 4 · Code points: 5 · UTF-16 units: 7 · UTF-8 bytes: 11
Common uses
- Fitting posts, captions and bios into social media limits.
- Keeping SMS campaigns and OTP templates in one message and in the cheaper GSM-7 encoding.
- Checking title tags and meta descriptions before publishing a page.
- Making sure text fits a database column, an API field or an HTML
maxlengthmeasured in bytes or code units. - Finding invisible characters (zero-width spaces, byte order marks) that sneak in with copy and paste.
How X (Twitter) counts characters
X does not simply count characters. Its open-source twitter-text library, whose rules this counter follows, gives each character a weight:
- Letters, digits and punctuation from Latin, Greek, Cyrillic, Hebrew, Arabic, Devanagari and the other scripts up to U+10FF, plus common spaces, dashes and quotation marks, count as 1.
- Chinese, Japanese and Korean characters and most symbols count as 2, so a post in those scripts holds about 140 characters.
- Every emoji counts as 2, including skin-tone, flag and family sequences.
- Every link counts as 23, however long or short it is, because X wraps links in its t.co shortener. That includes links typed without http://, such as toolverse.in or example.com/blog, as long as they end in a real domain ending; e-mail addresses are not links.
Text is normalised (Unicode NFC) first, so an accent typed as a separate mark is not counted twice. These rules are described in X’s developer documentation. The 280 limit applies to standard accounts; X Premium subscribers can post longer text.
SMS: GSM-7, Unicode and message parts
Text messages use one of two encodings, defined in the 3GPP specifications TS 23.038 (alphabets) and TS 23.040 (long messages):
- GSM-7 covers English letters, digits, common punctuation and some accented letters (é, è, ü, ñ, Ä, Ö…). One message holds 160 characters. The characters ^ { } [ ] ~ \ | € need an escape code, so each counts as 2.
- Unicode (UCS-2) is used as soon as the message contains any other character — an emoji, a curly apostrophe (’), an en dash (–), Hindi or Chinese text. One message then holds only 70 characters.
Longer texts are split into parts that the phone joins back together. Each part gives up some room to a header, so a part holds 153 GSM-7 or 67 Unicode characters. Most providers bill each part as a separate SMS.
Curly quotes and dashes pasted from a word processor are the most common reason a message unexpectedly becomes Unicode. Replace look-alikes swaps them for plain equivalents without changing any letters.
Platform limits used here
Each limit comes from the platform’s own documentation:
- X post: 280, weighted as described above (twitter-text configuration).
- Instagram caption: 2,200 characters, at most 30 hashtags and 20 @ mentions (Instagram API reference). The counter shows how many hashtags and mentions your text has.
- YouTube: title 100 characters, description 5,000 (YouTube Help).
- Threads post: 500 characters, with each emoji counted as its UTF-8 size, so 😀 uses 4, and at most 5 different links (Threads API documentation). Threads does not say how it spots links, so the counter uses X’s rules.
- LinkedIn post: 3,000 characters (LinkedIn Help).
- Bluesky post: 300 characters as you see them (graphemes) and at most 3,000 bytes in UTF-8 (AT Protocol post schema). The byte limit matters for long posts in scripts such as Hindi, where one character can take 6 bytes or more.
Title tags and meta descriptions
Google does not publish a character limit for either. It shortens title links and snippets to fit the width of the screen, so the 60 and 160 characters used here are guides, not rules: wide letters such as W and M take more room than i or l. Put the most important words first so nothing that matters is cut off.
Characters, code points, UTF-16 units and bytes
The same text has several lengths, and different systems use different ones:
- Characters: what you see. 👍🏽 is 1 character.
- Code points: Unicode values. 👍🏽 is 2 (thumbs up + skin tone). PostgreSQL and MySQL (utf8mb4) measure
VARCHARlengths this way. - UTF-16 code units: how JavaScript, Java and the HTML
maxlengthattribute measure text. 👍🏽 is 4. - UTF-8 bytes: the storage size in files, URLs and most APIs. An English letter is 1 byte, é is 2, a Hindi letter is 3 and 👍🏽 is 8.
Limitations
- Instagram, YouTube and LinkedIn limits are counted in characters as you see them. Their documentation does not say how emoji are counted, so leave a few characters spare if your text has emoji.
- Links are found with the rules and the list of domain endings in X’s open-source twitter-text library, whose list does not include the newest domain endings; a link to a domain ending missing from it may be counted differently in X.
- Every emoji counts as 2 here, as X’s documentation describes. The emoji list inside X’s open-source library is not kept up to date, so tools built on it count some newer emoji made of several code points (such as 🧑🧑🧒) as more; if a post with very new emoji is close to the limit, check it in X itself.
- SMS counts assume the standard GSM-7 alphabet. Some networks also support national language tables (for example for Turkish or Indian languages), which this counter does not model.
- Platforms change their limits from time to time. If a post is rejected, check the platform’s own help pages.
Privacy
Everything happens in your browser. What you enter or open here is not uploaded or stored by MySmartCoPilot.
Frequently asked questions
Do spaces and line breaks count as characters?
Yes in Characters, which is what most platforms count, including X and SMS. Without spaces leaves out spaces, tabs and line breaks; some forms and assignments ask for that number.
Why does an emoji count as 2 on X but 1 here?
Characters shows symbols as you see them. X gives every emoji a weight of 2 in its 280 limit, and the X bar applies that rule. Other systems store an emoji as several units; see UTF-16 units and Code points.
How many characters fit in one SMS?
160 when every character is in the GSM-7 alphabet, and 70 when any character needs Unicode. Longer messages are split into parts of 153 (GSM-7) or 67 (Unicode) characters.
Why is my SMS using Unicode when I typed only English?
Text pasted from documents or phones often contains curly quotes (’ “ ”), long dashes (– —), an ellipsis (…) or a no-break space. They look normal but are not in GSM-7. The SMS panel lists them; press Replace look-alikes to swap them for plain ones.
What are invisible characters?
Zero-width spaces, byte order marks, soft hyphens and similar characters take up no visible space but are still counted, and twitter-text treats a post containing U+FEFF as invalid. The counter warns you when your text contains them and can remove them.
Is my text sent anywhere?
No. All counting happens in your browser; nothing is uploaded or stored. Once the page has loaded it also works offline.