Sposób kodowania Mapowanie znaków Unicode na ciągi bajtów możliwe jest na jeden z czterech sposobów: U+00 do U+7F        – 0xxxxxxx, gdzie kolejne „x” to bity od najstarszego, U+80 do U+7FF       – 110xxxxx 10xxxxxx, U+800 do U+FFFF     – 1110xxxx 10xxxxxx 10xxxxxx, U+10000 do U+10FFFF – 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx. Znaki z przedziału ASCII (0 do 127) kodowane są jako jeden bajt, czyli m.in. litery alfabetu łacińskiego. Polskie litery diakrytyzowane kodowane już są jako dwa bajty.

W listopadzie 2003 roku kodowanie UTF-8 zostało ograniczone zgodnie z , w celu zapewnienia zgodności z ograniczeniami kodowania UTF-16. Po pierwsze ograniczono maksymalny kod do U+10FFFF. Wcześniej wynosił on U+7FFFFFFF, dopuszczalne były sekwencje złożone z 5 i 6 bajtów, a 4-bajtowe mogły kodować znaki do U+1FFFFF. Po drugie zabroniono kodów z zakresu od U+D800 do U+DFFF, co pomniejszyło liczbę dopuszczalnych kodów o dodatkowe 2048. W ten sposób pozostało dokładnie 17 · 65536 − 2048 kodów, co oznacza że w UTF-8 można zakodować 1 112 064 różnych znaków.