Typed Arrays & ArrayBuffer
Also Known As
ArrayBuffer
TypedArray
Uint8Array
Float32Array
DataView
TL;DR
Fixed-type binary arrays (Int32Array, Float64Array, Uint8Array) backed by raw ArrayBuffer memory — essential for WebGL, audio processing, file handling, and Web Workers.
Explanation
ArrayBuffer is raw binary memory. TypedArray views interpret that memory as specific numeric types: Uint8Array (bytes), Int32Array (32-bit signed integers), Float64Array (64-bit floats), etc. DataView allows mixed-type reads at arbitrary offsets. Use cases: WebGL vertex buffers, Web Audio API, FileReader binary output, WebSocket binary frames, and Transferable objects for zero-copy Worker message passing. Unlike regular arrays, Typed Arrays are fixed-length with homogeneous types — much more memory-efficient for large numeric datasets.
Common Misconception
✗ Regular JavaScript arrays are fine for binary data — a regular array stores boxed values with type tags; a Uint8Array stores raw bytes, using ~8x less memory and enabling direct C interop.
Why It Matters
WebGL, Web Audio, and file processing all require binary data — using regular arrays for these is orders of magnitude slower and more memory-intensive than Typed Arrays.
Common Mistakes
- Creating a new ArrayBuffer for each small write in a loop — pre-allocate a large buffer.
- Mixing up endianness when reading multi-byte values — use DataView with explicit endianness.
- Not transferring ArrayBuffers to Workers — transferring moves ownership (zero-copy); cloning copies.
- Forgetting that TypedArray.from() creates a copy, not a view.
Code Examples
✗ Vulnerable
// Regular array for binary protocol — slow and wasteful:
const packet = [0x01, 0x00, 0x00, 0x00, 255, 128, 64];
// Array of boxed numbers — 7 heap objects, ~280 bytes
webSocket.send(packet); // Must convert before sending
✓ Fixed
// Typed array — raw memory, fast, transferable:
const buffer = new ArrayBuffer(7);
const view = new DataView(buffer);
view.setUint32(0, 1, true); // Little-endian uint32 at offset 0
view.setUint8(4, 255);
view.setUint8(5, 128);
view.setUint8(6, 64);
webSocket.send(buffer); // Zero-copy binary send
// Send to Worker without copying:
worker.postMessage({ buffer }, [buffer]); // Transfer — buffer detached here
Tags
🤝 Adopt this term
£79/year · your link shown here
Added
16 Mar 2026
Edited
22 Mar 2026
Views
22
🤖 AI Guestbook educational data only
|
|
Last 30 days
Agents 1
No pings yesterday
Amazonbot 8
Perplexity 4
Unknown AI 3
Google 2
ChatGPT 2
Majestic 1
Ahrefs 1
Also referenced
How they use it
crawler 18
crawler_json 2
pre-tracking 1
Related categories
⚡
DEV INTEL
Tools & Severity
🟢 Low
⚙ Fix effort: Medium
⚡ Quick Fix
Use TypedArrays (Uint8Array, Float32Array) when working with binary data (file contents, WebGL, WebAudio) — they're much faster and memory-efficient than regular arrays for numeric data
📦 Applies To
javascript ES2015
web
cli
🔍 Detection Hints
Regular array for binary data processing; slow file manipulation without TypedArray; WebGL buffer creation without typed arrays
Auto-detectable:
✗ No
eslint
⚠ Related Problems
🤖 AI Agent
Confidence: Low
False Positives: High
✗ Manual fix
Fix: Medium
Context: Function