Sign inDemoInstall


Package Overview
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies



Node.js Streams, a user-land copy of the stream library from Node.js

Version published
Install size
718 kB

Package description

What is readable-stream?

The readable-stream package is a userland stream module, compatible with the built-in stream module provided by Node.js. It offers the same interface and functionality as the native module, but with additional updates and bug fixes. It is particularly useful for ensuring consistent stream behavior across different Node.js versions.

What are readable-stream's main functionalities?

Creating a readable stream

This feature allows you to create a readable stream that you can pipe to other streams or consume manually. The 'read' method is called when the stream wants to pull more data.

const { Readable } = require('readable-stream');
const myReadableStream = new Readable({
  read(size) {
    this.push('some data');
    this.push(null); // No more data
myReadableStream.on('data', (chunk) => {

Creating a writable stream

This feature allows you to create a writable stream where you can write data. The 'write' method is called when the stream receives data to write.

const { Writable } = require('readable-stream');
const myWritableStream = new Writable({
  write(chunk, encoding, callback) {

Creating a transform stream

This feature allows you to create a transform stream that can modify data as it is read from a readable stream before it is written to a writable stream.

const { Transform } = require('readable-stream');
const myTransformStream = new Transform({
  transform(chunk, encoding, callback) {

Creating a duplex stream

This feature allows you to create a duplex stream that is both readable and writable. It can be used to read data from one source and write to another.

const { Duplex } = require('readable-stream');
const myDuplexStream = new Duplex({
  read(size) {
    this.push('data from read method');
  write(chunk, encoding, callback) {
myDuplexStream.on('data', (chunk) => {
myDuplexStream.write('data for write method');

Other packages similar to readable-stream




Node.js core streams for userland

npm status node Node.js Build Browsers Build

npm install readable-stream

This package is a mirror of the streams implementations in Node.js 18.19.0.

Full documentation may be found on the Node.js website.

If you want to guarantee a stable streams base, regardless of what version of Node you, or the users of your libraries are using, use readable-stream only and avoid the "stream" module in Node-core, for background see this blogpost.

As of version 2.0.0 readable-stream uses semantic versioning.

Version 4.x.x

v4.x.x of readable-stream is a cut from Node 18. This version supports Node 12, 14, 16 and 18, as well as evergreen browsers. The breaking changes introduced by v4 are composed of the combined breaking changes in:

This also includes many new features.

Version 3.x.x

v3.x.x of readable-stream is a cut from Node 10. This version supports Node 6, 8, and 10, as well as evergreen browsers, IE 11 and latest Safari. The breaking changes introduced by v3 are composed by the combined breaking changes in Node v9 and Node v10, as follows:

  1. Error codes:,,,,,
  2. 'readable' have precedence over flowing
  3. make virtual methods errors consistent
  4. updated streams error handling
  5. writable.end should return this.
  6. readable continues to read when push('')
  7. add custom inspect to BufferList
  8. always defer 'readable' with nextTick

Version 2.x.x

v2.x.x of readable-stream is a cut of the stream module from Node 8 (there have been no semver-major changes from Node 4 to 8). This version supports all Node.js versions from 0.8, as well as evergreen browsers and IE 10 & 11.


You can swap your require('stream') with require('readable-stream') without any changes, if you are just using one of the main classes and functions.

const {
} = require('readable-stream')

Note that require('stream') will return Stream, while require('readable-stream') will return Readable. We discourage using whatever is exported directly, but rather use one of the properties as shown in the example above.

Usage In Browsers

You will need a bundler like browserify, webpack, parcel or similar. Polyfills are no longer required since version 4.2.0.

Streams Working Group

readable-stream is maintained by the Streams Working Group, which oversees the development and maintenance of the Streams API within Node.js. The responsibilities of the Streams Working Group include:

  • Addressing stream issues on the Node.js issue tracker.
  • Authoring and editing stream documentation within the Node.js project.
  • Reviewing changes to stream subclasses within the Node.js project.
  • Redirecting changes to streams from the Node.js project to this project.
  • Assisting in the implementation of stream providers within Node.js.
  • Recommending versions of readable-stream to be included in Node.js.
  • Messaging about the future of streams to give the community advance notice of changes.

Team Members



Last updated on 27 Dec 2023

Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.


Related posts

SocketSocket SOC 2 Logo


  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Stay in touch

Get open source security insights delivered straight into your inbox.

  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc