coderef

Readable byte streamsBaseline · Newly available

A ReadableStream constructed with { type: "bytes" } reads bytes from a stream without making extra copies, improving efficiency for streams of large chunks. Also known as BYOB or bring your own buffer.

Works in the latest version of every major browser, but older devices may not support it yet. Baseline since Mar 24, 2026.

Browser support

DesktopChrome
1–88Not supported
89+Supportedsince Mar 2, 2021
Current: 155
Edge
12–88Not supported
89+Supportedsince Mar 4, 2021
Current: 154
Firefox
1–101Not supported
102+Supportedsince Jun 28, 2022
Current: 157
Safari
1–26.3Not supported
26.4+Supportedsince Mar 24, 2026
Current: 27
MobileChrome Android
18–88Not supported
89+Supportedsince Mar 2, 2021
Current: 155
Firefox Android
4–101Not supported
102+Supportedsince Jun 28, 2022
Current: 157
Safari iOS
1–26.3Not supported
26.4+Supportedsince Mar 24, 2026
Current: 27

How to use

Every current browser supports this, but it only became Baseline on Mar 24, 2026. Use it as a progressive enhancement, or keep a fallback if you support older devices.

Example

Full syntax and examples are on MDN: ReadableByteStreamController.

Feature detection

JS · check before using
if ("ReadableByteStreamController" in globalThis) {
  // ReadableByteStreamController is available
} else {
  // load a polyfill or use a fallback
}

Sub-features

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

Sub-featureChromeEdgeFirefoxSafariChrome AndroidFirefox AndroidSafari iOS
ReadableByteStreamController898910226.48910226.4
ReadableByteStreamController.byobRequest898910226.48910226.4
ReadableByteStreamController.close898910226.48910226.4
ReadableByteStreamController.desiredSize898910226.48910226.4
ReadableByteStreamController.enqueue898910226.48910226.4
ReadableByteStreamController.error898910226.48910226.4
ReadableStreamBYOBReader898910226.48910226.4
ReadableStreamBYOBReader.ReadableStreamBYOBReader898910226.48910226.4
ReadableStreamBYOBReader.cancel898910226.48910226.4
ReadableStreamBYOBReader.closed898910226.48910226.4
ReadableStreamBYOBReader.read898910226.48910226.4
ReadableStreamBYOBReader.read.options_min_parameter140140134✕140134✕
ReadableStreamBYOBReader.releaseLock898910226.48910226.4
ReadableStreamBYOBReader.releaseLock.reject_pending_read_request105105102✕105102✕
ReadableStreamBYOBRequest898910226.48910226.4
ReadableStreamBYOBRequest.respond898910226.48910226.4
ReadableStreamBYOBRequest.respondWithNewView898910226.48910226.4
ReadableStreamBYOBRequest.view898910226.48910226.4