Skip to content

A modern, full-featured BitTorrent client for Desktop, ChromeOS, and Android

License

Notifications You must be signed in to change notification settings

kzahel/JSTorrent

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1,476 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

JSTorrent

JSTorrent

A modern, full-featured BitTorrent client built on a shared TypeScript engine that runs everywhere.

Google Play | Desktop App | Chrome Web Store | Website

Platforms

Platform Status Notes
Desktop App ✅ Available Standalone app for macOS, Windows, and Linux (download)
Chrome Extension ✅ Available Chrome, Edge, Brave, and other Chromium browsers
Android ✅ Available Google Play — native app with QuickJS engine
ChromeOS ✅ Available Extension + Android companion app
iOS 🚧 Planned Sideload only — MVP plan

Architecture

One TypeScript BitTorrent engine powers all platforms. Platform-specific native code handles networking and disk I/O, while the core protocol logic remains shared and tested across environments.

  • Desktop: Tauri (Rust) — lightweight native window, no Electron. Small download, low memory footprint.
  • Android: Native Kotlin + Jetpack Compose UI. The engine runs in-process via QuickJS with JNI bindings for I/O.
  • Extension: Runs in the browser with a Rust sidecar (io-daemon) for disk and network access.

Features

BitTorrent Protocol

  • ✅ Full BitTorrent protocol implementation
  • ✅ Magnet link support
  • ✅ .torrent file support
  • ✅ Protocol encryption (MSE/PE)
  • ✅ Seeding and leeching
  • ✅ Tit-for-tat choking algorithm
  • ✅ Optimistic unchoking
  • ✅ Rarest-first piece selection
  • ✅ Endgame mode
  • ✅ Request pipelining
  • ✅ SHA1 piece verification
  • ✅ Fast extension (BEP 6)
  • ✅ Extension protocol (BEP 10)
  • ✅ Metadata exchange / magnet resolution (BEP 9)

Networking

  • ✅ UPnP port mapping
  • ✅ DHT (Distributed Hash Table)
  • ✅ PEX (Peer Exchange)
  • ✅ UDP and HTTP trackers
  • ✅ IPv4 and IPv6

Performance

  • ✅ Native host for fast networking and disk I/O
  • ✅ File skipping and priorities
  • ✅ Bandwidth throttling
  • ✅ Connection limits

User Experience

  • ✅ Traditional torrent client UI
  • ✅ Customizable interface
  • ✅ Super responsive
  • ✅ Dark mode
  • ✅ Drag and drop torrents
  • ✅ Click magnet links to add
  • ✅ Per-torrent and global statistics

About

JSTorrent started as a Chrome App, was rebuilt as a Chrome Extension when Apps were deprecated, and has since expanded to Android and desktop platforms—all sharing the same TypeScript engine.

Written in TypeScript with comprehensive test coverage, including integration tests against libtorrent.

Development

See DEVELOPMENT.md for build instructions and project structure.

License

MIT