A full-featured BitTorrent client library and utilities package written in Go, designed for streaming and integration into other projects.
anacrolix/torrent is a comprehensive BitTorrent client and library implemented in Go, designed primarily for use as a library in other projects. It enables streaming data directly from the BitTorrent network through Go's idiomatic io interfaces, supporting features like seeking and random reads. The project has been running in production services since 2014 and explores Go's concurrency capabilities.
Go developers building applications that require BitTorrent protocol integration, such as download managers, streaming servers, or distributed file systems. It is also suitable for projects needing customizable storage backends or command-line torrent utilities.
Developers choose this library for its production-ready status, extensive protocol support (including DHT, PEX, uTP, WebTorrent, and BitTorrent v2), and flexible storage options. Its unique selling point is the ability to stream torrent data via Go's standard io interfaces, enabling efficient, on-demand data access.
Full-featured BitTorrent client package and utilities
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Has been used 24/7 in production since 2014, demonstrating stability and real-world testing in downstream services like Gopeed and autobrr.
Exposes torrents through Go's idiomatic io interfaces, enabling seamless streaming and random access for Go applications without external dependencies.
Supports DHT, PEX, uTP, WebTorrent, BitTorrent v2, and many BEPs, ensuring compatibility with modern and legacy torrent networks.
Provides multiple storage options (blob, file, bolt, etc.) and allows custom implementations, such as for cloud storage or databases, as noted in the README.
Implemented solely in Go, making it unsuitable for projects in other languages without additional wrapping layers, which adds complexity for polyglot teams.
While library-focused, it requires deep understanding of BitTorrent protocols and Go's concurrency model, with limited beginner-friendly tutorials beyond basic examples.
The detailed changelog indicates frequent updates, which can lead to breaking changes that require significant effort to adapt in dependent projects.