Use the free Text Byte Counter below: your data never leaves your browser — all work happens on your device, and nothing is uploaded to any server.
Characters are not bytes
Most people assume one character equals one byte. For plain English text that is true, but it stops being true the moment you use an accented letter, a currency symbol or an emoji. Computers store text as bytes, and the UTF-8 encoding used by almost the whole modern web gives different characters different byte sizes. A basic Latin letter takes one byte. An accented letter takes two. Most Asian scripts take three. An emoji takes four. A text byte counter shows you the real storage cost of your text, not just its character count.
That difference matters more often than you might think. Databases have byte limits on fields. Messaging systems charge or truncate by bytes. File uploads have size limits in bytes. APIs reject requests that are too large in bytes. If you only counted characters, a message full of emoji could pass your check and still fail at the system that counts bytes. Counting bytes first avoids that surprise.
How UTF-8 works
UTF-8 is a clever compromise. It keeps the first 128 characters, the basic Latin letters, digits and common punctuation, at one byte each, which keeps English text compact and compatible with older systems. Characters beyond that range use a leading byte that announces how many bytes follow, plus continuation bytes. That design means a reader can always tell where one character ends and the next begins, even in the middle of a stream.
The ranges are simple to remember. Code points up to 127 use one byte. Code points from 128 to 2047 use two bytes, which covers accented Latin letters, Greek, Cyrillic, Hebrew and Arabic. Code points from 2048 to 65535 use three bytes, which covers most Chinese, Japanese and Korean characters, plus symbols like the euro sign. Everything above that, including emoji and rare historic scripts, uses four bytes.
How this counter works
Paste your text and press Count bytes. The tool encodes your text exactly the way a browser or server would, using the built-in TextEncoder, and reports the total byte length. It also breaks the total down by size: how many characters use one byte, two bytes, three bytes and four bytes. That breakdown shows you at a glance what is driving the size. A text with a few emoji can easily cost more bytes than a much longer plain paragraph.
The tool also reports the character count alongside the byte count, so you can compare the two directly. When they match, your text is pure basic Latin. When bytes exceed characters, the gap tells you how much of your text sits outside that range. The bigger the gap, the more your text depends on multi-byte characters.
Where byte counts bite
Database columns are a classic case. A column defined as 255 bytes holds 255 plain letters but only 127 two-byte letters or 63 emoji. Developers who test with English text and then meet real user input in other languages hit this limit fast. Form fields with byte limits behave the same way. Counting bytes before you submit saves a rejected form and a lost draft.
Messaging and SMS have their own version. A single SMS holds 160 characters in the basic set but only 70 characters once it switches to a wider encoding, because the message is measured in a fixed number of bytes. Social platforms, push notifications and chat systems all have limits that are really byte limits in disguise. A byte counter tells you the truth before you send.
Bytes, storage and files
File sizes follow the same rule. A plain-text file of 10,000 English characters is about 10 kilobytes. The same number of characters in emoji-heavy text can be 40 kilobytes. That matters for storage quotas, email attachment limits and upload caps. It also matters for performance: larger payloads take longer to send, especially on slow connections.
Compression changes the picture but does not remove it. Compressed text shrinks, but the uncompressed byte count still decides buffer sizes, memory use and many API limits. Knowing the raw byte count is the starting point for every other size decision, and it is the number systems actually enforce.
Tips for staying under limits
When you are close to a limit, check the breakdown first. If four-byte characters dominate, replacing a few emoji with words can save far more bytes than trimming plain text. If two-byte characters dominate, the text is probably in an accented language, and trimming words is the honest fix, since you cannot reasonably strip accents from someone’s language.
Also remember that some characters you cannot see still cost bytes. A non-breaking space, a zero-width joiner inside an emoji sequence, or a byte-order mark at the start of a file all count. If a byte total looks higher than you expect, invisible characters are a likely cause. Paste the text here, check the breakdown, and you will know exactly where the bytes are going, with nothing uploaded anywhere in the process.
