finds.dev← search

// the find

webtorrent/bittorrent-tracker

★ 1,941 · JavaScript · MIT · updated Sep 2026

🌊 Simple, robust, BitTorrent tracker (client & server) implementation

A Node.js implementation of a BitTorrent tracker, including both client and server, that speaks HTTP, UDP, and WebSocket/WebRTC tracker protocols in one package. It's the tracker library behind WebTorrent and a few other clients, aimed at anyone building a BitTorrent-based app in JS who needs peer discovery without reaching for a different library per protocol.

Covers all three tracker protocols (HTTP, UDP/BEP15, WebSocket for WebRTC) with a single consistent API instead of forcing you to stitch together separate libraries. The test suite runs fully offline, so CI isn't flaky from hitting real trackers. It's genuinely battle-tested — it's the tracker layer for WebTorrent itself, not a toy implementation, and ships a CLI plus built-in stats endpoints (/stats, /stats.json) so you get operational visibility for free.

Server state (server.torrents, swarm peers) is entirely in-memory with no persistence or clustering story — a restart wipes all swarm data and there's no documented path to running more than one instance behind a load balancer. The filter() hook is the only abuse-control mechanism mentioned; there's no rate limiting for the public HTTP/UDP endpoints, which matters a lot for UDP trackers given their history as amplification/abuse vectors. The /stats.json endpoint appears unauthenticated by default, so anyone can scrape your tracker's swarm metrics unless you add your own auth in front of it. Proxy support is also inconsistent across protocols (undici vs legacy http.Agent vs SOCKS depending on Node version and tracker type), which is the kind of detail that bites you only after you're already deployed.

View on GitHub → Homepage ↗

// want more like this?

We dig through GitHub every week and send a few repos picked for what you actually care about — each with an honest take like this one.

Get finds in your inbox → Search again →