[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-2868":3},{"id":4,"name":5,"fullName":6,"owner":5,"repo":5,"description":7,"homepage":8,"htmlUrl":9,"language":10,"languages":9,"totalLinesOfCode":9,"stars":11,"forks":12,"watchers":13,"openIssues":14,"contributorsCount":15,"subscribersCount":15,"size":15,"stars1d":15,"stars7d":16,"stars30d":17,"stars90d":15,"forks30d":15,"starsTrendScore":18,"compositeScore":19,"rankGlobal":9,"rankLanguage":9,"license":20,"archived":21,"fork":21,"defaultBranch":22,"hasWiki":21,"hasPages":23,"topics":24,"createdAt":9,"pushedAt":9,"updatedAt":34,"readmeContent":35,"aiSummary":36,"trendingCount":15,"starSnapshotCount":15,"syncStatus":18,"lastSyncTime":37,"discoverSource":38},2868,"webtorrent","webtorrent\u002Fwebtorrent","⚡️ Streaming torrent client for the web","https:\u002F\u002Fwebtorrent.io",null,"JavaScript",30988,2788,678,64,0,53,97,2,45,"MIT License",false,"master",true,[25,26,27,28,29,30,31,32,33,5],"bittorrent","browser","hacktoberfest","javascript","nodejs","p2p","streaming","torrent","webrtc","2026-06-12 02:00:44","\u003Ch1 align=\"center\">\n  \u003Cbr>\n  \u003Ca href=\"https:\u002F\u002Fwebtorrent.io\">\u003Cimg src=\"https:\u002F\u002Fwebtorrent.io\u002Fimg\u002FWebTorrent.png\" alt=\"WebTorrent\" width=\"200\">\u003C\u002Fa>\n  \u003Cbr>\n  WebTorrent\n  \u003Cbr>\n  \u003Cbr>\n\u003C\u002Fh1>\n\n\u003Ch4 align=\"center\">The streaming torrent client. For node.js and the web.\u003C\u002Fh4>\n\n\u003Cp align=\"center\">\n  \u003Ca href=\"https:\u002F\u002Fdiscord.gg\u002FcnXkm4Z\">\u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fdiscord\u002F612575111718895616\" alt=\"discord\">\u003C\u002Fa>\n  \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fwebtorrent\u002Fwebtorrent\u002Factions\">\u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Factions\u002Fworkflow\u002Fstatus\u002Fwebtorrent\u002Fwebtorrent\u002Fci.yml?branch=master\" alt=\"ci\">\u003C\u002Fa>\n  \u003Ca href=\"https:\u002F\u002Fwww.npmjs.com\u002Fpackage\u002Fwebtorrent\">\u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fnpm\u002Fv\u002Fwebtorrent.svg\" alt=\"npm version\">\u003C\u002Fa>\n  \u003Ca href=\"https:\u002F\u002Fwww.npmjs.com\u002Fpackage\u002Fwebtorrent\">\u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fnpm\u002Fdm\u002Fwebtorrent.svg\" alt=\"npm downloads\">\u003C\u002Fa>\n  \u003Ca href=\"https:\u002F\u002Fstandardjs.com\">\u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Fcode_style-standard-brightgreen.svg\" alt=\"Standard - JavaScript Style Guide\">\u003C\u002Fa>\n\u003C\u002Fp>\n\n\u003Ch5 align=\"center\">\n  Sponsored by&nbsp;&nbsp;&nbsp;&nbsp;\u003Ca href=\"https:\u002F\u002Fsocket.dev\">\u003Cimg src=\"https:\u002F\u002Fwebtorrent.io\u002Fimg\u002Fsupporters\u002Fsocket.png\" alt=\"Socket - JavaScript open source supply chain security\" height=35 valign=\"middle\">\u003C\u002Fa>&nbsp;&nbsp;&nbsp;&nbsp;\u003Ca href=\"https:\u002F\u002Fwww.wormhole.app\u002F?utm_medium=sponsorship&utm_source=webtorrent&utm_campaign=feross\">\u003Cimg src=\"https:\u002F\u002Fwebtorrent.io\u002Fimg\u002Fsupporters\u002Fwormhole.png\" alt=\"Wormhole\" height=30 valign=\"middle\">\u003C\u002Fa>\n\u003C\u002Fh5>\n\u003Cbr>\n\n**WebTorrent** is a streaming torrent client for **node.js** and the **browser**. YEP,\nTHAT'S RIGHT. THE BROWSER. It's written completely in JavaScript – the language of the web\n– so the same code works in both runtimes.\n\nIn node.js, this module is a simple torrent client, using TCP and UDP to talk to\nother torrent clients.\n\nIn the browser, WebTorrent uses **WebRTC** (data channels) for peer-to-peer transport.\nIt can be used **without** browser plugins, extensions, or installations. It's Just\nJavaScript™. Note: WebTorrent does **not** support UDP\u002FTCP peers in browser.\n\nSimply include the\n[`webtorrent.min.js`](https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fwebtorrent@latest\u002Fwebtorrent.min.js) script\non your page to start fetching files over WebRTC using the BitTorrent protocol, or\n`import WebTorrent from 'webtorrent'` with [browserify](http:\u002F\u002Fbrowserify.org\u002F) or [webpack](https:\u002F\u002Fwebpack.js.org\u002F). See [demo apps\n](#who-is-using-webtorrent-today) and [code examples](#usage) below.\n\n[![jsdelivr download count](https:\u002F\u002Fdata.jsdelivr.com\u002Fv1\u002Fpackage\u002Fnpm\u002Fwebtorrent\u002Fbadge)](https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fwebtorrent@latest\u002Fwebtorrent.min.js)\n\nTo make BitTorrent work over WebRTC (which is the only P2P transport that works on the\nweb) we made some protocol changes. Therefore, a browser-based WebTorrent client or **\"web\npeer\"** can only connect to other clients that support WebTorrent\u002FWebRTC.\n\nTo seed files to web peers, use a client that supports WebTorrent, e.g.\n[WebTorrent Desktop][webtorrent-desktop], a desktop client with a\nfamiliar UI that can connect to web peers,\n[webtorrent-hybrid](https:\u002F\u002Fgithub.com\u002Fwebtorrent\u002Fwebtorrent-hybrid), a command line program,\nor [Instant.io](https:\u002F\u002Finstant.io\u002F), a website. Established torrent clients like\n**Vuze** have [already added WebTorrent support](https:\u002F\u002Fwiki.vuze.com\u002Fw\u002FWebTorrent) so\nthey can connect to both normal *and* web peers. We hope other clients will follow.\n\n![Network](https:\u002F\u002Fwebtorrent.io\u002Fimg\u002Fnetwork.png)\n\n### Features\n\n- **Torrent client for node.js & the browser** (same npm package!)\n- **Insanely fast**\n- Download **multiple torrents** simultaneously, efficiently\n- **Pure Javascript** (no native dependencies)\n- Exposes files as **streams**\n  - Fetches pieces from the network on-demand so seeking is supported (even before torrent is finished)\n  - Seamlessly switches between sequential and rarest-first piece selection strategy\n- Supports advanced torrent client features\n  - **magnet uri** support via **[ut_metadata](https:\u002F\u002Fgithub.com\u002Fwebtorrent\u002Fut_metadata)**\n  - **peer discovery** via **[dht](https:\u002F\u002Fgithub.com\u002Fwebtorrent\u002Fbittorrent-dht)**,\n    **[tracker](https:\u002F\u002Fgithub.com\u002Fwebtorrent\u002Fbittorrent-tracker)**,\n    **[lsd](https:\u002F\u002Fgithub.com\u002Fwebtorrent\u002Fbittorrent-lsd)**, and\n    **[ut_pex](https:\u002F\u002Fgithub.com\u002Fwebtorrent\u002Fut_pex)**\n  - **[protocol extension api](https:\u002F\u002Fgithub.com\u002Fwebtorrent\u002Fbittorrent-protocol#extension-api)**\n    for adding new extensions\n- **Comprehensive test suite** (runs completely offline, so it's reliable and fast)\n- Check all the **[supported BEPs here](docs\u002Fbep_support.md)**\n\n#### Browser\u002FWebRTC environment features\n\n- **WebRTC data channels** for lightweight peer-to-peer communication with **no plugins**\n- **No silos.** WebTorrent is a P2P network for the **entire web.** WebTorrent clients\n  running on one domain can connect to clients on any other domain.\n- Stream video torrents into a `\u003Cvideo>` tag (`webm, mkv, mp4, ogv, mov, etc (AV1, H264, HEVC*, VP8, VP9, AAC, FLAC, MP3, OPUS, Vorbis, etc)`)\n- Supports Chrome, Firefox, Opera and Safari.\n\n\u003C!-- \u003Cp align=\"center\">\n  \u003Ca href=\"https:\u002F\u002Fsaucelabs.com\u002Fu\u002Fwebtorrent\">\n    \u003Cimg src=\"https:\u002F\u002Fsaucelabs.com\u002Fbrowser-matrix\u002Fwebtorrent.svg\" alt=\"Sauce Labs\">\n  \u003C\u002Fa>\n\u003C\u002Fp> -->\n\n### Install\n\nTo install WebTorrent for use in node or the browser with `import WebTorrent from 'webtorrent'`, run:\n\n```bash\nnpm install webtorrent\n```\n\nTo install a `webtorrent`\n[command line program](https:\u002F\u002Fgithub.com\u002Fwebtorrent\u002Fwebtorrent-cli), run:\n\n```bash\nnpm install webtorrent-cli -g\n```\n\nTo install a WebTorrent desktop application for Mac, Windows, or Linux, see\n[WebTorrent Desktop][webtorrent-desktop].\n\n### Ways to help\n\n- **Join us in [Gitter][webtorrent-gitter-url]** or on freenode at `#webtorrent` to help\n  with development or to hang out with some mad science hackers :)\n- **[Create a new issue](https:\u002F\u002Fgithub.com\u002Fwebtorrent\u002Fwebtorrent\u002Fissues\u002Fnew)** to report bugs\n- **[Fix an issue](https:\u002F\u002Fgithub.com\u002Fwebtorrent\u002Fwebtorrent\u002Fissues?state=open)**. WebTorrent\n  is an [OPEN Open Source Project](https:\u002F\u002Fgithub.com\u002Fwebtorrent\u002F.github\u002Fblob\u002Fmaster\u002FCONTRIBUTING.md)!\n\n### Who is using WebTorrent today?\n\n**[Lots of folks!](docs\u002Ffaq.md#who-is-using-webtorrent-today)**\n\n### WebTorrent API Documentation\n\n**[Read the full API Documentation](docs\u002Fapi.md).**\n\n### Usage\n\nWebTorrent is the first BitTorrent client that works in the browser, using open web\nstandards (no plugins, just HTML5 and WebRTC)! It's easy to get started!\n\n#### In the browser\n\n##### Downloading a file is simple:\n\n```js\nimport WebTorrent from 'webtorrent'\n\nconst client = new WebTorrent()\nconst magnetURI = '...'\n\nclient.add(magnetURI, torrent => {\n  \u002F\u002F Got torrent metadata!\n  console.log('Client is downloading:', torrent.infoHash)\n\n  for (const file of torrent.files) {\n    document.body.append(file.name)\n  }\n})\n```\n\n##### Seeding a file is simple, too:\n\n```js\nimport dragDrop from 'drag-drop'\nimport WebTorrent from 'webtorrent'\n\nconst client = new WebTorrent()\n\n\u002F\u002F When user drops files on the browser, create a new torrent and start seeding it!\ndragDrop('body', files => {\n  client.seed(files, torrent => {\n    console.log('Client is seeding:', torrent.infoHash)\n  })\n})\n```\n\nThere are more examples in [docs\u002Fget-started.md](docs\u002Fget-started.md).\n\n##### Browserify\n\nWebTorrent works great with [browserify](http:\u002F\u002Fbrowserify.org\u002F), an npm package that lets\nyou use [node](http:\u002F\u002Fnodejs.org\u002F)-style require() to organize your browser code and load modules installed by [npm](https:\u002F\u002Fwww.npmjs.com\u002F) (as seen in the previous examples).\n\n##### Webpack\n\nWebTorrent also works with [webpack](https:\u002F\u002Fwebpack.js.org\u002F), another module\nbundler. However, webpack requires extra configuration which you can find in [the webpack bundle config used by webtorrent](\u002Fscripts\u002Fbrowser.webpack.js).\n\n\nOr, you can just use the pre-built version via\n`import WebTorrent from 'webtorrent\u002Fdist\u002Fwebtorrent.min.js'` and skip the webpack configuration.\n\n##### Script tag\n\nWebTorrent is also available as a standalone script\n([`webtorrent.min.js`](webtorrent.min.js)) which exposes `WebTorrent` on the `window`\nobject, so it can be used with just a script tag:\n\n```html\n\u003Cscript type='module'>\n  import WebTorrent from 'webtorrent.min.js'\n\u003C\u002Fscript>\n```\n\nThe WebTorrent script is also hosted on fast, reliable CDN infrastructure for easy inclusion on your site:\n\n```html\n\u003Cscript type='module'>\n  import WebTorrent from 'https:\u002F\u002Fesm.sh\u002Fwebtorrent\u002Fdist\u002Fwebtorrent.min.js'\n\u003C\u002Fscript>\n```\n\n##### Chrome App\n\nIf you want to use WebTorrent in a\n[Chrome App](https:\u002F\u002Fdeveloper.chrome.com\u002Fapps\u002Fabout_apps), you can include the\nfollowing script:\n\n```html\n\u003Cscript type='module'>\n  import WebTorrent from 'webtorrent.chromeapp.js'\n\u003C\u002Fscript>\n```\n\nBe sure to enable the `chrome.sockets.udp` and `chrome.sockets.tcp` permissions!\n\n#### In Node.js\n\nWebTorrent also works in node.js, using the *same npm package!* It's mad science!\n\n**NOTE**: To connect to \"web peers\" (browsers) in addition to normal BitTorrent peers, use\n[webtorrent-hybrid](https:\u002F\u002Fgithub.com\u002Fwebtorrent\u002Fwebtorrent-hybrid) which includes WebRTC\nsupport for node.\n\n#### As a command line app\n\nWebTorrent is also available as a\n[command line app](https:\u002F\u002Fgithub.com\u002Fwebtorrent\u002Fwebtorrent-cli). Here's how to use it:\n\n```bash\n$ npm install webtorrent-cli -g\n$ webtorrent --help\n```\n\nTo download a torrent:\n\n```bash\n$ webtorrent magnet_uri\n```\n\nTo stream a torrent to a device like **AirPlay** or **Chromecast**, just pass a flag:\n\n```bash\n$ webtorrent magnet_uri --airplay\n```\n\nThere are many supported streaming options:\n\n```bash\n--airplay               Apple TV\n--chromecast            Chromecast\n--mplayer               MPlayer\n--mpv                   MPV\n--omx [jack]            omx [default: hdmi]\n--vlc                   VLC\n--xbmc                  XBMC\n--stdout                standard out [implies --quiet]\n```\n\nIn addition to magnet uris, WebTorrent supports [many ways](docs\u002Fapi.md#clientaddtorrentid-opts-function-ontorrent-torrent-) to specify a torrent.\n\n### Talks about WebTorrent\n\n- Sep 2017 - Nordic JS - [Get Rich Quick With P2P Crypto Currency](https:\u002F\u002Fwww.youtube.com\u002Fwatch?v=8N_4Furztjo)\n- May 2017 - Char.la - [WebTorrent and Peerify](https:\u002F\u002Fyoutu.be\u002FD-04vg5hvEQ?t=54m20s) (Spanish)\n- Nov 2016 - NodeConf Argentina - [Real world Electron: Building Cross-platform desktop apps with JavaScript](https:\u002F\u002Fwww.youtube.com\u002Fwatch?v=YLExGgEnbFY)\n- May 2016 - SIGNAL Conference - [BitTorrent in the Browser](https:\u002F\u002Fwww.youtube.com\u002Fwatch?v=2qrUx-C5Np4)\n- May 2015 - Data Terra Nemo - [WebTorrent: Mother of all demos](https:\u002F\u002Fwww.youtube.com\u002Fwatch?v=RRtNEcAaUO8)\n- May 2015 - Data Terra Nemo - [WebRTC Everywhere](https:\u002F\u002Fwww.youtube.com\u002Fwatch?v=RRtNEcAaUO8)\n- Nov 2014 - JSConf Asia - [How WebTorrent Works](https:\u002F\u002Fwww.youtube.com\u002Fwatch?v=kxHRATfvnlw)\n- Sep 2014 - NodeConf EU - [WebRTC Mad Science](https:\u002F\u002Fwww.youtube.com\u002Fwatch?v=BVBXkzVjvPc) (first working WebTorrent demo)\n- Apr 2014 - CraftConf - [Bringing BitTorrent to the Web](https:\u002F\u002Fwww.youtube.com\u002Fwatch?v=PT8s_IVWDgw)\n- May 2014 - JS.LA - [How I Built a BitTorrent Client in the Browser](https:\u002F\u002Fvimeo.com\u002F97324247) (progress update; node client working)\n- Oct 2013 - RealtimeConf - [WebRTC Black Magic](https:\u002F\u002Fvimeo.com\u002F77265280) (first mention of idea for WebTorrent)\n\n### Modules\n\nMost of the active development is happening inside of small npm packages which are used by WebTorrent.\n\n#### The Node Way™\n\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:\u002F\u002Fgist.github.com\u002Fsubstack\u002F5075355)\n\n![node.js is shiny](https:\u002F\u002Ffeross.net\u002Fx\u002Fnode2.gif)\n\n#### Modules\n\nThese are the main modules that make up WebTorrent:\n\n| module | tests | version | description |\n|---|---|---|---|\n| **[webtorrent][webtorrent]** | [![][webtorrent-ti]][webtorrent-tu] | [![][webtorrent-ni]][webtorrent-nu] | **torrent client (this module)**\n| [bittorrent-dht][bittorrent-dht] | [![][bittorrent-dht-ti]][bittorrent-dht-tu] | [![][bittorrent-dht-ni]][bittorrent-dht-nu] | distributed hash table client\n| [bittorrent-peerid][bittorrent-peerid] | [![][bittorrent-peerid-ti]][bittorrent-peerid-tu] | [![][bittorrent-peerid-ni]][bittorrent-peerid-nu] | identify client name\u002Fversion\n| [bittorrent-protocol][bittorrent-protocol] | [![][bittorrent-protocol-ti]][bittorrent-protocol-tu] | [![][bittorrent-protocol-ni]][bittorrent-protocol-nu] | bittorrent protocol stream\n| [bittorrent-tracker][bittorrent-tracker] | [![][bittorrent-tracker-ti]][bittorrent-tracker-tu] | [![][bittorrent-tracker-ni]][bittorrent-tracker-nu] | bittorrent tracker server\u002Fclient\n| [bittorrent-lsd][bittorrent-lsd] | [![][bittorrent-lsd-ti]][bittorrent-lsd-tu] | [![][bittorrent-lsd-ni]][bittorrent-lsd-nu] | bittorrent local service discovery\n| [create-torrent][create-torrent] | [![][create-torrent-ti]][create-torrent-tu] | [![][create-torrent-ni]][create-torrent-nu] | create .torrent files\n| [magnet-uri][magnet-uri] | [![][magnet-uri-ti]][magnet-uri-tu] | [![][magnet-uri-ni]][magnet-uri-nu] | parse magnet uris\n| [parse-torrent][parse-torrent] | [![][parse-torrent-ti]][parse-torrent-tu] | [![][parse-torrent-ni]][parse-torrent-nu] | parse torrent identifiers\n| [torrent-discovery][torrent-discovery] | [![][torrent-discovery-ti]][torrent-discovery-tu] | [![][torrent-discovery-ni]][torrent-discovery-nu] | find peers via dht, tracker, and lsd\n| [ut_metadata][ut_metadata] | [![][ut_metadata-ti]][ut_metadata-tu] | [![][ut_metadata-ni]][ut_metadata-nu] | metadata for magnet uris (protocol extension)\n| [ut_pex][ut_pex] | [![][ut_pex-ti]][ut_pex-tu] | [![][ut_pex-ni]][ut_pex-nu] | peer discovery (protocol extension)\n\n[webtorrent]: https:\u002F\u002Fgithub.com\u002Fwebtorrent\u002Fwebtorrent\n[webtorrent-gitter-url]: https:\u002F\u002Fgitter.im\u002Fwebtorrent\u002Fwebtorrent\n\n[webtorrent-ti]: https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Factions\u002Fworkflow\u002Fstatus\u002Fwebtorrent\u002Fwebtorrent\u002Fci.yml\n[webtorrent-tu]: https:\u002F\u002Fgithub.com\u002Fwebtorrent\u002Fwebtorrent\u002Factions\n[webtorrent-ni]: https:\u002F\u002Fimg.shields.io\u002Fnpm\u002Fv\u002Fwebtorrent.svg\n[webtorrent-nu]: https:\u002F\u002Fwww.npmjs.com\u002Fpackage\u002Fwebtorrent\n[webtorrent-desktop]: https:\u002F\u002Fwebtorrent.io\u002Fdesktop\n\n[bittorrent-dht]: https:\u002F\u002Fgithub.com\u002Fwebtorrent\u002Fbittorrent-dht\n[bittorrent-dht-ti]: https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Factions\u002Fworkflow\u002Fstatus\u002Fwebtorrent\u002Fbittorrent-dht\u002Fci.yml?branch=master\n[bittorrent-dht-tu]: https:\u002F\u002Fgithub.com\u002Fwebtorrent\u002Fbittorrent-dht\u002Factions\n[bittorrent-dht-ni]: https:\u002F\u002Fimg.shields.io\u002Fnpm\u002Fv\u002Fbittorrent-dht.svg\n[bittorrent-dht-nu]: https:\u002F\u002Fwww.npmjs.com\u002Fpackage\u002Fbittorrent-dht\n\n[bittorrent-peerid]: https:\u002F\u002Fgithub.com\u002Fwebtorrent\u002Fbittorrent-peerid\n[bittorrent-peerid-ti]: https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Factions\u002Fworkflow\u002Fstatus\u002Fwebtorrent\u002Fbittorrent-peerid\u002Fci.yml?branch=master\n[bittorrent-peerid-tu]: https:\u002F\u002Fgithub.com\u002Fwebtorrent\u002Fbittorrent-peerid\u002Factions\n[bittorrent-peerid-ni]: https:\u002F\u002Fimg.shields.io\u002Fnpm\u002Fv\u002Fbittorrent-peerid.svg\n[bittorrent-peerid-nu]: https:\u002F\u002Fwww.npmjs.com\u002Fpackage\u002Fbittorrent-peerid\n\n[bittorrent-protocol]: https:\u002F\u002Fgithub.com\u002Fwebtorrent\u002Fbittorrent-protocol\n[bittorrent-protocol-ti]: https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Factions\u002Fworkflow\u002Fstatus\u002Fwebtorrent\u002Fbittorrent-protocol\u002Fci.yml?branch=master\n[bittorrent-protocol-tu]: https:\u002F\u002Fgithub.com\u002Fwebtorrent\u002Fbittorrent-protocol\u002Factions\n[bittorrent-protocol-ni]: https:\u002F\u002Fimg.shields.io\u002Fnpm\u002Fv\u002Fbittorrent-protocol.svg\n[bittorrent-protocol-nu]: https:\u002F\u002Fwww.npmjs.com\u002Fpackage\u002Fbittorrent-protocol\n\n[bittorrent-tracker]: https:\u002F\u002Fgithub.com\u002Fwebtorrent\u002Fbittorrent-tracker\n[bittorrent-tracker-ti]: https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Factions\u002Fworkflow\u002Fstatus\u002Fwebtorrent\u002Fbittorrent-tracker\u002Fci.yml?branch=master\n[bittorrent-tracker-tu]: https:\u002F\u002Fgithub.com\u002Fwebtorrent\u002Fbittorrent-tracker\u002Factions\n[bittorrent-tracker-ni]: https:\u002F\u002Fimg.shields.io\u002Fnpm\u002Fv\u002Fbittorrent-tracker.svg\n[bittorrent-tracker-nu]: https:\u002F\u002Fwww.npmjs.com\u002Fpackage\u002Fbittorrent-tracker\n\n[bittorrent-lsd]: https:\u002F\u002Fgithub.com\u002Fwebtorrent\u002Fbittorrent-lsd\n[bittorrent-lsd-ti]: https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Factions\u002Fworkflow\u002Fstatus\u002Fwebtorrent\u002Fbittorrent-lsd\u002Fci.yml?branch=master\n[bittorrent-lsd-tu]: https:\u002F\u002Fgithub.com\u002Fwebtorrent\u002Fbittorrent-lsd\u002Factions\n[bittorrent-lsd-ni]: https:\u002F\u002Fimg.shields.io\u002Fnpm\u002Fv\u002Fbittorrent-lsd.svg\n[bittorrent-lsd-nu]: https:\u002F\u002Fwww.npmjs.com\u002Fpackage\u002Fbittorrent-lsd\n\n[create-torrent]: https:\u002F\u002Fgithub.com\u002Fwebtorrent\u002Fcreate-torrent\n[create-torrent-ti]: https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Factions\u002Fworkflow\u002Fstatus\u002Fwebtorrent\u002Fcreate-torrent\u002Fci.yml?branch=master\n[create-torrent-tu]: https:\u002F\u002Fgithub.com\u002Fwebtorrent\u002Fcreate-torrent\u002Factions\n[create-torrent-ni]: https:\u002F\u002Fimg.shields.io\u002Fnpm\u002Fv\u002Fcreate-torrent.svg\n[create-torrent-nu]: https:\u002F\u002Fwww.npmjs.com\u002Fpackage\u002Fcreate-torrent\n\n[magnet-uri]: https:\u002F\u002Fgithub.com\u002Fwebtorrent\u002Fmagnet-uri\n[magnet-uri-ti]: https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Factions\u002Fworkflow\u002Fstatus\u002Fwebtorrent\u002Fmagnet-uri\u002Fci.yml?branch=master\n[magnet-uri-tu]: https:\u002F\u002Fgithub.com\u002Fwebtorrent\u002Fmagnet-uri\u002Factions\n[magnet-uri-ni]: https:\u002F\u002Fimg.shields.io\u002Fnpm\u002Fv\u002Fmagnet-uri.svg\n[magnet-uri-nu]: https:\u002F\u002Fwww.npmjs.com\u002Fpackage\u002Fmagnet-uri\n\n[parse-torrent]: https:\u002F\u002Fgithub.com\u002Fwebtorrent\u002Fparse-torrent\n[parse-torrent-ti]: https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Factions\u002Fworkflow\u002Fstatus\u002Fwebtorrent\u002Fparse-torrent\u002Fci.yml?branch=master\n[parse-torrent-tu]: https:\u002F\u002Fgithub.com\u002Fwebtorrent\u002Fparse-torrent\u002Factions\n[parse-torrent-ni]: https:\u002F\u002Fimg.shields.io\u002Fnpm\u002Fv\u002Fparse-torrent.svg\n[parse-torrent-nu]: https:\u002F\u002Fwww.npmjs.com\u002Fpackage\u002Fparse-torrent\n\n[torrent-discovery]: https:\u002F\u002Fgithub.com\u002Fwebtorrent\u002Ftorrent-discovery\n[torrent-discovery-ti]: https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Factions\u002Fworkflow\u002Fstatus\u002Fwebtorrent\u002Ftorrent-discovery\u002Fci.yml?branch=master\n[torrent-discovery-tu]: https:\u002F\u002Fgithub.com\u002Fwebtorrent\u002Ftorrent-discovery\u002Factions\n[torrent-discovery-ni]: https:\u002F\u002Fimg.shields.io\u002Fnpm\u002Fv\u002Ftorrent-discovery.svg\n[torrent-discovery-nu]: https:\u002F\u002Fwww.npmjs.com\u002Fpackage\u002Ftorrent-discovery\n\n[ut_metadata]: https:\u002F\u002Fgithub.com\u002Fwebtorrent\u002Fut_metadata\n[ut_metadata-ti]: https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Factions\u002Fworkflow\u002Fstatus\u002Fwebtorrent\u002Fut_metadata\u002Fci.yml?branch=master\n[ut_metadata-tu]: https:\u002F\u002Fgithub.com\u002Fwebtorrent\u002Fut_metadata\u002Factions\n[ut_metadata-ni]: https:\u002F\u002Fimg.shields.io\u002Fnpm\u002Fv\u002Fut_metadata.svg\n[ut_metadata-nu]: https:\u002F\u002Fwww.npmjs.com\u002Fpackage\u002Fut_metadata\n\n[ut_pex]: https:\u002F\u002Fgithub.com\u002Fwebtorrent\u002Fut_pex\n[ut_pex-ti]: https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Factions\u002Fworkflow\u002Fstatus\u002Fwebtorrent\u002Fut_pex\u002Fci.yml?branch=master\n[ut_pex-tu]: https:\u002F\u002Fgithub.com\u002Fwebtorrent\u002Fut_pex\u002Factions\n[ut_pex-ni]: https:\u002F\u002Fimg.shields.io\u002Fnpm\u002Fv\u002Fut_pex.svg\n[ut_pex-nu]: https:\u002F\u002Fwww.npmjs.com\u002Fpackage\u002Fut_pex\n\n#### Enable debug logs\n\nIn **node**, enable debug logs by setting the `DEBUG` environment variable to the name of the\nmodule you want to debug (e.g. `bittorrent-protocol`, or `*` to print **all logs**).\n\n```bash\nDEBUG=* webtorrent\n```\n\nIn the **browser**, enable debug logs by running this in the developer console:\n\n```js\nlocalStorage.setItem('debug', '*')\n```\n\nDisable by running this:\n\n```js\nlocalStorage.removeItem('debug')\n```\n\n### License\n\nMIT. Copyright (c) [Feross Aboukhadijeh](https:\u002F\u002Ffeross.org) and [WebTorrent, LLC](https:\u002F\u002Fwebtorrent.io).\n","WebTorrent 是一个为 Web 和 Node.js 设计的流式传输 BitTorrent 客户端。它使用纯 JavaScript 编写，能够在浏览器中通过 WebRTC 实现点对点的数据传输，无需任何插件或扩展。在 Node.js 环境下，它支持标准的 TCP 和 UDP 协议与其它 BitTorrent 客户端通信；而在浏览器环境中，则利用 WebRTC 数据通道实现 P2P 传输。这种设计使得 WebTorrent 特别适合于需要在网页上直接播放视频、音频等大文件的场景，或是开发基于 P2P 技术的应用程序。","2026-06-11 02:51:18","top_language"]