Count bytes passing through a stream
npm install byte-counter> Count bytes passing through a stream
A transform stream that counts bytes passing through without modifying the data. Useful for tracking data transfer size, monitoring progress, or validating content-length headers.
The main export uses Web Streams. For Node.js streams, use the /node subexport.
``sh`
npm install byte-counter
`js
import ByteCounterStream from 'byte-counter';
const counter = new ByteCounterStream();
const response = await fetch('https://example.com/large-file.zip');
await response.body
.pipeThrough(counter)
.pipeTo(new WritableStream({
write(chunk) {
// Process chunk
},
close() {
console.log(Downloaded ${counter.count} bytes);`
}
}));
`js
import ByteCounterStream from 'byte-counter';
const counter = new ByteCounterStream();
const encoder = new TextEncoder();
const writer = counter.writable.getWriter();
await writer.write(encoder.encode('Hello '));
await writer.write(encoder.encode('World'));
await writer.close();
console.log(counter.count);
//=> 11
`
A TransformStream that counts bytes passing through without modifying the data.
#### count
Type: number (read-only)
The number of bytes that have passed through the stream.
Calculate the byte length of some data.
Strings are measured as UTF-8 bytes.
`js
import {byteLength} from 'byte-counter';
byteLength('Hello');
//=> 5
byteLength('Hello 👋');
//=> 10
byteLength(new Uint8Array([1, 2, 3]));
//=> 3
`
#### data
Type: string | Uint8Array | ArrayBuffer | SharedArrayBuffer | ArrayBufferView
The data to measure.
Returns: number - The byte length of the data.
A Node.js Transform stream that counts bytes passing through without modifying the data.
`js
import fs from 'node:fs';
import ByteCounterStream from 'byte-counter/node';
const counter = new ByteCounterStream();
fs.createReadStream('file.txt')
.pipe(counter)
.pipe(fs.createWriteStream('output.txt'))
.on('finish', () => {
console.log(Transferred ${counter.count} bytes);`
});
`js
import ByteCounterStream from 'byte-counter/node';
const counter = new ByteCounterStream();
const encoder = new TextEncoder();
counter.write(encoder.encode('Hello '));
counter.write(encoder.encode('World'));
counter.end();
console.log(counter.count);
//=> 11
`
#### count
Type: number` (read-only)
The number of bytes that have passed through the stream.