{"_id":"@banou/webtorrent","name":"@banou/webtorrent","dist-tags":{"latest":"2.5.19"},"versions":{"2.5.19":{"name":"@banou/webtorrent","description":"Streaming torrent client","version":"2.5.19","author":{"name":"WebTorrent LLC","email":"feross@webtorrent.io","url":"https://webtorrent.io"},"type":"module","browser":{"./lib/utp.cjs":false,"@silentbot1/nat-api":false,"bittorrent-dht":false,"crypto":false,"fs":false,"fs-chunk-store":"fsa-chunk-store","http":"stream-http","https":"https-browserify","load-ip-set":false,"net":"@webvpn/net","dgram":"@webvpn/dgram","os":false,"ut_pex":false},"bugs":{"url":"https://github.com/webtorrent/webtorrent/issues"},"chromeapp":{"./lib/utp.cjs":false,"@silentbot1/nat-api":false,"fs":false,"fs-chunk-store":"memory-chunk-store","http":"@webtorrent/http-node","https":"@webtorrent/http-node","load-ip-set":false,"net":"chrome-net","os":false},"dependencies":{"@silentbot1/nat-api":"^0.4.7","@thaunknown/simple-peer":"^10.0.11","@webtorrent/http-node":"^1.3.0","@webvpn/dgram":"^0.2.0","@webvpn/net":"^0.2.0","addr-to-ip-port":"^2.0.0","bitfield":"^4.2.0","bittorrent-dht":"^11.0.9","bittorrent-protocol":"^4.1.16","bittorrent-tracker":"github:banou26/bittorrent-tracker","cache-chunk-store":"^3.2.2","chunk-store-iterator":"^1.0.3","cpus":"^1.0.3","create-torrent":"^6.1.0","cross-fetch-ponyfill":"^1.0.3","debug":"^4.4.0","escape-html":"^1.0.3","events":"^3.3.0","fs-chunk-store":"^4.1.0","fsa-chunk-store":"^1.3.0","https-browserify":"^1.0.0","immediate-chunk-store":"^2.2.0","join-async-iterator":"^1.1.1","load-ip-set":"^3.0.1","lt_donthave":"^2.0.4","memory-chunk-store":"^1.3.5","mime":"^3.0.0","once":"^1.4.0","parse-torrent":"^11.0.18","pump":"^3.0.2","queue-microtask":"^1.2.3","random-iterate":"^1.0.1","range-parser":"^1.2.1","run-parallel":"^1.2.0","run-parallel-limit":"^1.1.0","speed-limiter":"^1.0.2","stream-http":"^3.2.0","streamx":"2.22.0","throughput":"^1.0.1","torrent-discovery":"github:banou26/torrent-discovery","torrent-piece":"^3.0.1","uint8-util":"^2.2.5","unordered-array-remove":"^1.0.2","ut_metadata":"^4.0.3","ut_pex":"^4.0.4"},"devDependencies":{"@babel/core":"7.26.9","@babel/eslint-parser":"^7.26.8","@babel/plugin-syntax-import-assertions":"7.26.0","@babel/preset-env":"7.26.9","@webtorrent/semantic-release-config":"1.0.10","airtap":"4.0.4","airtap-manual":"1.0.0","airtap-sauce":"1.1.2","airtap-system":"^0.1.0","babelify":"10.0.0","buffer":"^6.0.3","chrome-net":"^3.3.4","crypto-browserify":"^3.12.1","disc":"1.3.3","eslint":"^8.57.1","eslint-config-standard":"^17.1.0","eslint-plugin-import":"^2.31.0","eslint-plugin-n":"^16.6.2","eslint-plugin-promise":"^6.6.0","finalhandler":"1.3.1","network-address":"1.1.2","node-polyfill-webpack-plugin":"^4.1.0","pako":"^2.1.0","path-esm":"^1.0.0","querystring":"^0.2.1","run-series":"1.1.9","semantic-release":"22.0.12","serve-static":"1.16.2","stream-browserify":"^3.0.0","tap-parser":"^16.0.1","tap-spec":"^5.0.0","tape":"^5.9.0","terser-webpack-plugin":"^5.3.11","timers-browserify":"^2.0.12","webpack":"^5.98.0","webpack-cli":"^6.0.1","webtorrent-fixtures":"1.7.5"},"optionalDependencies":{"utp-native":"^2.5.3"},"engines":{"node":">=16"},"funding":[{"type":"github","url":"https://github.com/sponsors/feross"},{"type":"patreon","url":"https://www.patreon.com/feross"},{"type":"consulting","url":"https://feross.org/support"}],"homepage":"https://webtorrent.io","keywords":["bittorrent","bittorrent client","download","mad science","p2p","peer-to-peer","peers","streaming","swarm","torrent","web torrent","webrtc","webrtc data","webtorrent"],"license":"MIT","main":"index.js","repository":{"type":"git","url":"git://github.com/webtorrent/webtorrent.git"},"scripts":{"build":"npm run build-js && npm run build-js-worker && npm run build-chromeapp","build-chromeapp":"webpack --config ./scripts/chromeapp.webpack.js","build-js":"webpack --config ./scripts/browser.webpack.js","build-js-worker":"webpack --config ./scripts/worker.webpack.js","preversion":"npm run build && npm run update-authors","size":"npm run size-js && npm run size-disc","size-disc":"npm run build-js && cat ./dist/webtorrent.min.js | discify --open","size-js":"npm run build-js && cat ./dist/webtorrent.min.js | gzip | wc -c","test":"eslint . && npm run test-node && npm run test-browser","test-browser":"airtap --concurrency 1 --all -- test/*.js test/browser/*.js | tap-spec","test-browser-local":"airtap --preset local -- test/*.js test/browser/*.js | tap-spec","test-node":"tape test/*.js test/node/*.js | tap-spec"},"renovate":{"extends":["github>webtorrent/renovate-config"],"rangeStrategy":"bump"},"release":{"extends":"@webtorrent/semantic-release-config"},"_id":"@banou/webtorrent@2.5.19","gitHead":"4b5645931c336fd2cd66a023019f43d35b655c8d","_nodeVersion":"21.7.3","_npmVersion":"10.5.0","dist":{"integrity":"sha512-rQtPJwKb4lVA4s1iUqhyaUbXaUzhFsZhctxN3IYJGlo1HEO7lKgqrkfUVlJMCZr5MMOhURw3yN52OWm8J4OEtg==","shasum":"a10e9eda8282ddac3c39004bf63f59468e4fcc85","tarball":"https://registry.npmjs.org/@banou/webtorrent/-/webtorrent-2.5.19.tgz","fileCount":28,"unpackedSize":8337020,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQDNf2xTLLSNH8nVayRfuaV3NN/lvvXkXPNzQvVejRhp8wIgWP+b/YOEz0Zqle8A9qJ+dLsmLZHZobs3nHIPdaZ1nFk="}]},"_npmUser":{"name":"banou26","email":"me@banou.dev"},"directories":{},"maintainers":[{"name":"banou26","email":"me@banou.dev"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/webtorrent_2.5.19_1742173967155_0.5041287680521709"},"_hasShrinkwrap":false}},"time":{"created":"2025-03-17T01:12:47.064Z","2.5.19":"2025-03-17T01:12:47.399Z","modified":"2025-03-17T01:12:47.668Z"},"maintainers":[{"name":"banou26","email":"me@banou.dev"}],"description":"Streaming torrent client","homepage":"https://webtorrent.io","keywords":["bittorrent","bittorrent client","download","mad science","p2p","peer-to-peer","peers","streaming","swarm","torrent","web torrent","webrtc","webrtc data","webtorrent"],"repository":{"type":"git","url":"git://github.com/webtorrent/webtorrent.git"},"author":{"name":"WebTorrent LLC","email":"feross@webtorrent.io","url":"https://webtorrent.io"},"bugs":{"url":"https://github.com/webtorrent/webtorrent/issues"},"license":"MIT","readme":"<h1 align=\"center\">\r\n  <br>\r\n  <a href=\"https://webtorrent.io\"><img src=\"https://webtorrent.io/img/WebTorrent.png\" alt=\"WebTorrent\" width=\"200\"></a>\r\n  <br>\r\n  WebTorrent\r\n  <br>\r\n  <br>\r\n</h1>\r\n\r\n<h4 align=\"center\">The streaming torrent client. For node.js and the web.</h4>\r\n\r\n<p align=\"center\">\r\n  <a href=\"https://discord.gg/cnXkm4Z\"><img src=\"https://img.shields.io/discord/612575111718895616\" alt=\"discord\"></a>\r\n  <a href=\"https://github.com/webtorrent/webtorrent/actions\"><img src=\"https://img.shields.io/github/actions/workflow/status/webtorrent/webtorrent/ci.yml?branch=master\" alt=\"ci\"></a>\r\n  <a href=\"https://www.npmjs.com/package/webtorrent\"><img src=\"https://img.shields.io/npm/v/webtorrent.svg\" alt=\"npm version\"></a>\r\n  <a href=\"https://www.npmjs.com/package/webtorrent\"><img src=\"https://img.shields.io/npm/dm/webtorrent.svg\" alt=\"npm downloads\"></a>\r\n  <a href=\"https://standardjs.com\"><img src=\"https://img.shields.io/badge/code_style-standard-brightgreen.svg\" alt=\"Standard - JavaScript Style Guide\"></a>\r\n</p>\r\n\r\n<h5 align=\"center\">\r\n  Sponsored by&nbsp;&nbsp;&nbsp;&nbsp;<a href=\"https://socket.dev\"><img src=\"https://webtorrent.io/img/supporters/socket.png\" alt=\"Socket - JavaScript open source supply chain security\" height=35 valign=\"middle\"></a>&nbsp;&nbsp;&nbsp;&nbsp;<a href=\"https://www.wormhole.app/?utm_medium=sponsorship&utm_source=webtorrent&utm_campaign=feross\"><img src=\"https://webtorrent.io/img/supporters/wormhole.png\" alt=\"Wormhole\" height=30 valign=\"middle\"></a>\r\n</h5>\r\n<br>\r\n\r\n**WebTorrent** is a streaming torrent client for **node.js** and the **browser**. YEP,\r\nTHAT'S RIGHT. THE BROWSER. It's written completely in JavaScript – the language of the web\r\n– so the same code works in both runtimes.\r\n\r\nIn node.js, this module is a simple torrent client, using TCP and UDP to talk to\r\nother torrent clients.\r\n\r\nIn the browser, WebTorrent uses **WebRTC** (data channels) for peer-to-peer transport.\r\nIt can be used **without** browser plugins, extensions, or installations. It's Just\r\nJavaScript&trade;. Note: WebTorrent does **not** support UDP/TCP peers in browser.\r\n\r\nSimply include the\r\n[`webtorrent.min.js`](https://cdn.jsdelivr.net/npm/webtorrent@latest/webtorrent.min.js) script\r\non your page to start fetching files over WebRTC using the BitTorrent protocol, or\r\n`import WebTorrent from 'webtorrent'` with [browserify](http://browserify.org/) or [webpack](https://webpack.js.org/). See [demo apps\r\n](#who-is-using-webtorrent-today) and [code examples](#usage) below.\r\n\r\n[![jsdelivr download count](https://data.jsdelivr.com/v1/package/npm/webtorrent/badge)](https://cdn.jsdelivr.net/npm/webtorrent@latest/webtorrent.min.js)\r\n\r\nTo make BitTorrent work over WebRTC (which is the only P2P transport that works on the\r\nweb) we made some protocol changes. Therefore, a browser-based WebTorrent client or **\"web\r\npeer\"** can only connect to other clients that support WebTorrent/WebRTC.\r\n\r\nTo seed files to web peers, use a client that supports WebTorrent, e.g.\r\n[WebTorrent Desktop][webtorrent-desktop], a desktop client with a\r\nfamiliar UI that can connect to web peers,\r\n[webtorrent-hybrid](https://github.com/webtorrent/webtorrent-hybrid), a command line program,\r\nor [Instant.io](https://instant.io/), a website. Established torrent clients like\r\n**Vuze** have [already added WebTorrent support](https://wiki.vuze.com/w/WebTorrent) so\r\nthey can connect to both normal *and* web peers. We hope other clients will follow.\r\n\r\n![Network](https://webtorrent.io/img/network.png)\r\n\r\n### Features\r\n\r\n- **Torrent client for node.js & the browser** (same npm package!)\r\n- **Insanely fast**\r\n- Download **multiple torrents** simultaneously, efficiently\r\n- **Pure Javascript** (no native dependencies)\r\n- Exposes files as **streams**\r\n  - Fetches pieces from the network on-demand so seeking is supported (even before torrent is finished)\r\n  - Seamlessly switches between sequential and rarest-first piece selection strategy\r\n- Supports advanced torrent client features\r\n  - **magnet uri** support via **[ut_metadata](https://github.com/webtorrent/ut_metadata)**\r\n  - **peer discovery** via **[dht](https://github.com/webtorrent/bittorrent-dht)**,\r\n    **[tracker](https://github.com/webtorrent/bittorrent-tracker)**,\r\n    **[lsd](https://github.com/webtorrent/bittorrent-lsd)**, and\r\n    **[ut_pex](https://github.com/webtorrent/ut_pex)**\r\n  - **[protocol extension api](https://github.com/webtorrent/bittorrent-protocol#extension-api)**\r\n    for adding new extensions\r\n- **Comprehensive test suite** (runs completely offline, so it's reliable and fast)\r\n- Check all the **[supported BEPs here](docs/bep_support.md)**\r\n\r\n#### Browser/WebRTC environment features\r\n\r\n- **WebRTC data channels** for lightweight peer-to-peer communication with **no plugins**\r\n- **No silos.** WebTorrent is a P2P network for the **entire web.** WebTorrent clients\r\n  running on one domain can connect to clients on any other domain.\r\n- Stream video torrents into a `<video>` tag (`webm, mkv, mp4, ogv, mov, etc (AV1, H264, HEVC*, VP8, VP9, AAC, FLAC, MP3, OPUS, Vorbis, etc)`)\r\n- Supports Chrome, Firefox, Opera and Safari.\r\n\r\n<!-- <p align=\"center\">\r\n  <a href=\"https://saucelabs.com/u/webtorrent\">\r\n    <img src=\"https://saucelabs.com/browser-matrix/webtorrent.svg\" alt=\"Sauce Labs\">\r\n  </a>\r\n</p> -->\r\n\r\n### Install\r\n\r\nTo install WebTorrent for use in node or the browser with `import WebTorrent from 'webtorrent'`, run:\r\n\r\n```bash\r\nnpm install webtorrent\r\n```\r\n\r\nTo install a `webtorrent`\r\n[command line program](https://github.com/webtorrent/webtorrent-cli), run:\r\n\r\n```bash\r\nnpm install webtorrent-cli -g\r\n```\r\n\r\nTo install a WebTorrent desktop application for Mac, Windows, or Linux, see\r\n[WebTorrent Desktop][webtorrent-desktop].\r\n\r\n### Ways to help\r\n\r\n- **Join us in [Gitter][webtorrent-gitter-url]** or on freenode at `#webtorrent` to help\r\n  with development or to hang out with some mad science hackers :)\r\n- **[Create a new issue](https://github.com/webtorrent/webtorrent/issues/new)** to report bugs\r\n- **[Fix an issue](https://github.com/webtorrent/webtorrent/issues?state=open)**. WebTorrent\r\n  is an [OPEN Open Source Project](https://github.com/webtorrent/.github/blob/master/CONTRIBUTING.md)!\r\n\r\n### Who is using WebTorrent today?\r\n\r\n**[Lots of folks!](docs/faq.md#who-is-using-webtorrent-today)**\r\n\r\n### WebTorrent API Documentation\r\n\r\n**[Read the full API Documentation](docs/api.md).**\r\n\r\n### Usage\r\n\r\nWebTorrent is the first BitTorrent client that works in the browser, using open web\r\nstandards (no plugins, just HTML5 and WebRTC)! It's easy to get started!\r\n\r\n#### In the browser\r\n\r\n##### Downloading a file is simple:\r\n\r\n```js\r\nimport WebTorrent from 'webtorrent'\r\n\r\nconst client = new WebTorrent()\r\nconst magnetURI = '...'\r\n\r\nclient.add(magnetURI, torrent => {\r\n  // Got torrent metadata!\r\n  console.log('Client is downloading:', torrent.infoHash)\r\n\r\n  for (const file of torrent.files) {\r\n    document.body.append(file.name)\r\n  }\r\n})\r\n```\r\n\r\n##### Seeding a file is simple, too:\r\n\r\n```js\r\nimport dragDrop from 'drag-drop'\r\nimport WebTorrent from 'webtorrent'\r\n\r\nconst client = new WebTorrent()\r\n\r\n// When user drops files on the browser, create a new torrent and start seeding it!\r\ndragDrop('body', files => {\r\n  client.seed(files, torrent => {\r\n    console.log('Client is seeding:', torrent.infoHash)\r\n  })\r\n})\r\n```\r\n\r\nThere are more examples in [docs/get-started.md](docs/get-started.md).\r\n\r\n##### Browserify\r\n\r\nWebTorrent works great with [browserify](http://browserify.org/), an npm package that lets\r\nyou use [node](http://nodejs.org/)-style require() to organize your browser code and load modules installed by [npm](https://www.npmjs.com/) (as seen in the previous examples).\r\n\r\n##### Webpack\r\n\r\nWebTorrent also works with [webpack](https://webpack.js.org/), another module\r\nbundler. However, webpack requires extra configuration which you can find in [the webpack bundle config used by webtorrent](/scripts/browser.webpack.js).\r\n\r\n\r\nOr, you can just use the pre-built version via\r\n`import WebTorrent from 'webtorrent/dist/webtorrent.min.js'` and skip the webpack configuration.\r\n\r\n##### Script tag\r\n\r\nWebTorrent is also available as a standalone script\r\n([`webtorrent.min.js`](webtorrent.min.js)) which exposes `WebTorrent` on the `window`\r\nobject, so it can be used with just a script tag:\r\n\r\n```html\r\n<script type='module'>\r\n  import WebTorrent from 'webtorrent.min.js'\r\n</script>\r\n```\r\n\r\nThe WebTorrent script is also hosted on fast, reliable CDN infrastructure (Cloudflare and\r\nMaxCDN) for easy inclusion on your site:\r\n\r\n```html\r\n<script type='module'>\r\n  import WebTorrent from 'https://esm.sh/webtorrent'\r\n</script>\r\n```\r\n\r\n##### Chrome App\r\n\r\nIf you want to use WebTorrent in a\r\n[Chrome App](https://developer.chrome.com/apps/about_apps), you can include the\r\nfollowing script:\r\n\r\n```html\r\n<script type='module'>\r\n  import WebTorrent from 'webtorrent.chromeapp.js'\r\n</script>\r\n```\r\n\r\nBe sure to enable the `chrome.sockets.udp` and `chrome.sockets.tcp` permissions!\r\n\r\n#### In Node.js\r\n\r\nWebTorrent also works in node.js, using the *same npm package!* It's mad science!\r\n\r\n**NOTE**: To connect to \"web peers\" (browsers) in addition to normal BitTorrent peers, use\r\n[webtorrent-hybrid](https://github.com/webtorrent/webtorrent-hybrid) which includes WebRTC\r\nsupport for node.\r\n\r\n#### As a command line app\r\n\r\nWebTorrent is also available as a\r\n[command line app](https://github.com/webtorrent/webtorrent-cli). Here's how to use it:\r\n\r\n```bash\r\n$ npm install webtorrent-cli -g\r\n$ webtorrent --help\r\n```\r\n\r\nTo download a torrent:\r\n\r\n```bash\r\n$ webtorrent magnet_uri\r\n```\r\n\r\nTo stream a torrent to a device like **AirPlay** or **Chromecast**, just pass a flag:\r\n\r\n```bash\r\n$ webtorrent magnet_uri --airplay\r\n```\r\n\r\nThere are many supported streaming options:\r\n\r\n```bash\r\n--airplay               Apple TV\r\n--chromecast            Chromecast\r\n--mplayer               MPlayer\r\n--mpv                   MPV\r\n--omx [jack]            omx [default: hdmi]\r\n--vlc                   VLC\r\n--xbmc                  XBMC\r\n--stdout                standard out [implies --quiet]\r\n```\r\n\r\nIn addition to magnet uris, WebTorrent supports [many ways](docs/api.md#clientaddtorrentid-opts-function-ontorrent-torrent-) to specify a torrent.\r\n\r\n### Talks about WebTorrent\r\n\r\n- Sep 2017 - Nordic JS - [Get Rich Quick With P2P Crypto Currency](https://www.youtube.com/watch?v=8N_4Furztjo)\r\n- May 2017 - Char.la - [WebTorrent and Peerify](https://youtu.be/D-04vg5hvEQ?t=54m20s) (Spanish)\r\n- Nov 2016 - NodeConf Argentina - [Real world Electron: Building Cross-platform desktop apps with JavaScript](https://www.youtube.com/watch?v=YLExGgEnbFY)\r\n- May 2016 - SIGNAL Conference - [BitTorrent in the Browser](https://www.youtube.com/watch?v=2qrUx-C5Np4)\r\n- May 2015 - Data Terra Nemo - [WebTorrent: Mother of all demos](https://www.youtube.com/watch?v=RRtNEcAaUO8)\r\n- May 2015 - Data Terra Nemo - [WebRTC Everywhere](https://www.youtube.com/watch?v=RRtNEcAaUO8)\r\n- Nov 2014 - JSConf Asia - [How WebTorrent Works](https://www.youtube.com/watch?v=kxHRATfvnlw)\r\n- Sep 2014 - NodeConf EU - [WebRTC Mad Science](https://www.youtube.com/watch?v=BVBXkzVjvPc) (first working WebTorrent demo)\r\n- Apr 2014 - CraftConf - [Bringing BitTorrent to the Web](https://www.youtube.com/watch?v=PT8s_IVWDgw)\r\n- May 2014 - JS.LA - [How I Built a BitTorrent Client in the Browser](https://vimeo.com/97324247) (progress update; node client working)\r\n- Oct 2013 - RealtimeConf - [WebRTC Black Magic](https://vimeo.com/77265280) (first mention of idea for WebTorrent)\r\n\r\n### Modules\r\n\r\nMost of the active development is happening inside of small npm packages which are used by WebTorrent.\r\n\r\n#### The Node Way&trade;\r\n\r\n> \"When applications are done well, they are just the really application-specific, brackish residue that can't be so easily abstracted away. All the nice, reusable components sublimate away onto github and npm where everybody can collaborate to advance the commons.\" — substack from [\"how I write modules\"](https://gist.github.com/substack/5075355)\r\n\r\n![node.js is shiny](https://feross.net/x/node2.gif)\r\n\r\n#### Modules\r\n\r\nThese are the main modules that make up WebTorrent:\r\n\r\n| module | tests | version | description |\r\n|---|---|---|---|\r\n| **[webtorrent][webtorrent]** | [![][webtorrent-ti]][webtorrent-tu] | [![][webtorrent-ni]][webtorrent-nu] | **torrent client (this module)**\r\n| [bittorrent-dht][bittorrent-dht] | [![][bittorrent-dht-ti]][bittorrent-dht-tu] | [![][bittorrent-dht-ni]][bittorrent-dht-nu] | distributed hash table client\r\n| [bittorrent-peerid][bittorrent-peerid] | [![][bittorrent-peerid-ti]][bittorrent-peerid-tu] | [![][bittorrent-peerid-ni]][bittorrent-peerid-nu] | identify client name/version\r\n| [bittorrent-protocol][bittorrent-protocol] | [![][bittorrent-protocol-ti]][bittorrent-protocol-tu] | [![][bittorrent-protocol-ni]][bittorrent-protocol-nu] | bittorrent protocol stream\r\n| [bittorrent-tracker][bittorrent-tracker] | [![][bittorrent-tracker-ti]][bittorrent-tracker-tu] | [![][bittorrent-tracker-ni]][bittorrent-tracker-nu] | bittorrent tracker server/client\r\n| [bittorrent-lsd][bittorrent-lsd] | [![][bittorrent-lsd-ti]][bittorrent-lsd-tu] | [![][bittorrent-lsd-ni]][bittorrent-lsd-nu] | bittorrent local service discovery\r\n| [create-torrent][create-torrent] | [![][create-torrent-ti]][create-torrent-tu] | [![][create-torrent-ni]][create-torrent-nu] | create .torrent files\r\n| [magnet-uri][magnet-uri] | [![][magnet-uri-ti]][magnet-uri-tu] | [![][magnet-uri-ni]][magnet-uri-nu] | parse magnet uris\r\n| [parse-torrent][parse-torrent] | [![][parse-torrent-ti]][parse-torrent-tu] | [![][parse-torrent-ni]][parse-torrent-nu] | parse torrent identifiers\r\n| [torrent-discovery][torrent-discovery] | [![][torrent-discovery-ti]][torrent-discovery-tu] | [![][torrent-discovery-ni]][torrent-discovery-nu] | find peers via dht, tracker, and lsd\r\n| [ut_metadata][ut_metadata] | [![][ut_metadata-ti]][ut_metadata-tu] | [![][ut_metadata-ni]][ut_metadata-nu] | metadata for magnet uris (protocol extension)\r\n| [ut_pex][ut_pex] | [![][ut_pex-ti]][ut_pex-tu] | [![][ut_pex-ni]][ut_pex-nu] | peer discovery (protocol extension)\r\n\r\n[webtorrent]: https://github.com/webtorrent/webtorrent\r\n[webtorrent-gitter-url]: https://gitter.im/webtorrent/webtorrent\r\n\r\n[webtorrent-ti]: https://img.shields.io/github/actions/workflow/status/webtorrent/webtorrent/ci.yml\r\n[webtorrent-tu]: https://github.com/webtorrent/webtorrent/actions\r\n[webtorrent-ni]: https://img.shields.io/npm/v/webtorrent.svg\r\n[webtorrent-nu]: https://www.npmjs.com/package/webtorrent\r\n[webtorrent-desktop]: https://webtorrent.io/desktop\r\n\r\n[bittorrent-dht]: https://github.com/webtorrent/bittorrent-dht\r\n[bittorrent-dht-ti]: https://img.shields.io/github/actions/workflow/status/webtorrent/bittorrent-dht/ci.yml?branch=master\r\n[bittorrent-dht-tu]: https://github.com/webtorrent/bittorrent-dht/actions\r\n[bittorrent-dht-ni]: https://img.shields.io/npm/v/bittorrent-dht.svg\r\n[bittorrent-dht-nu]: https://www.npmjs.com/package/bittorrent-dht\r\n\r\n[bittorrent-peerid]: https://github.com/webtorrent/bittorrent-peerid\r\n[bittorrent-peerid-ti]: https://img.shields.io/github/actions/workflow/status/webtorrent/bittorrent-peerid/ci.yml?branch=master\r\n[bittorrent-peerid-tu]: https://github.com/webtorrent/bittorrent-peerid/actions\r\n[bittorrent-peerid-ni]: https://img.shields.io/npm/v/bittorrent-peerid.svg\r\n[bittorrent-peerid-nu]: https://www.npmjs.com/package/bittorrent-peerid\r\n\r\n[bittorrent-protocol]: https://github.com/webtorrent/bittorrent-protocol\r\n[bittorrent-protocol-ti]: https://img.shields.io/github/actions/workflow/status/webtorrent/bittorrent-protocol/ci.yml?branch=master\r\n[bittorrent-protocol-tu]: https://github.com/webtorrent/bittorrent-protocol/actions\r\n[bittorrent-protocol-ni]: https://img.shields.io/npm/v/bittorrent-protocol.svg\r\n[bittorrent-protocol-nu]: https://www.npmjs.com/package/bittorrent-protocol\r\n\r\n[bittorrent-tracker]: https://github.com/webtorrent/bittorrent-tracker\r\n[bittorrent-tracker-ti]: https://img.shields.io/github/actions/workflow/status/webtorrent/bittorrent-tracker/ci.yml?branch=master\r\n[bittorrent-tracker-tu]: https://github.com/webtorrent/bittorrent-tracker/actions\r\n[bittorrent-tracker-ni]: https://img.shields.io/npm/v/bittorrent-tracker.svg\r\n[bittorrent-tracker-nu]: https://www.npmjs.com/package/bittorrent-tracker\r\n\r\n[bittorrent-lsd]: https://github.com/webtorrent/bittorrent-lsd\r\n[bittorrent-lsd-ti]: https://img.shields.io/github/actions/workflow/status/webtorrent/bittorrent-lsd/ci.yml?branch=master\r\n[bittorrent-lsd-tu]: https://github.com/webtorrent/bittorrent-lsd/actions\r\n[bittorrent-lsd-ni]: https://img.shields.io/npm/v/bittorrent-lsd.svg\r\n[bittorrent-lsd-nu]: https://www.npmjs.com/package/bittorrent-lsd\r\n\r\n[create-torrent]: https://github.com/webtorrent/create-torrent\r\n[create-torrent-ti]: https://img.shields.io/github/actions/workflow/status/webtorrent/create-torrent/ci.yml?branch=master\r\n[create-torrent-tu]: https://github.com/webtorrent/create-torrent/actions\r\n[create-torrent-ni]: https://img.shields.io/npm/v/create-torrent.svg\r\n[create-torrent-nu]: https://www.npmjs.com/package/create-torrent\r\n\r\n[magnet-uri]: https://github.com/webtorrent/magnet-uri\r\n[magnet-uri-ti]: https://img.shields.io/github/actions/workflow/status/webtorrent/magnet-uri/ci.yml?branch=master\r\n[magnet-uri-tu]: https://github.com/webtorrent/magnet-uri/actions\r\n[magnet-uri-ni]: https://img.shields.io/npm/v/magnet-uri.svg\r\n[magnet-uri-nu]: https://www.npmjs.com/package/magnet-uri\r\n\r\n[parse-torrent]: https://github.com/webtorrent/parse-torrent\r\n[parse-torrent-ti]: https://img.shields.io/github/actions/workflow/status/webtorrent/parse-torrent/ci.yml?branch=master\r\n[parse-torrent-tu]: https://github.com/webtorrent/parse-torrent/actions\r\n[parse-torrent-ni]: https://img.shields.io/npm/v/parse-torrent.svg\r\n[parse-torrent-nu]: https://www.npmjs.com/package/parse-torrent\r\n\r\n[torrent-discovery]: https://github.com/webtorrent/torrent-discovery\r\n[torrent-discovery-ti]: https://img.shields.io/github/actions/workflow/status/webtorrent/torrent-discovery/ci.yml?branch=master\r\n[torrent-discovery-tu]: https://github.com/webtorrent/torrent-discovery/actions\r\n[torrent-discovery-ni]: https://img.shields.io/npm/v/torrent-discovery.svg\r\n[torrent-discovery-nu]: https://www.npmjs.com/package/torrent-discovery\r\n\r\n[ut_metadata]: https://github.com/webtorrent/ut_metadata\r\n[ut_metadata-ti]: https://img.shields.io/github/actions/workflow/status/webtorrent/ut_metadata/ci.yml?branch=master\r\n[ut_metadata-tu]: https://github.com/webtorrent/ut_metadata/actions\r\n[ut_metadata-ni]: https://img.shields.io/npm/v/ut_metadata.svg\r\n[ut_metadata-nu]: https://www.npmjs.com/package/ut_metadata\r\n\r\n[ut_pex]: https://github.com/webtorrent/ut_pex\r\n[ut_pex-ti]: https://img.shields.io/github/actions/workflow/status/webtorrent/ut_pex/ci.yml?branch=master\r\n[ut_pex-tu]: https://github.com/webtorrent/ut_pex/actions\r\n[ut_pex-ni]: https://img.shields.io/npm/v/ut_pex.svg\r\n[ut_pex-nu]: https://www.npmjs.com/package/ut_pex\r\n\r\n#### Enable debug logs\r\n\r\nIn **node**, enable debug logs by setting the `DEBUG` environment variable to the name of the\r\nmodule you want to debug (e.g. `bittorrent-protocol`, or `*` to print **all logs**).\r\n\r\n```bash\r\nDEBUG=* webtorrent\r\n```\r\n\r\nIn the **browser**, enable debug logs by running this in the developer console:\r\n\r\n```js\r\nlocalStorage.setItem('debug', '*')\r\n```\r\n\r\nDisable by running this:\r\n\r\n```js\r\nlocalStorage.removeItem('debug')\r\n```\r\n\r\n### License\r\n\r\nMIT. Copyright (c) [Feross Aboukhadijeh](https://feross.org) and [WebTorrent, LLC](https://webtorrent.io).\r\n","readmeFilename":"README.md","_rev":"1-62b0fcd6c1d1b815eb72d6903a8850c1"}