The TextDecoder interface represents a decoder for a specific text encoding, such as UTF-8, ISO-8859-2, KOI8-R, GBK, etc. A decoder takes a stream of bytes as input and emits a stream of code points.

Note: This feature is available in Web Workers



Returns a newly constructed TextDecoder that will generate a code point stream with the decoding method specified in parameters.

Instance properties

The TextDecoder interface doesn't inherit any properties.

TextDecoder.encoding Read only

A string containing the name of the decoder, that is a string describing the method the TextDecoder will use.

TextDecoder.fatal Read only

A Boolean indicating whether the error mode is fatal.

TextDecoder.ignoreBOM Read only

A Boolean indicating whether the byte order mark is ignored.

Instance methods

The TextDecoder interface doesn't inherit any methods.


Returns a string containing the text decoded with the method of the specific TextDecoder object.


Representing text with typed arrays

This example shows how to decode a Chinese/Japanese character Chinese character meaning lucky, as represented by five different typed arrays: Uint8Array, Int8Array, Uint16Array, Int16Array, and Int32Array.

let utf8decoder = new TextDecoder(); // default 'utf-8' or 'utf8'

let u8arr = new Uint8Array([240, 160, 174, 183]);
let i8arr = new Int8Array([-16, -96, -82, -73]);
let u16arr = new Uint16Array([41200, 47022]);
let i16arr = new Int16Array([-24336, -18514]);
let i32arr = new Int32Array([-1213292304]);


Handling non-UTF8 text

In this example, we decode the Russian text "Привет, мир!", which means "Hello, world." In our TextDecoder() constructor, we specify the Windows-1251 character encoding, which is appropriate for Cyrillic script.

const win1251decoder = new TextDecoder("windows-1251");
const bytes = new Uint8Array([
  207, 240, 232, 226, 229, 242, 44, 32, 236, 232, 240, 33,
console.log(win1251decoder.decode(bytes)); // Привет, мир!


# interface-textdecoder

Browser compatibility

BCD tables only load in the browser

See also