'''UTF-16''', 16-[[bit]] Unicode Transformation Format, is een karakter codeerstandaard,karaktercodeerstandaard met een variabele lengte, die de gehele Unicode-tekenset ondersteundondersteunt.
De codeerstandaard zet karakters om van uit een codepoint naar een reeks van 16-bit woorden. De karakters in de [[Basic Multilingual paneel]] (BMP) kunnen worden omgezet naar één woord van 16 bit. De karakters in de hogere panelen, worden omgezet in twee 16-bit woorden.
Alle codepoints van U+0000 tot en met U+10FFFF, behalve de oneigenlijke code points U+D800–U+DFFF, kunnen uniek worden omgezet naar UTF-16, met uitzondering van de code points die momenteel zijn gereserveerd voor toekomstig gebruik.
Regel 24:
UTF-16 kan in tegenstelling tot UCS-2 ook karakters encoderen van Unicode panelen 1–16, niet alleen paneel 0 (BMP).
UTF-16 representeerdrepresenteert ook de non-BMP karakters (die van U+10000 tot en met U+10FFFF) in twee 16-bit woorden, ook we bekend als een '''surrogate pair'''. Eerst wordt er 10000<sub>hex</sub> afgetrokken van het code point om een 20-bit waarde te krijgen. Dit wordt dan opgedeeld in twee onafhankelijke 10-bit waardes, die elk is represented as a surrogate with the most significant half placed in the first surrogate. To allow safe use of simple [[word-oriented]] string processing separate ranges of values are used for the two surrogates (U+D800–U+DBFF for the first surrogate and U+DC00-U+DFFF for the second surrogate).
Zo wordt bijvoorbeeld het karakter van code point U+10000 omgezet naar de reeks D800 DC00 (hexadecimalhexadecimaal), en het karakter op U+10FFFD, de hoogste limiet van Unicode, wordt de reeks DBFF DFFD. Unicode and ISO/IEC 10646 do not assign characters to any of the code points in the D800–DFFF range, so an individual code value from a surrogate pair does not ever represent a character.