Get the Length of a Buffer in Node.js

Aug 19, 2020

Node.js buffers are objects that store arbitrary binary data. Buffers have a length property that contains the number of bytes in the buffer.

const buf = Buffer.from('Hello, World', 'utf8');

buf.length; // 12, same as 'Hello, World'.length

For buffers containing UTF8 encoded strings, the buffer's length is equivalent to the length of the string. For example, if you read a text file from the file system using fs, the resulting buffer's length is the same as the number of characters in the text file.

const fs = require('fs');
fs.writeFileSync('./test.txt', 'Hello, World');

const buf = fs.readFileSync('./test.txt');

Buffer.isBuffer(buf); // true
buf.length; // 12, same as 'Hello, World'.length

Allocated vs Actual

Note that Buffer#length contains the number of allocated bytes for the buffer, not how many bytes are actually used. Often these two are equivalent, but they may be different.

For example, if you allocate a 100-byte buffer using Buffer.alloc(), the buffer's length will always be 100, regardless of the buffer's contents.

const buf = Buffer.alloc(100);

buf.length; // 100, even though the buffer contains 100 `0` bytes

// Write 'Hello, World' to the buffer starting at offset 0
buf.write('Hello, World', 0);

buf.length; // still 100, because there's 100 bytes allocated.

More Node Tutorials