TextDecoder

Baseline Widely available

This feature is well established and works across many devices and browser versions. It’s been available across browsers since January 2020.

Note: This feature is available in Web Workers.

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.

Constructor

TextDecoder()

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, which 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.

TextDecoder.decode()

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

Examples

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.

js
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]);

console.log(utf8decoder.decode(u8arr));
console.log(utf8decoder.decode(i8arr));
console.log(utf8decoder.decode(u16arr));
console.log(utf8decoder.decode(i16arr));
console.log(utf8decoder.decode(i32arr));

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.

js
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)); // Привет, мир!

Specifications

Specification
Encoding
# interface-textdecoder

Browser compatibility

Report problems with this compatibility data on GitHub
desktopmobileserver
Chrome
Edge
Firefox
Opera
Safari
Chrome Android
Firefox for Android
Opera Android
Safari on iOS
Samsung Internet
WebView Android
WebView on iOS
Deno
Node.js
TextDecoder
TextDecoder() constructor
decode
encoding
fatal
ignoreBOM
Available in workers

Legend

Tip: you can click/tap on a cell for more information.

Full support
Full support
Partial support
Partial support
See implementation notes.
Has more compatibility info.

See also