node package manager


Streaming torrent client

WebTorrent (with WebRTC support in Node.js)

Build Status NPM Version NPM Downloads

Streaming torrent client for node environments

In node.js, the webtorrent package only connects to normal TCP/UDP peers, not WebRTC peers. If you want to connect to all types of peers, including WebRTC peers, from node.js, you need to use this package (webtorrent-hybrid).

Previous versions (0.x) of this package used wrtc, a WebRTC implementation via native extensions, the current one is based on electron-webrtc (which in turn uses electron-prebuilt) for better compatibility. It creates a hidden Electron process (which is based on Chromium, so WebRTC support is great!) and communicates with that process to enable WebRTC in Node.js. This adds a lot of overhead, so we are looking forward to using a pure JavaScript implementation, like perhaps Node-RTCPeerConnection when it's ready.

To run this package on a headless server execute the provided script or follow these instructions.



To install WebTorrent:

npm install webtorrent-hybrid

To install a webtorrent-hybrid command line program, run:

npm install webtorrent-hybrid -g


On OS X, this should Just Work™.


The current version of webtorrent-hybrid requires a screen, since the headless Electron instance expects one. If you're running in a screenless environment (like on a server), you must use a virtual screen such as xvfb. You must install it before using webtorrent-hybrid.

For Debian / Ubuntu:

sudo apt-get install xvfb

If you get an error about a missing .so file ("error while loading shared libraries"), use the search at the bottom of to find out which packages in your release provide a given file.

On server editions, the following additional packages should be installed since Electron depends on them:

sudo apt-get install libgtk2.0-0 libxtst-dev libxss-dev libgconf2-dev libnss3 libasound2-dev

For CentOS / RHEL:

sudo yum install xorg-x11-server-Xvfb


webtorrent-hybrid has the same command line interface (CLI) and module API as webtorrent. Just require('webtorrent-hybrid') instead of require('webtorrent').

See the WebTorrent docs.


MIT. Copyright (c) WebTorrent, LLC.