![WebTorrent](https://webtorrent.io/img/wordmark.png) # Streaming torrent client for the web [![Gitter][webtorrent-gitter-image]][webtorrent-gitter-url] [![Travis Build][webtorrent-ti]][webtorrent-tu] [![AppVeyor Build][webtorrent-appveyor-image]][webtorrent-appveyor-url] [![NPM Version][webtorrent-ni]][webtorrent-nu] [![NPM Downloads][webtorrent-downloads-image]][webtorrent-downloads-url] [![js-standard-style](https://cdn.rawgit.com/feross/standard/master/badge.svg)](http://standardjs.com)       [![Sauce Test Status][webtorrent-sauce-image]][webtorrent-sauce-url] **WebTorrent** is a streaming torrent client for **node.js** and the **browser**. YEP, THAT'S RIGHT. THE BROWSER. It's written completely in JavaScript – the language of the web – so the same code works in both runtimes. In node.js, this module is a simple torrent client, using TCP and UDP to talk to other torrent clients. In the browser, WebTorrent uses **WebRTC** (data channels) for peer-to-peer transport. It can be used **without** browser plugins, extensions, or installations. It's Just JavaScript™. Note: WebTorrent does **not** support UDP/TCP peers in browser. Simply include the [`webtorrent.min.js`](https://cdn.jsdelivr.net/webtorrent/latest/webtorrent.min.js) script on your page to start fetching files over WebRTC using the BitTorrent protocol, or `require('webtorrent')` with [browserify](http://browserify.org/). See [demo apps ](#webtorrent-in-production) and [code examples](#usage) below. To make BitTorrent work over WebRTC (which is the only P2P transport that works on the web) we made some protocol changes. Therefore, a browser-based WebTorrent client or **"web peer"** can only connect to other clients that support WebTorrent/WebRTC. To seed files to web peers, use a client that supports WebTorrent, e.g. [webtorrent-hybrid](https://github.com/feross/webtorrent-hybrid) or [instant.io](https://instant.io/). We're also working on [WebTorrent.app](https://github.com/feross/webtorrent-app), a desktop client with a familiar UI that can connect to web peers. We hope established torrent clients (Transmission, Vuze, uTorrent, etc.) will add support for WebTorrent so they too can connect to both normal *and* web peers. ![Network](https://webtorrent.io/img/network.png) > Warning: This is alpha software. **Watch/star to follow along with progress.** ### Features - **Torrent client for node.js & the browser** (same npm module!) - **Insanely fast** - Download **multiple torrents** simultaneously, efficiently - **Pure Javascript** (no native dependencies) - Exposes files as **streams** - Fetches pieces from the network on-demand so seeking is supported (even before torrent is finished) - Seamlessly switches between sequential and rarest-first piece selection strategy - Supports advanced torrent client features - **magnet uri** support via **[ut_metadata](https://github.com/feross/ut_metadata)** - **peer discovery** via **[dht](https://github.com/feross/bittorrent-dht)**, **[tracker](https://github.com/feross/bittorrent-tracker)**, and **[ut_pex](https://github.com/fisch0920/ut_pex)** - **[protocol extension api](https://github.com/feross/bittorrent-protocol#extension-api)** for adding new extensions - **Comprehensive test suite** (runs completely offline, so it's reliable and fast) #### Browser-only features - **WebRTC data channels** for lightweight peer-to-peer communication with **no plugins** - **No silos.** WebTorrent is a P2P network for the **entire web.** WebTorrent clients running on one domain can connect to clients on any other domain. - Stream video torrents into a `