What Is This Tool?
For plain ASCII text (English letters, digits, basic punctuation), character count and byte count are the same number — each character takes exactly one byte in UTF-8. Once text includes accented letters, Chinese/Japanese/Korean characters, Cyrillic, Arabic, emoji, or most other non-ASCII characters, that stops being true: a single character can take 2, 3, or 4 bytes in UTF-8, and 2 or 4 bytes in UTF-16.
This matters whenever a system has a byte limit rather than a character limit — SMS messages, database column sizes, API payload limits, and some social platforms all measure in bytes, not characters, so the same piece of text can silently exceed a limit depending on what language or symbols it contains.
Why Use It?
- A Twitter/X-style bio field caps you at a byte limit, not a character limit, and your name has an emoji in it — type it here to see the real byte cost before the form silently truncates it.
- Your app's database column is defined as VARCHAR(255) in bytes under the hood, and a Japanese or Arabic product title that "looks short" keeps getting rejected — paste it here to see why it's actually using 3x the bytes a Latin-script title would.
- You're estimating how many SMS segments a multilingual marketing message will use — since carriers bill and split by byte size, checking the UTF-8/UTF-16 byte count here beats guessing and getting an oversized bill.
- An API returns a cryptic "payload too large" error on a JSON field with a strict byte-length validator, and the string looked fine in your editor — this shows you exactly how many bytes that string actually costs.
- You're comparing why the same sentence costs more storage in one language than another — type each version in and watch the UTF-8 byte count jump for CJK or Arabic text versus the plain-ASCII version.
- You need to double check whether an emoji in a username is being counted as one character or two by a picky validation rule — this tool counts it the way a person would see it, so you can tell if the other system is doing it wrong.
How to Use
- Type or paste text into the box.
- Read the character count, UTF-8 byte count, and UTF-16 byte count below it — they update as you type.
Example
Input
Hello, 世界! 🌍Output
12 characters, 19 UTF-8 bytes, 26 UTF-16 bytesThe ASCII portion ("Hello, " and "! ") takes 1 byte per character in UTF-8. Each Chinese character takes 3 bytes, and the emoji takes 4 bytes — which is why the byte counts are noticeably higher than the character count.
UTF-8 byte size by character type
The table below shows typical UTF-8 byte cost by character category — useful for estimating how much a piece of multilingual text will actually weigh before you paste the whole thing in.
| Character type | Example | UTF-8 bytes | UTF-16 bytes |
|---|---|---|---|
| ASCII letter/digit | A, 7 | 1 | 2 |
| Accented Latin (é, ñ, ü) | é | 2 | 2 |
| Cyrillic / Greek / Hebrew / Arabic | д, α, א | 2 | 2 |
| CJK (Chinese, Japanese, Korean) | 世 | 3 | 2 |
| Most emoji (outside BMP) | 🌍 | 4 | 4 |
Common uses
- Checking whether a multilingual product description will fit a database column defined by byte length rather than character count.
- Estimating SMS segment usage, since SMS is billed and split by byte size, and non-Latin text uses a different per-segment limit.
- Verifying an API payload or form field stays under a byte-based size limit before submitting.
- Understanding why a string that "looks short" is being rejected by a system with a byte-based length check.
Frequently Asked Questions
Why don't character count and byte count match?
Unicode text is stored as bytes, and how many bytes each character needs depends on the encoding and the character itself. In UTF-8, ASCII characters take 1 byte, most accented Latin and Cyrillic/Greek/Hebrew/Arabic letters take 2 bytes, most CJK characters take 3 bytes, and emoji typically take 4 bytes. Character count simply counts symbols, ignoring how they're stored.
Which byte count should I use for a byte-limited field?
Use whichever encoding the system actually uses to store or transmit the text — most modern web APIs, databases, and files use UTF-8, so the UTF-8 byte count is usually the relevant one. Some older systems (like internal Windows/Java string handling) use UTF-16.
Does this count emoji correctly?
Yes. Many emoji are stored internally as a pair of UTF-16 "surrogate" code units, which naive counting methods count as 2 characters. This tool counts Unicode code points correctly, so an emoji is counted as 1 character, matching how many characters a person actually sees.
Is this the same as the Word Counter tool?
No — Word Counter focuses on word and sentence counts for writing. This tool is specifically about byte size versus character count, which matters for technical limits rather than word-count requirements.
Is my text uploaded anywhere?
No. Counting happens locally in your browser using JavaScript's built-in text encoder; nothing is sent to a server.
Why does the same character take a different number of bytes in UTF-8 versus UTF-16?
The two encodings use completely different rules for mapping code points to bytes. UTF-8 uses 1 to 4 bytes depending on the character, optimized so ASCII stays 1 byte. UTF-16 uses 2 bytes for most characters and 4 bytes only for characters outside the Basic Multilingual Plane (like most emoji) — so a Chinese character is 3 bytes in UTF-8 but only 2 bytes in UTF-16, while an emoji is 4 bytes in both.
Does a skin-tone or family emoji (made of multiple joined characters) count correctly?
The tool counts Unicode code points, so a compound emoji built from multiple code points joined with a zero-width joiner (like a family emoji) is counted as several characters, not one — matching how the underlying text is actually encoded, even though it renders as a single glyph.
What's the difference between UTF-8 byte count and character count for plain English text?
For standard English text using only ASCII letters, digits, spaces, and basic punctuation, they're identical — every character is exactly 1 byte in UTF-8. The gap only appears once accented letters, symbols, or non-Latin scripts are added.
Can I use this to check Twitter/X or SMS character limits exactly?
This tool gives you raw character and byte counts, which is the foundation those limits are built on, but platforms sometimes apply their own weighting rules (e.g. some count certain emoji or URLs as a fixed number of characters regardless of actual length) — check the platform's specific rules for edge cases, and use this tool to understand the underlying byte cost.