coderef

Text encoding and decodingBaseline · Widely available

The TextEncoder API transforms a stream of code points into a byte stream with UTF-8 encoding, and TextDecoder does the reverse.

Supported in all major browsers for at least 30 months — safe to use without fallbacks. Baseline since Jan 15, 2020. Widely available since Jul 15, 2022.

Browser support

DesktopChrome
1–37Not supported
38+Supportedsince Oct 7, 2014
Current: 155
Edge
12–18Not supported
79+Supportedsince Jan 15, 2020
Current: 154
Firefox
1–18Not supported
19+Supportedsince Feb 19, 2013
Current: 157
Safari
1–10Not supported
10.1+Supportedsince Mar 27, 2017
Current: 27
MobileChrome Android
18–37Not supported
38+Supportedsince Oct 8, 2014
Current: 155
Firefox Android
4–18Not supported
19+Supportedsince Feb 19, 2013
Current: 157
Safari iOS
1–10Not supported
10.3+Supportedsince Mar 27, 2017
Current: 27

How to use

This feature is Baseline widely available — use it freely, no fallback needed.

Example

Full syntax and examples are on MDN: TextDecoder.

Feature detection

JS · check before using
if ("TextDecoder" in globalThis && "encoding" in TextDecoder.prototype) {
  // TextDecoder.encoding is available
}

Sub-features

Support for each part of the feature (25). The overall table above shows when the whole feature works.

Sub-featureChromeEdgeFirefoxSafariChrome AndroidFirefox AndroidSafari iOS
TextDecoder38791910.1381910.3
TextDecoder.TextDecoder38791910.1381910.3
TextDecoder.decode38791910.1381910.3
TextDecoder.encoding38791910.1381910.3
TextDecoder.fatal38793610.1383610.3
TextDecoder.ignoreBOM38796310.1386310.3
TextDecoder.worker_support38792010.1382010.3
TextDecoderStream717910514.17110514.5
TextDecoderStream.TextDecoderStream717910514.17110514.5
TextDecoderStream.encoding717910514.17110514.5
TextDecoderStream.fatal717910514.17110514.5
TextDecoderStream.ignoreBOM717910514.17110514.5
TextDecoderStream.readable717910514.17110514.5
TextDecoderStream.writable717910514.17110514.5
TextEncoder38791810.1381810.3
TextEncoder.TextEncoder38791810.1381810.3
TextEncoder.encode38791810.1381810.3
TextEncoder.encodeInto74796614.1746614.5
TextEncoder.encoding38791810.1381810.3
TextEncoder.worker_support38792010.1382010.3
Show 5 more
Sub-featureChromeEdgeFirefoxSafariChrome AndroidFirefox AndroidSafari iOS
TextEncoderStream717910514.17110514.5
TextEncoderStream.TextEncoderStream717910514.17110514.5
TextEncoderStream.encoding717910514.17110514.5
TextEncoderStream.readable717910514.17110514.5
TextEncoderStream.writable717910514.17110514.5