What counts as a character
A character is one symbol as you see it: a letter, a digit, a space, a punctuation mark or an emoji. Computers store text as code points, though, and some symbols are built from several of them. The family emoji 👨👩👧 is three people glued together with invisible joiners. A flag such as 🇵🇰 is two special letters. An accented é can be stored as one code point or as an e plus a separate accent.
This counter groups those pieces the way your screen shows them, using the browser’s built-in grapheme segmenter (Intl.Segmenter). So 👍🏽 counts as one character, not two or four. Older browsers without that feature get a careful fallback that still joins emoji sequences, flags and accents.
Here is what each number means:
- Characters: every visible symbol, plus spaces, tabs and line breaks.
- Without spaces: the same count with all whitespace left out.
- Words and lines: the same rules as the word counter.
- UTF-8 size: how many bytes the text takes in a file, a database or a web request.
- UTF-16 code units: what JavaScript’s
lengthreports. Some apps and APIs set their limits this way.
Why the numbers can disagree
The same text can have several “lengths” depending on who is counting. Plain English letters cost the same everywhere, but other symbols do not:
| Text | Characters | UTF-16 units | UTF-8 bytes | X counts |
|---|---|---|---|---|
| hello | 5 | 5 | 5 | 5 |
| café | 4 | 4 | 5 | 4 |
| 你好 | 2 | 2 | 6 | 4 |
| 👍🏽 | 1 | 4 | 8 | 2 |
| 𝐁𝐨𝐥𝐝 (bold letters) | 4 | 8 | 16 | 8 |
The last row matters if you style a bio or post. Fancy letters from the font generator look like normal text, but each one is a separate Unicode symbol that takes double space on X and in many character limits.
Limits on popular platforms
The bars in the tool track the limits people check most often. These are the published numbers at the time of writing:
| Where | Limit |
|---|---|
| X post (standard account) | 280, with weighted counting |
| Instagram caption | 2,200 characters |
| Instagram bio | 150 characters |
| LinkedIn post | 3,000 characters |
| YouTube video title | 100 characters |
| Title in Google results | about 50–60 characters |
| Meta description | about 150–160 characters |
| One SMS | 160 (GSM-7) or 70 (Unicode) |
Search engines do not have a hard character limit. They cut titles and snippets by pixel width, so a title full of wide capital letters gets cut sooner than one with narrow letters. Treat 60 and 160 as safe targets, not exact rules.
How X counts characters
X gives standard accounts 280 characters, but some count double. Letters from most European alphabets, digits, normal punctuation and curly quotes count as 1. Chinese, Japanese and Korean characters count as 2. Every emoji counts as 2, including skin-tone and family emoji. Each link counts as 23, however long it is, because X shortens it. The X bar above follows the rules in X’s open-source twitter-text library.
Example: the post “New post: https://example.com/blog/2026/my-very-long-article-title 🎉” counts as 10 + 23 + 1 + 2 = 36, even though it is 68 characters long.
How SMS length works
A text message carries 140 bytes. With the GSM-7 alphabet each character uses 7 bits, so one message fits 160 characters. Longer messages are split into parts, and each part gives up a few bytes to a header that tells the phone how to join them again. That leaves 153 characters per part.
If a message contains even one character that is not in GSM-7, the whole message switches to Unicode (UCS-2), where each character uses 16 bits. Then one message fits 70 characters, or 67 per part.
Worked example: a 150-character appointment reminder fits in one SMS. Now paste it from a word processor that turned one apostrophe into a curly ’. The message becomes Unicode, and 150 ÷ 67 rounded up is 3 parts. Many SMS services bill per part, so one apostrophe can triple the cost. The tool names the characters that caused the switch and can replace curly quotes, long dashes and special spaces with plain ones.
Two more details catch people out:
- A few GSM-7 characters use two slots because they need an escape code: €
[]{}^~|\and the form feed. - A two-slot character or an emoji is never split between parts, so a message can need one more part than simple division suggests. The tool accounts for this.
Tips for writing to a limit
- Write first, then trim. Cut filler words like “very” and “really” before you cut meaning.
- Put the key words first. Feeds, search results and phone previews all cut text from the end.
- Watch pasted text. Word processors add curly quotes, long dashes and no-break spaces. They look harmless but change SMS encoding.
- Check what a form means by “characters”. Some databases limit bytes, not characters, and an emoji takes 4 bytes in UTF-8.
- Fix capitals before you count. If your draft is stuck in CAPS LOCK, convert it with the case converter first.
Your text never leaves your device. The counting runs in your browser, and the draft is saved only in your own browser storage until you press Clear.