The codePointAt() method returns a non-negative integer that is the Unicode code point value at the given position. Note that this function does not give the nth code point in a string, but the code point starting at the specified string index.

Try it





Position of an element in str to return the code point value from.

Return value

A decimal number representing the code point value of the character at the given pos.

  • If there is no element at pos, returns undefined.
  • If the element at pos is a UTF-16 high surrogate, returns the code point of the surrogate pair.
  • If the element at pos is a UTF-16 low surrogate, returns only the low surrogate code point.


Using codePointAt()

'ABC'.codePointAt(0)                        // 65
'ABC'.codePointAt(0).toString(16)           // 41

'😍'.codePointAt(0)                         // 128525
'\ud83d\ude0d'.codePointAt(0)               // 128525
'\ud83d\ude0d'.codePointAt(0).toString(16)  // 1f60d

'😍'.codePointAt(1)                         // 56845
'\ud83d\ude0d'.codePointAt(1)               // 56845
'\ud83d\ude0d'.codePointAt(1).toString(16)  // de0d

'ABC'.codePointAt(42)                       // undefined

Looping with codePointAt()

Because indexing to a pos whose element is a UTF-16 low surrogate, returns only the low surrogate, it's better not to index directly into a UTF-16 string.

Instead, use a for...of statement or an Array's forEach() method (or anything which correctly iterates UTF-16 surrogates) to iterate the string, using codePointAt(0) to get the code point of each element.

for (const codePoint of '\ud83d\udc0e\ud83d\udc71\u2764') {
// '1f40e', '1f471', '2764'


ECMAScript Language Specification
# sec-string.prototype.codepointat

Browser compatibility

BCD tables only load in the browser

See also