mrkeyoor.com_
Sun 06 Sept 16:34 UTC
Self-Hostedevaluationupdated 06 Sept 2026

qBittorrent review

qBittorrent is a free BitTorrent client built with C++, Qt, and libtorrent. It combines a desktop interface with a browser-controlled headless edition, torrent search, RSS rules, queueing, bandwidth controls, and torrent creation without advertising.

Verdict

Our qBittorrent run installed 36 Python packages and built the nova3 search engine in 6 seconds, but pytest collected 0 tests, so it does not validate the 1.3-million-line C++ client. For ordinary users, the official binaries remain an easy recommendation because the client is active, ad-free, and unusually configurable. Source builders and headless operators should treat the native dependency stack, Web UI security, search-plugin trust, and destructive file actions as real operating concerns.

We ran it

Lab card: what happened when we ran qBittorrentScreenshot of qBittorrent (www.qbittorrent.org)
Install✓ · 33s36 packages · 37 MB
Build✓ · 6s
Tests✗ · 5s0 passed · 0 failed of 0 (pytest)
Known vulns0(pip-audit)
Repo1760 files~1,338,712 lines of source · 61.4 MB · 8 CI workflows · tests dir

Answers from our run

Does qBittorrent build from source?

Dependencies installed in 33 seconds (36 packages), and the build succeeded in 6 seconds. We cloned commit 13f4694 into a clean Debian container with 3 CPUs and no project-specific setup.

Do qBittorrent's tests pass?

Yes: 0 of 0 passed when we ran the project's own test command (pytest). Some failures need services or credentials a bare container does not have.

Does qBittorrent have known vulnerabilities in its dependencies?

pip-audit found none in the dependency tree at the time of our run.

Who should not use qBittorrent?

Source builders who read our green build as proof of the desktop application: our 6-second build covered only src/searchengine/nova3, not the C++ and Qt client.

What are the alternatives to qBittorrent?

Transmission, Deluge, aria2. Our qBittorrent run installed 36 Python packages and built the nova3 search engine in 6 seconds, but pytest collected 0 tests, so it does not validate the 1.

Setup3/5Nova built quickly; the native client needs a broad C++ stack
Docs4/5Install and nox docs are useful, while the root README is brief
Community5/539,947 stars and active issues, pull requests, and releases
Maturity4/5v5.2.3 is maintained; the measured Python tests collected nothing

Who it’s for

Desktop users who want a long-running BitTorrent client with detailed file, peer, tracker, queue, and bandwidth controls.
Home-server operators who want the qbittorrent-nox process and a Web UI that closely follows the desktop interface.
Users who rely on RSS filters or simultaneous searches across installed torrent-search plugins.
Contributors comfortable with CMake, C++, Qt, libtorrent, and a separate Python search subsystem.

Who it’s NOT for

Source builders who read our green build as proof of the desktop application: our 6-second build covered only src/searchengine/nova3, not the C++ and Qt client.
Maintainers who require executable tests for the Python search engine: pytest exited 5 after collecting 0 tests in our checkout.
Users who mix pre-existing files with torrent save paths and casually choose also delete files: issue 24860 reports qBittorrent deleting an adopted file it had not downloaded.
Windows users who require Proton VPN IPv6 with qBittorrent bound to all addresses: issue 24881 reports repeatable hangs and an IPv4-only workaround.
Mac users depending on the Homebrew cask without checking current signing support: open issue 24052 tracks Homebrew's move away from unsigned apps.

Setup reality

Our sandbox installed the Python nova3 search project in 33 seconds, adding 36 packages and using 37 MB. Its byte-compile build passed in 6 seconds. Pytest then exited 5 after 5 seconds because it collected 0 tests. Pip-audit found 0 known vulnerabilities.

Those results do not cover the C++ client. A supported native build needs CMake, Qt 6.6 or newer, Boost, libtorrent, OpenSSL, and zlib. Python is optional at runtime for search. The headless edition starts a Web UI and generates a temporary administrator password until you set one.

The full checkout held 1,760 files, roughly 1,338,712 source lines, and 61.4 MB. It has eight CI workflows and no Dockerfile. Most users should install an official binary or a trusted distribution package; source builders must match the documented native dependency ranges.

qBittorrent pairs a desktop client with a close Web UI counterpart

qBittorrent is a C++ and Qt client built on libtorrent. Its desktop application covers magnet links, DHT, peer exchange, private torrents, connection encryption, queueing, file priorities, bandwidth schedules, IP filtering, and torrent creation. Search plugins can query several torrent sites at once, while RSS filters can add matching items automatically. The project website emphasizes an ad-free interface across Windows, Linux, macOS, FreeBSD, and OS/2.

This is an old and broad application, not a thin wrapper around libtorrent. commit 13f4694 contained 1,760 files and roughly 1,338,712 lines of source in a 61.4 MB checkout. That total includes the graphical client, Web UI, translations, platform packaging, documentation, and the Python search engine. A reviewer has to separate those parts because a successful check in one directory says little about native compilation or desktop behavior elsewhere.

The nox edition moves control into a browser

qbittorrent-nox builds the client without the Qt graphical interface and is intended to be controlled through its Web UI. The manual says that interface listens on localhost port 8080 by default with administrator user admin. When no password is configured, startup prints a temporary random one. Operators can choose another Web UI port, run as a daemon, place the profile in a chosen directory, and pass torrent URLs or files at launch.

Our dependency result belongs to a different component. The src/searchengine/nova3 development environment installed 36 Python packages in 33 seconds and occupied 37 MB. It did not install the nox daemon or exercise the browser interface. A server deployment still needs the native qBittorrent package, persistent configuration and download storage, a chosen listening interface, and an authenticated Web UI that is exposed only through an intentional network boundary.

What happened when we ran it

Our sandbox entered src/searchengine/nova3, installed its Python environment in 33 seconds, and completed the defined byte-compile build in 6 seconds. The run used an unprivileged Python 3.12 Debian container with 3 CPUs, 8 GB of RAM, and no secrets. Pip-audit reported 0 known vulnerabilities across the 36 installed packages. Those are useful facts about the search code's contributor setup, not a build of the downloadable qBittorrent application.

The test command failed with exit code 5 after 5 seconds. Pytest said no tests ran in 0.00s, yielding 0 passed and 0 failed out of 0. The nova3 justfile points the test recipe at tests/*.py, while the measured checkout contained no collected cases. There was no assertion failure to diagnose. The finding is simpler: the Python search project had no executable pytest coverage under the supplied command at commit 13f4694.

Native source builds require six major dependencies

The INSTALL document specifies CMake, Qt 6.6 or newer, Boost 1.76 or newer, supported libtorrent 1.2 or 2.0 releases, OpenSSL 3.0.2 or newer, and zlib 1.2.11 or newer. Python 3.13 or newer is optional and used by the bundled search engine. CMake can produce the graphical build or set GUI=OFF for qBittorrent-nox. The project warns that older dependency combinations may compile but are unsupported for bug reports.

Our 6-second Python build did not invoke CMake, a C++ compiler, Qt, or libtorrent. It ran inside a Python 3.12 image, which is enough for the standalone nova3 project metadata but sits below the full application's documented optional search runtime. That mismatch is exactly why the green build cannot be promoted into a claim about qBittorrent as a whole. Users wanting the client should prefer a signed official binary or a distribution package unless they have a reason to own this native matrix.

Search plugins execute Python and need a trust policy

The search feature is more than a URL list. nova3 discovers engine modules, imports their Python classes, runs searches in worker processes, and returns structured results to qBittorrent. Its source enables a SOCKS proxy helper by default for plugins. This makes simultaneous, category-aware search possible, but an installed plugin is executable code that also depends on an external site's markup and behavior. Install plugins from sources you trust and expect individual engines to break when sites change.

The repository gives the Python layer type checks, static analyzers, formatting rules, and a pytest command. Our scan also found eight CI workflow files across the full project and no Dockerfile. Yet 0 tests were collected for nova3 in the measured 5-second run. A team modifying search or distributing plugins should add direct tests for parsing, URL handling, proxy behavior, failures, and malicious input rather than assuming the main C++ project's CI covers those paths.

Version 5.2.3 is current while the issue queue stays busy

GitHub showed 39,947 stars, 2,692 open issues and pull requests, and a last push on September 6, 2026. Issue and pull-request activity continued on the same day. Release 5.2.3 was published July 7 with fixes for a database-transaction deadlock, tracker conversion, Web Seed encoding, Web UI selectors, RSS intervals, search-plugin counting, and Windows file attributes. The combined open count is not a defect count, though its size makes searching before reporting a problem worthwhile.

The measured 33-second install and 6-second search build make nova3 approachable, while the zero-test result leaves that component under-verified. qBittorrent itself remains a strong choice for users who want detailed control without ads, especially through official packages. Keep downloads in dedicated directories before using destructive removal, lock down the nox Web UI, test VPN bindings on the target OS, and reserve source builds for teams prepared to maintain the native dependency set.

Alternatives

ProjectWhat it isPick it when
TransmissionA BitTorrent client with desktop, daemon, command-line, and remote-control options.pick this instead when a simpler interface and a smaller set of day-to-day controls are more useful than qBittorrent's search and RSS depth.
DelugeA Python BitTorrent client with daemon, desktop, web, and plugin-driven operation.pick this instead when a daemon-and-plugin architecture is more important than qBittorrent's Qt interface.
aria2A command-line downloader for BitTorrent, HTTP, FTP, SFTP, and Metalink.pick this instead when scripts and multiple download protocols matter more than a torrent-focused graphical interface.

What people are saying

  1. [velocity-scout] qbittorrent/qBittorrent

Sources

  1. qBittorrent README
  2. qBittorrent repository
  3. qBittorrent v5.2.3 release
  4. qBittorrent source installation guide
  5. qBittorrent nox manual
  6. nova3 development guide
  7. Pre-existing file deletion report
  8. Windows Proton VPN IPv6 hang report

More self-hosted reviews

hydra · codex-lb · livekit · harbor · go2rtc · rook · the whole board →