Need help with wt-tracker?
Click the “chat” button below for chat support from the developer who created it, or find similar developers for support.

About the developer

136 Stars 49 Forks Apache License 2.0 109 Commits 15 Opened issues


High-performance WebTorrent tracker

Services available


Need anything else?

Contributors list

Build Status Coverage Status


High-performance WebTorrent tracker.

WebTorrent tracker is a required component of WebTorrent and P2P Media Loader (peer-to-peer networks for web browsers) to do WebRTC signaling - exchanging connection data (i.e. SDP) between peers - joining them into swarms.


  • handles more than 40k WebSocket Secure (HTTPS) peers on a VPS with only 2 GiB memory and 1 virtual CPU thanks to uWebSockets.js I/O backend and perfomance optimizations in the code
  • handles ws:// (HTTP) and wss:// (HTTPS) connections simultaneously
  • IPv4 and IPv6 support
  • robust and well-tested: CI, unit tests, static code analyzis, 100% TypeScript
  • supports tracker "scrape" extension
  • statistics under /stats.json URL

Related projects

  • P2P Media Loader - an open-source engine for P2P streaming of live and on demand video directly in a web browser HTML page
  • Novage, LLC - P2P development, support & consulting
  • WebTorrent - streaming torrent client for the web
  • uWebSockets.js - the Node.js bindings to µWebSockets, one of the most efficient web servers available

Build instructions

Node.js 10+ is required.

npm install
npm run build

Run instructions

./bin/wt-tracker [config.json]


node dist/run-uws-tracker.js [config.json]


npm start [config.json]


See config.json

|Name|Type|Description| |----|----|-----------| |servers.websockets.path|string|URL pattern for the WebSockets endpoint| |servers.websockets.maxPayloadLength|number|The maximum length of received message| |servers.websockets.midleTimeout|number|The maximum amount of seconds that may pass without sending or getting a message. Being idle for more than this, and the connection is severed.| |servers.websockets.compression|0,1,2|0 = no compression, 1 = shared compressor, 2 = dedicated compressor (see details)| |servers.websockets.maxConnections|number|The maximum number of WebSocket connections. 0 = no limit.| |tracker.maxOffers|number|The maximum number of client's WebRTC SDP offers that are processed| |tracker.announceInterval|number|Desired announce interval in seconds required from the clients|

Index HTML page

You can specify a content of the index page by creating

file in the working directory.

We use cookies. If you continue to browse the site, you agree to the use of cookies. For more information on our use of cookies please see our Privacy Policy.