UTF-8 bytes vs. characters: how to check a text-size limit

Compare visible characters, Unicode code points and UTF-8 bytes with worked examples, then check what a file or form limit actually measures.

By Bell Park Products LLC · Updated November 4, 2026

A draft can fit a character limit and still exceed a byte limit. That is especially easy to encounter when the text contains accented names, non-Latin scripts or emoji. The useful question is not simply “How long is this?” but “Which measurement does the destination use?”

Open the free character counter, paste your draft and expand More text statistics & counting details. The UTF-8 bytes statistic measures the encoded text. Compare it with visible characters, Unicode code points and UTF-16 units rather than assuming those four numbers are interchangeable.

What a byte count measures

A character count describes units of text; a byte count describes an encoded representation. UTF-8 uses one byte for an ordinary ASCII letter such as A, but other Unicode code points can require more. A visible symbol can also contain several code points. The Unicode UTF FAQ explains the encoding distinction, while the WHATWG Encoding Standard defines the browser text encoder used for UTF-8.

These examples contain no quotation marks or trailing newline. “Visible” means grapheme clusters in a browser with the relevant segmentation support.

TextVisible charactersCode pointsUTF-16 unitsUTF-8 bytes
ABC3333
café, with precomposed é4445
café, with e + combining acute accent4556
中1113
😀1124

The two versions of café illustrate why appearance alone is insufficient. Their different underlying sequences can display alike. This is the normalization issue discussed in Unicode Standard Annex #15. ClearCount measures the supplied sequence; it does not silently rewrite accents to make a draft smaller.

A worked message example

Consider the exact message Meet at Café 😀. It contains 14 visible characters and 14 code points. The emoji adds an extra UTF-16 unit, so that count is 15. Its UTF-8 size is 18 bytes: 4 for Meet, 3 for the spaces, 2 for at, 5 for Café and 4 for the emoji.

If a destination allows 16 visible characters, this message fits that particular rule. If it allows only 16 UTF-8 bytes, it does not. Removing the emoji and its preceding space produces Meet at Café, which uses 13 UTF-8 bytes. That is a purposeful change you can review for meaning, rather than an instruction to remove every accent from a person's name.

For another quick check, 80 ASCII letters use 80 bytes. Adding five 😀 emoji brings the total to 100 bytes, although the visible count becomes only 85. A sixth emoji raises the byte count to 104. A fixed “average bytes per character” estimate would miss this boundary.

Text size is not always file or request size

The number shown here is the UTF-8 size of the text after the counter normalizes line endings to a single line-feed character. It is not a complete inspection of the original file. A file can use another encoding, include a byte-order mark or store line endings as carriage return plus line feed. Any of those can make its on-disk size differ from the displayed text count.

An upload limit can apply to an entire document, including formatting and embedded images. An API limit can apply to a complete serialized request, including field names, quotation marks and escaping. Counting only the message field does not measure those additional bytes. If you are checking an API, inspect the actual outgoing request; if you are checking a file upload, inspect the final file.

Use the limit the destination actually documents

First identify the unit: bytes, code points, UTF-16 units, visible characters or words. Then identify the scope: one field, one encoded string, a whole request or a complete file. A database type name by itself is not enough to infer its character and storage rules; use the documentation for that particular system and configuration.

Next, compare a small test string with the destination before editing a long draft. Plain ASCII is a useful baseline, followed by an accented letter and an emoji. Keep a copy of your original and confirm acceptance in the real destination after the final edit. The counter's custom limit selector covers visible characters, code points and UTF-16 units; compare a byte ceiling manually with the UTF-8 bytes statistic.

For related checks, read why emoji can produce several different counts and what the without-spaces total excludes. Each measurement answers a different practical question.

Keep exploring