Unicode vs. UTF-8: What Is the Difference?

5 min read · Updated 2026-08-05

Unicode is the character model

Unicode defines the code point for each character and the rules for case, direction, combining, and other text behavior. It does not say how many bytes a character takes in a file.

A is U+0041 and the grinning face is U+1F600 in the same standard. Both characters can be written with completely different byte sequences depending on the encoding form.

UTF-8 is the byte encoding

UTF-8 turns code points into one to four bytes. ASCII characters such as A use one byte, most Latin and Greek letters use two, common CJK characters use three, and astral characters such as U+1F600 use four.

Because ASCII fits inside UTF-8 unchanged, existing tools and formats often treat UTF-8 as a drop-in extension of ASCII text.

UTF-16 and UTF-32 in context

UTF-16 uses 16-bit units, so characters beyond U+FFFF are stored as surrogate pairs. UTF-32 uses a fixed four bytes per code point, which is simple but wasteful for mostly-ASCII text.

For the web, UTF-8 is the practical default. UTF-16 appears in some operating system APIs and JavaScript internals, and UTF-32 is used when fixed-width indexing matters more than size.