mrkeyoor.com_
Wed 21 Oct 21:20 UTC
Self-Hostedevaluationupdated 19 Oct 2026

qBittorrent review

qBittorrent is a BitTorrent client written in C++ and Qt that uses libtorrent. It has graphical and headless builds, browser controls, and an optional Python runtime dependency for bundled search.

+116stars / 7d
Verdict

Our qBittorrent search build passed in 3 seconds, but pytest ran no tests and exited 5. Consider a packaged-client trial for desktop or headless torrent work; the supplied run leaves native operation unassessed. If search matters, check your plugins: issue 25056 includes both a reported recovery after removing two plugins and a separate later report of blank dialogs.

We ran it

Lab card: what happened when we ran qBittorrentScreenshot of qBittorrent (www.qbittorrent.org)
Install✓ · 19s35 packages · 38 MB
Build✓ · 3s
Tests✗ · 4s0 passed · 0 failed of 0 (pytest)
Known vulns0(pip-audit)
Repo1762 files~1,420,009 lines of source · 65 MB · 8 CI workflows · tests dir

Answers from our run

Does qBittorrent build from source?

Dependencies installed in 19 seconds (35 packages), and the build succeeded in 3 seconds. We cloned commit df402f9 into a clean Debian container with 3 CPUs and no project-specific setup.

Do qBittorrent's tests pass?

No. The project's own test command finished in 4 seconds and reported 0 passed, 0 failed (pytest).

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 require upstream support while using older, unsupported dependency configurations.

What are the alternatives to qBittorrent?

Transmission, aria2. Our qBittorrent search build passed in 3 seconds, but pytest ran no tests and exited 5.

SetupN/AThe Python component installed, but native-client installation in a supported environment was not assessed.
DocsN/AThe README and INSTALL requirements were supplied; documentation usability across supported platforms was not tested.
CommunityN/ARepository metadata and issue discussion show activity, but support response quality was not systematically assessed.
MaturityN/AThe measured Python run did not exercise native transfers, browser operation, or desktop reliability.

Discussed on

  1. hnRCE Vulnerability in QBittorrent376 points
  2. hnWindows Defender blocks qBittorrent333 points
  3. hnQBittorrent v4.5.0: The Hitchhiker's Guide to Legible Text224 points
  4. hnQBittorrent: Open-Source, Lightweight BitTorrent Client with No Ads73 points
  5. hnUnauthenticated path traversal file reading on qBittorrent for Windows via WebUi6 points

Who it’s for

Desktop users considering a graphical BitTorrent client.
Server operators considering qbittorrent-nox and browser controls.
Contributors who need to distinguish the measured Python search component from the native application.

Who it’s NOT for

Source builders who require upstream support while using older, unsupported dependency configurations.
Users who need this review to establish native transfer reliability or browser operation: neither was exercised by the supplied run.
Users choosing chiefly for search without checking their plugins. Issue 25056 includes an initially failing setup, a reported recovery after removing two plugins, and a separate later report of blank dialogs.
Operators whose scripts need HTTP, FTP, or SFTP downloads alongside BitTorrent: aria2 explicitly documents those protocols.

Setup reality

Our sandbox installed the Python search project at commit df402f9 in 19 seconds, recorded 35 dependencies, and used 38 MB on disk. Its build passed in 3 seconds. The test command failed with exit 5 after 4 seconds: pytest reported 0 passed and 0 failed out of 0, ending with "no tests ran in 0.00s".

The measured directory was src/searchengine/nova3. Pip-audit reported 0 known vulnerabilities, but audited package coverage is unverified: the harness records packages=0 despite 35 recorded dependencies.

The current upstream INSTALL document lists the separate native dependency stack, including Qt 6.6 or newer within Qt 6 and optional Python 3.13 or newer for search. These requirements do not establish the runtime versions in the measured checkout. Native compilation, application startup, browser operation, and transfers remain unassessed.

Choose by the application workflow

A successful Python search build does not establish whether qBittorrent suits your desktop or server. qBittorrent is a C++ and Qt BitTorrent client built on libtorrent. Its INSTALL document describes graphical and headless builds; the latter produces qbittorrent-nox. Release notes also document its Web UI.

For ordinary downloading, start by evaluating a packaged client on your machine. For a server, decide where downloads will live and how you will reach the browser controls. These are recommended adoption checks, not workflows completed in this review.

What happened when we ran it

Our qBittorrent search build passed in 3 seconds, but pytest ran no tests and exited 5. The sandbox run used commit df402f9 on October 15, 2026, in src/searchengine/nova3. Installation succeeded in 19 seconds, recorded 35 dependencies, and used 38 MB on disk.

The test command failed after 4 seconds, reporting 0 passed and 0 failed out of 0. Its log ended with no tests ran in 0.00s. The supplied tail shows no assertion failure and does not explain the empty collection. This result establishes neither a passing test suite nor a broken torrent engine.

Pip-audit reported 0 known vulnerabilities. Its package coverage is unverified because the harness records packages=0 despite the 35 recorded dependencies. Do not extend that result to native libraries or separately acquired search plugins.

The checkout contained 1,762 files, approximately 1,420,009 source lines, and occupied 65 MB. The scan found eight CI workflow files, a tests directory, and no Dockerfile. Those repository signals do not replace executed tests.

The recorded sandbox configuration had 3 CPUs, 8 GB of RAM, and image label ghcr.io/astral-sh/uv:python3.12-bookworm. The label does not establish actual runtime or operating-system versions. The run did not assess native compilation, application startup, browser operation, or transfers.

Check native requirements before building from source

The current INSTALL document lists Boost, libtorrent-rasterbar, OpenSSL, Qt, zlib, and CMake. It specifies Qt 6.6 or newer within Qt 6 and Python 3.13 or newer as an optional runtime dependency for bundled search. These are current upstream requirements, separate from the measured checkout's unverified runtime versions.

Upstream says older dependency combinations may build but receive no support. If your distribution's libraries fall outside the supported configuration, consider a packaged client before taking on a source build. The documented headless source route sets GUI=OFF and produces qbittorrent-nox; this review did not execute that route.

The search report includes a recovery

Issue 25056 began with an October 12 report of plugin-loading errors and frozen error dialogs in qBittorrent 5.2.4 on Ubuntu 26.04.1 LTS.

On October 15, the original reporter said removing tokyotoshokanplugin and darklibriaplugin restored plugin loading and search was working so far. That is an attributed outcome for this reporter's setup, not a verified general fix.

A separate commenter on October 18 reported blank dialogs, no listed plugins, and a screen that would not close with version 5.2.4. The supplied discussion does not establish that this later report has the same cause or resolution.

If bundled search drives your choice, check your intended plugins on your operating system before moving your downloads. For context about the separate plugin repository, see the existing search-plugins review. The issue reports were not reproduced in the sandbox.

Read the version 5.2.4 browser changes

The September 28, 2026 release notes say the Web UI now opens only HTTP(S) URLs from RSS articles and search results. They also list escaping the add-torrent window title and using a safe property to set element titles. These are documented changes, not browser-security tests performed here.

Supplied repository metadata records a last push on October 18, 2026, and 2,730 open issues and pull requests combined when observed on October 19. The combined count is not a defect count or a measure of support response quality.

Compare alternatives by the job

Transmission provides desktop applications, a headless daemon, and a web interface. Its README supports comparing those workflows with qBittorrent, but this review did not compare their usability. Transmission also says its documentation is currently out of date.

aria2 supports command-line downloads over HTTP(S), FTP, SFTP, BitTorrent, and Metalink. Its README makes it a relevant alternative when scripts need several download protocols through one tool.

For qBittorrent, the next useful step is a packaged-client trial with a lawful torrent, your intended storage, and any search plugins you rely on. Check browser access on the actual server if you choose headless operation.

Alternatives

ProjectWhat it isPick it when
TransmissionA BitTorrent client with desktop applications, a headless daemon, and a web interface.Consider it when comparing desktop or daemon workflows; interface usability was not tested in this review.
aria2A command-line downloader supporting HTTP(S), FTP, SFTP, BitTorrent, and Metalink.Choose it for evaluation when scripts need several download protocols through one command-line tool.

What people are saying

  1. [github-trending] qbittorrent/search-plugins

Sources

  1. qBittorrent repository and README
  2. Native installation requirements
  3. qBittorrent 5.2.4 release notes
  4. Search plugins not loading, issue 25056
  5. Transmission README
  6. aria2 README

More self-hosted reviews

immich-go · itsaplan · playport · edge-smart-doh · Comma · ProsperoEden · the whole board →