English | Português | 中文 | 日本語 | Русский | Español | Deutsch | Українська

BATorrent

BATorrent

A BitTorrent client that shows your downloads as cover art instead of spreadsheet rows.

Release Downloads License Platforms Microsoft Store

BATorrent — your downloads as a wall of cover art

BATorrent is a desktop torrent client built on the [libtorrent](https://www.libtorrent.org/) engine, the same one qBittorrent and Deluge use. The front end reads each torrent's name, looks up the matching poster (movies and shows from TMDB, games from IGDB), and lays your downloads out as a grid of covers instead of a list of filenames. The covers sit on top of a client that actually holds up, and on an engine that's been [tuned, not just shipped stock](#the-engine). It's free and open source. No ads, no telemetry, no "Pro" tier, no account. The only network request it makes on its own is the update check against GitHub, and there's a switch to turn that off. If you want to confirm that, the code is [`updater.cpp`](src/services/integrations/updater.cpp). ## Why I built it I'm one developer in Brazil. I wanted a torrent client that took privacy seriously, ran natively on Windows, macOS and Linux, and didn't look like it was designed in 2009. I couldn't find one I liked, so I wrote it. It's MIT-licensed, which means no telemetry can be slipped in later and nobody can buy the project and bolt ads onto it. The interface ships in nine languages, because "useful" shouldn't mean "English only." ## The interface

Dense list view for when you want detail over decoration

Command palette (Ctrl/⌘+K): fuzzy-find any torrent or action

Sakura, one of the built-in themes

- **Cover art.** It resolves posters from the torrent name and shows them in a grid. One click switches to a dense list when you want detail over decoration. - **Six themes.** Dark, Light, Midnight, Sakura, Dark Star, and a Custom theme where you pick your own background and accent colour. Each supports optional anime accent art. - **Command palette.** Ctrl/⌘+K opens a fuzzy finder for any torrent or action: pause all, toggle alternate speed, jump to any page, no mouse required. - **Live status.** A real-time speed graph, state-coloured progress bars, and a tray popup with current speeds and ETA. ## What it does **Watch it in the app.** There's a built-in video player (FFmpeg-backed, so it plays MKV, AVI and WebM directly) and you can start watching while the file is still downloading, it just fetches the beginning first. It searches and downloads subtitles for you (via SubDL), auto-loads sidecar `.srt`/`.vtt` files, and lets you nudge the sync live. On completion it can refresh a Plex, Jellyfin or Emby library. **Instant playback with debrid.** Connect a [Real-Debrid](https://real-debrid.com) or [TorBox](https://torbox.app) account and, when a magnet is already cached on their side, BATorrent unrestricts the link and streams it straight into the built-in player, no local download or seeding needed. **Games, not just video.** Game torrents get their cover art too (via IGDB). Search game catalogs, download, and then install and launch from inside the app, so your pirated library behaves a bit like a Steam list instead of a folder of setup files. **Discover.** A browsable Netflix-style front page (trending posters, a rotating hero) so you can find something to grab without leaving the app.

Discover — a browsable front page of trending posters

**Privacy.** Bind to a specific VPN interface with a kill switch that drops all traffic if the tunnel goes down. Private-tracker mode, a Tor preset, anonymous handshake, and anti-leecher client blocking. There's a built-in IP-leak test to confirm it's working. **Finding and adding.** Built-in search (including open CIS/RuTor sources that need no login), Smart Paste that recognises a magnet, `.torrent`, `thunder://` link or info hash on Ctrl+V, RSS auto-download with regex filters, a watch folder, and drag-and-drop.

Built-in search — cover art, ratings, and an instant best match

**Remote control.** A browser WebUI with QR pairing: scan the code from your phone instead of typing IP addresses. The QR is generated on your machine and the address never leaves it. **Organising.** Auto-extract archives on completion, sort with categories and tags, set per-torrent and global ratio and time limits, and schedule bandwidth by hour and day. **Notifications.** Native desktop alerts, Telegram messages, and Discord Rich Presence.
Full feature list Per-file priority, sequential download, automatic tracker injection, content-layout control, excluded-file regex, separate temp download path, a completed state with seeding windows, auto-pause on file errors, global and per-torrent ratio and time limits, a bandwidth scheduler by hour and day, import from qBittorrent, `.torrent` creation, a torrent inspector, IP blocklists, protocol encryption, a Gitee update mirror, auto-shutdown when downloads finish, a Windows Defender exclusion helper, full backup and restore, recently-removed history, force start, a built-in log viewer with diagnostics and an IP-leak test, locale-aware formatting, and keyboard shortcuts.
## The engine Most torrent apps link stock libtorrent. BATorrent ships a small patched fork of it, so it can change engine behaviour the public API can't reach: - **Faster pipeline ramp.** On a high-bandwidth, high-latency link the stock request pipeline grows one step at a time; the fork grows it geometrically, so it fills a fat pipe in a fraction of the round-trips. Measured at roughly +27% on a fast link in the project's own A/B benchmark, with none of stock's run-to-run stalls, and it never regresses. - **Same-country peer bias.** An offline GeoIP database (db-ip Lite) tags each peer by country, and the fork's peer ranking prefers peers in your own country when it has a choice, which tends to mean lower latency and fewer throttled cross-border routes. Both are compile-time features of the fork, off in a stock build, and are applied as versioned patches under [`third_party/patches/`](third_party/patches) rather than a vendored copy. ## Install | Platform | Download | Requirements | |---|---|---| | **Windows** | [Microsoft Store](https://apps.microsoft.com/detail/9n4l3tq24rc6), [Installer](https://batorrent.com/win), or [Portable](https://batorrent.com/portable) | Windows 10 or later | | **macOS** | `brew install --cask Mateuscruz19/batorrent/batorrent` or the [`.dmg`](https://batorrent.com/mac) | macOS 12+, Apple Silicon | | **Linux** | [AppImage](https://batorrent.com/linux) | glibc 2.35+ | Once it's running, drop a `.torrent` file or a magnet link onto the window. macOS note: the app isn't notarised yet (Apple's developer program is a paid subscription). Homebrew is the smoothest route because brew removes the quarantine flag, so it opens without a Gatekeeper prompt. If you use the .dmg instead, right-click the app and choose Open the first time.
Build from source **Requirements:** C++17, CMake 3.16+, Qt 6 (`Widgets`, `Network`, `Svg`, `Multimedia`), libtorrent-rasterbar 2.0+, Boost, and optionally Qt6Keychain. ```bash # Debian / Ubuntu sudo apt install build-essential cmake qt6-base-dev qt6-svg-dev qt6-multimedia-dev \ libtorrent-rasterbar-dev libboost-dev libssl-dev cmake -B build -DCMAKE_BUILD_TYPE=Release && cmake --build build -j && ./build/BATorrent ``` On macOS: `brew install qt libtorrent-rasterbar boost openssl`. On Windows: the Qt installer plus `vcpkg install libtorrent:x64-windows`.
Quality and security

CodeQL Sanitizers Quality Gate CodeFactor OpenSSF Best Practices

- A Catch2 test suite (unit, security, memory) runs on every CI build; new backend behaviour ships with a test. - The build passes clean under AddressSanitizer and UndefinedBehaviorSanitizer. - Before each release the code is reviewed for memory and thread safety, WebUI authentication, injection, path traversal, input validation, and secret handling. Secrets go in the OS keychain rather than plaintext, and the WebUI only opens to the network after you set a password.
## Contributing Issues and pull requests are welcome. For anything non-trivial, open an issue first so we can agree on the approach. Bug reports are most useful with your platform and version (from `Help → About`) and the steps to reproduce. Translations are especially appreciated. ## License and trademark The **code** is [MIT](LICENSE), © 2024–2026 Mateus Cruz. Fork it, build on it, ship it. The **name "BATorrent" and the logo** are the project's identity and are not covered by the code license. If you redistribute a fork, please give it its own name so users can tell which build is the official one. The details are in [TRADEMARK.md](TRADEMARK.md). Good-faith forks and contributions are welcome. Made in Brazil.