DataView
Baseline Widely available
This feature is well established and works across many devices and browser versions. It's been available across browsers since July 2015.
The DataView view provides a low-level interface for reading and writing multiple number types in a binary ArrayBuffer, without having to care about the platform's endianness.
Description
Endianness
Multi-byte number formats are represented in memory differently depending on machine architecture — see Endianness for an explanation. DataView accessors provide explicit control of how data is accessed, regardless of the executing computer's endianness. For example, WebAssembly memory is always little-endian, so you should use DataView instead of typed arrays to read and write multi-byte values. See WebAssembly.Memory for an example.
const littleEndian = (() => {
const buffer = new ArrayBuffer(2);
new DataView(buffer).setInt16(0, 256, true /* littleEndian */);
// Int16Array uses the platform's endianness.
return new Int16Array(buffer)[0] === 256;
})();
console.log(littleEndian); // true or false
Note: DataView defaults to big-endian read and write, but most platforms use little-endian.
Constructor
-
DataView() - Creates a new
DataViewobject.
Instance properties
These properties are defined on DataView.prototype and shared by all DataView instances.
-
DataView.prototype.buffer - Returns the
ArrayBufferreferenced by theDataView. -
DataView.prototype.byteLength - Returns the length (in bytes) of the
DataView. -
DataView.prototype.byteOffset - Returns the offset (in bytes) of the
DataViewfrom the start of itsArrayBuffer. -
DataView.prototype.constructor - The constructor function that created the instance object. For
DataViewinstances, the initial value is theDataViewconstructor. -
DataView.prototype[Symbol.toStringTag] - The initial value of the
[Symbol.toStringTag]property is the string"DataView". This property is used inObject.prototype.toString().
Instance methods
-
DataView.prototype.getBigInt64() - Reads 8 bytes starting at the specified byte offset of this
DataViewand interprets them as a 64-bit signed integer. -
DataView.prototype.getBigUint64() - Reads 8 bytes starting at the specified byte offset of this
DataViewand interprets them as a 64-bit unsigned integer. -
DataView.prototype.getFloat16() - Reads 2 bytes starting at the specified byte offset of this
DataViewand interprets them as a 16-bit floating point number. -
DataView.prototype.getFloat32() - Reads 4 bytes starting at the specified byte offset of this
DataViewand interprets them as a 32-bit floating point number. -
DataView.prototype.getFloat64() - Reads 8 bytes starting at the specified byte offset of this
DataViewand interprets them as a 64-bit floating point number. -
DataView.prototype.getInt16() - Reads 2 bytes starting at the specified byte offset of this
DataViewand interprets them as a 16-bit signed integer. -
DataView.prototype.getInt32() - Reads 4 bytes starting at the specified byte offset of this
DataViewand interprets them as a 32-bit signed integer. -
DataView.prototype.getInt8() - Reads 1 byte at the specified byte offset of this
DataViewand interprets it as an 8-bit signed integer. -
DataView.prototype.getUint16() - Reads 2 bytes starting at the specified byte offset of this
DataViewand interprets them as a 16-bit unsigned integer. -
DataView.prototype.getUint32() - Reads 4 bytes starting at the specified byte offset of this
DataViewand interprets them as a 32-bit unsigned integer. -
DataView.prototype.getUint8() - Reads 1 byte at the specified byte offset of this
DataViewand interprets it as an 8-bit unsigned integer. -
DataView.prototype.setBigInt64() - Takes a BigInt and stores it as a 64-bit signed integer in the 8 bytes starting at the specified byte offset of this
DataView. -
DataView.prototype.setBigUint64() - Takes a BigInt and stores it as a 64-bit unsigned integer in the 8 bytes starting at the specified byte offset of this
DataView. -
DataView.prototype.setFloat16() - Takes a number and stores it as a 16-bit float in the 2 bytes starting at the specified byte offset of this
DataView. -
DataView.prototype.setFloat32() - Takes a number and stores it as a 32-bit float in the 4 bytes starting at the specified byte offset of this
DataView. -
DataView.prototype.setFloat64() - Takes a number and stores it as a 64-bit float in the 8 bytes starting at the specified byte offset of this
DataView. -
DataView.prototype.setInt16() - Takes a number and stores it as a 16-bit signed integer in the 2 bytes at the specified byte offset of this
DataView. -
DataView.prototype.setInt32() - Takes a number and stores it as a 32-bit signed integer in the 4 bytes at the specified byte offset of this
DataView. -
DataView.prototype.setInt8() - Takes a number and stores it as an 8-bit signed integer in the byte at the specified byte offset of this
DataView. -
DataView.prototype.setUint16() - Takes a number and stores it as a 16-bit unsigned integer in the 2 bytes at the specified byte offset of this
DataView. -
DataView.prototype.setUint32() - Takes a number and stores it as a 32-bit unsigned integer in the 4 bytes at the specified byte offset of this
DataView. -
DataView.prototype.setUint8() - Takes a number and stores it as an 8-bit unsigned integer in the byte at the specified byte offset of this
DataView.
Examples
Using DataView
const buffer = new ArrayBuffer(16); const view = new DataView(buffer, 0); view.setInt16(1, 42); view.getInt16(1); // 42
Specifications
Browser compatibility
| Desktop | Mobile | Server | |||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Opera | Safari | Chrome Android | Firefox for Android | Opera Android | Safari on iOS | Samsung Internet | WebView Android | WebView on iOS | Bun | Deno | Node.js | |
DataView |
9 |
12 |
15 |
12.1 |
5.1 |
18 |
15 |
12.1 |
5 |
1.0 |
4 |
5 |
1.0.0 |
1.0 |
0.10.0 |
DataView |
9 |
12 |
15 |
12.1 |
5.1 |
18 |
15 |
12.1 |
5 |
1.0 |
4 |
5 |
1.0.0 |
1.0 |
0.10.0 |
buffer |
9 |
12 |
15 |
12.1 |
5.1 |
18 |
15 |
12.1 |
5 |
1.0 |
4 |
5 |
1.0.0 |
1.0 |
0.10.0 |
byteLength |
9 |
12 |
15 |
12.1 |
5.1 |
18 |
15 |
12.1 |
5 |
1.0 |
4 |
5 |
1.0.0 |
1.0 |
0.10.0 |
byteOffset |
9 |
12 |
15 |
12.1 |
5.1 |
18 |
15 |
12.1 |
5 |
1.0 |
4 |
5 |
1.0.0 |
1.0 |
0.10.0 |
getBigInt64 |
67 |
79 |
68 |
54 |
15 |
67 |
68 |
48 |
15 |
9.0 |
67 |
15 |
1.0.0 |
1.0 |
10.4.0 |
getBigUint64 |
67 |
79 |
68 |
54 |
15 |
67 |
68 |
48 |
15 |
9.0 |
67 |
15 |
1.0.0 |
1.0 |
10.4.0 |
getFloat16 |
135 |
135 |
129 |
120 |
18.2 |
135 |
129 |
89 |
18.2 |
29.0 |
135 |
18.2 |
1.1.23 |
1.43 |
24.0.0 |
getFloat32 |
9 |
12 |
15 |
12.1 |
5.1 |
18 |
15 |
12.1 |
5 |
1.0 |
4 |
5 |
1.0.0 |
1.0 |
0.10.0 |
getFloat64 |
9 |
12 |
15 |
12.1 |
5.1 |
18 |
15 |
12.1 |
5 |
1.0 |
4 |
5 |
1.0.0 |
1.0 |
0.10.0 |
getInt16 |
9 |
12 |
15 |
12.1 |
5.1 |
18 |
15 |
12.1 |
5 |
1.0 |
4 |
5 |
1.0.0 |
1.0 |
0.10.0 |
getInt32 |
9 |
12 |
15 |
12.1 |
5.1 |
18 |
15 |
12.1 |
5 |
1.0 |
4 |
5 |
1.0.0 |
1.0 |
0.10.0 |
getInt8 |
9 |
12 |
15 |
12.1 |
5.1 |
18 |
15 |
12.1 |
5 |
1.0 |
4 |
5 |
1.0.0 |
1.0 |
0.10.0 |
getUint16 |
9 |
12 |
15 |
12.1 |
5.1 |
18 |
15 |
12.1 |
5 |
1.0 |
4 |
5 |
1.0.0 |
1.0 |
0.10.0 |
getUint32 |
9 |
12 |
15 |
12.1 |
5.1 |
18 |
15 |
12.1 |
5 |
1.0 |
4 |
5 |
1.0.0 |
1.0 |
0.10.0 |
getUint8 |
9 |
12 |
15 |
12.1 |
5.1 |
18 |
15 |
12.1 |
5 |
1.0 |
4 |
5 |
1.0.0 |
1.0 |
0.10.0 |
setBigInt64 |
67 |
79 |
68 |
54 |
15 |
67 |
68 |
48 |
15 |
9.0 |
67 |
15 |
1.0.0 |
1.0 |
10.4.0 |
setBigUint64 |
67 |
79 |
68 |
54 |
15 |
67 |
68 |
48 |
15 |
9.0 |
67 |
15 |
1.0.0 |
1.0 |
10.4.0 |
setFloat16 |
135 |
135 |
129 |
120 |
18.2 |
135 |
129 |
89 |
18.2 |
29.0 |
135 |
18.2 |
1.1.23 |
1.43 |
24.0.0 |
setFloat32 |
9 |
12 |
15 |
12.1 |
5.1 |
18 |
15 |
12.1 |
5 |
1.0 |
4 |
5 |
1.0.0 |
1.0 |
0.10.0 |
setFloat64 |
9 |
12 |
15 |
12.1 |
5.1 |
18 |
15 |
12.1 |
5 |
1.0 |
4 |
5 |
1.0.0 |
1.0 |
0.10.0 |
setInt16 |
9 |
12 |
15 |
12.1 |
5.1 |
18 |
15 |
12.1 |
5 |
1.0 |
4 |
5 |
1.0.0 |
1.0 |
0.10.0 |
setInt32 |
9 |
12 |
15 |
12.1 |
5.1 |
18 |
15 |
12.1 |
5 |
1.0 |
4 |
5 |
1.0.0 |
1.0 |
0.10.0 |
setInt8 |
9 |
12 |
15 |
12.1 |
5.1 |
18 |
15 |
12.1 |
5 |
1.0 |
4 |
5 |
1.0.0 |
1.0 |
0.10.0 |
setUint16 |
9 |
12 |
15 |
12.1 |
5.1 |
18 |
15 |
12.1 |
5 |
1.0 |
4 |
5 |
1.0.0 |
1.0 |
0.10.0 |
setUint32 |
9 |
12 |
15 |
12.1 |
5.1 |
18 |
15 |
12.1 |
5 |
1.0 |
4 |
5 |
1.0.0 |
1.0 |
0.10.0 |
setUint8 |
9 |
12 |
15 |
12.1 |
5.1 |
18 |
15 |
12.1 |
5 |
1.0 |
4 |
5 |
1.0.0 |
1.0 |
0.10.0 |
See also
© 2005–2025 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/DataView