Convert Figma logo to code with AI

qbittorrent logoqBittorrent

qBittorrent BitTorrent client

26,874
3,872
26,874
2,753

Top Related Projects

Official Transmission BitTorrent client repository

1,520

Deluge BitTorrent client - Git mirror, PRs only

[Unofficial] qBittorrent Enhanced, based on qBittorrent

⚡️ Streaming torrent client for the web

an efficient feature complete C++ bittorrent implementation

5,474

Full-featured BitTorrent client package and utilities

Quick Overview

qBittorrent is a free and open-source BitTorrent client written in C++ and based on the Qt toolkit. It provides a feature-rich, user-friendly interface for downloading and sharing files using the BitTorrent protocol, with support for both desktop and web-based usage.

Pros

  • Cross-platform compatibility (Windows, macOS, Linux, FreeBSD)
  • Feature-rich, including a built-in search engine and RSS feed support
  • Lightweight and efficient, with low resource usage
  • Active development and community support

Cons

  • Some advanced features may be overwhelming for casual users
  • Occasional stability issues reported by some users
  • Limited customization options compared to some other clients
  • Web UI can be less responsive than the desktop interface

Getting Started

To get started with qBittorrent:

  1. Download the appropriate installer for your operating system from the official website: https://www.qbittorrent.org/download.php
  2. Install the application following the on-screen instructions
  3. Launch qBittorrent
  4. To add a torrent:
    • Click on the "+" button or go to File > Add Torrent File
    • Select a .torrent file or paste a magnet link
    • Choose the download location and start the download

For developers interested in contributing to the project:

  1. Fork the repository on GitHub
  2. Clone your fork: git clone https://github.com/yourusername/qBittorrent.git
  3. Set up the development environment following the instructions in the INSTALL file
  4. Make your changes and submit a pull request

Competitor Comparisons

Official Transmission BitTorrent client repository

Pros of Transmission

  • Lighter resource usage, making it ideal for low-power devices
  • Cross-platform support with native clients for various operating systems
  • Simple and intuitive user interface, suitable for beginners

Cons of Transmission

  • Fewer advanced features compared to qBittorrent
  • Less customizable interface and settings
  • Limited support for plugins or extensions

Code Comparison

Transmission (C):

static void
tr_peerMgrAddIncoming(tr_peerMgr* manager, tr_address const* addr, tr_port port, struct peer_atom** atom)
{
    assert(tr_isAddress(addr));
    struct tr_peer_info* info = getExistingPeer(manager, addr, port);
    if (info == NULL)
        info = createPeerInfo(manager, addr, port, false, atom);
}

qBittorrent (C++):

void Session::addTorrent(const AddTorrentParams &params)
{
    if (params.savePath.isEmpty())
        throw RuntimeError(tr("Invalid save path"));

    const TorrentID id = m_torrents.add(params);
    m_resumeDataStorage->saveTorrentResumeData(id);
}

Both projects use different programming languages and have distinct coding styles. Transmission's code appears more low-level and C-oriented, while qBittorrent's code is object-oriented C++.

1,520

Deluge BitTorrent client - Git mirror, PRs only

Pros of Deluge

  • More lightweight and resource-efficient
  • Highly customizable through its plugin system
  • Better suited for headless operation and remote management

Cons of Deluge

  • Less user-friendly interface, especially for beginners
  • Slower development cycle and less frequent updates
  • Limited built-in features compared to qBittorrent

Code Comparison

Deluge (Python):

class Core(component.Component):
    def __init__(self, config):
        component.Component.__init__(self, "Core")
        self.config = config

qBittorrent (C++):

class Application : public QApplication
{
    Q_OBJECT
public:
    Application(int &argc, char **argv);
};

Both projects use object-oriented programming, but Deluge is written in Python, making it more accessible for scripting and customization. qBittorrent, written in C++, potentially offers better performance for resource-intensive operations.

Deluge's plugin system allows for easy extensibility, while qBittorrent provides a more comprehensive set of built-in features. The choice between the two often depends on user preferences, system resources, and specific use cases.

[Unofficial] qBittorrent Enhanced, based on qBittorrent

Pros of qBittorrent-Enhanced-Edition

  • Additional features like subscription to RSS feeds and auto-categorization
  • Enhanced privacy options, including built-in search engine and tracker filters
  • More frequent updates and bug fixes

Cons of qBittorrent-Enhanced-Edition

  • Potentially less stable due to more frequent changes
  • May have a steeper learning curve for new users due to additional features
  • Not officially supported by the original qBittorrent team

Code Comparison

qBittorrent:

void TorrentHandle::setRatioLimit(qreal ratio)
{
    if (ratio < 0)
        ratio = NO_RATIO_LIMIT;
    m_nativeHandle.set_ratio(ratio);
}

qBittorrent-Enhanced-Edition:

void TorrentHandle::setRatioLimit(qreal ratio)
{
    if (ratio < 0)
        ratio = NO_RATIO_LIMIT;
    m_nativeHandle.set_ratio(ratio);
    m_ratioLimit = ratio;
}

The Enhanced Edition adds a line to store the ratio limit in a member variable, potentially for easier access or additional functionality.

Both projects are based on the same core, but qBittorrent-Enhanced-Edition offers more features and customization options at the potential cost of stability and simplicity. Users should choose based on their needs and experience level.

⚡️ Streaming torrent client for the web

Pros of WebTorrent

  • Browser-based: Can run directly in web browsers without additional software
  • JavaScript implementation: Easier integration with web applications
  • Streaming support: Allows playback before full download

Cons of WebTorrent

  • Limited protocol support: Primarily focuses on WebRTC and WebSeed
  • Smaller user base: Less widespread adoption compared to qBittorrent
  • Performance: May not match native applications for large-scale torrenting

Code Comparison

WebTorrent (JavaScript):

const WebTorrent = require('webtorrent')
const client = new WebTorrent()

client.add(torrentId, (torrent) => {
  torrent.files.forEach(file => file.createReadStream())
})

qBittorrent (C++):

#include <libtorrent/session.hpp>
#include <libtorrent/add_torrent_params.hpp>

lt::session ses;
lt::add_torrent_params p;
p.save_path = "./";
p.ti = std::make_shared<lt::torrent_info>("example.torrent");
ses.async_add_torrent(p);

The code snippets demonstrate the basic setup and torrent addition process for each project. WebTorrent uses a more straightforward JavaScript approach, while qBittorrent utilizes C++ with the libtorrent library, offering more low-level control but requiring more setup code.

an efficient feature complete C++ bittorrent implementation

Pros of libtorrent

  • More flexible and customizable as a library
  • Better performance and efficiency for large-scale applications
  • Supports a wider range of BitTorrent protocol features

Cons of libtorrent

  • Steeper learning curve for developers
  • Requires more effort to implement a full BitTorrent client
  • Less user-friendly for end-users without a GUI

Code Comparison

libtorrent (C++):

#include <libtorrent/session.hpp>
#include <libtorrent/add_torrent_params.hpp>
#include <libtorrent/torrent_handle.hpp>

lt::session ses;
lt::add_torrent_params p;
p.save_path = "./";
p.ti = std::make_shared<lt::torrent_info>("test.torrent");
lt::torrent_handle h = ses.add_torrent(p);

qBittorrent (C++/Qt):

#include "application.h"
#include "mainwindow.h"

int main(int argc, char *argv[])
{
    Application app(argc, argv);
    app.setOrganizationName("qBittorrent");
    MainWindow window;
    window.show();
    return app.exec();
}

The code comparison highlights the difference in approach between libtorrent as a library and qBittorrent as a full application. libtorrent provides low-level control over torrent operations, while qBittorrent focuses on creating a user-friendly GUI application.

5,474

Full-featured BitTorrent client package and utilities

Pros of torrent

  • Written in Go, offering better performance and concurrency
  • Lightweight library design, suitable for embedding in other applications
  • More flexible and customizable for developers

Cons of torrent

  • Less user-friendly for non-technical users
  • Fewer built-in features compared to qBittorrent
  • Smaller community and less documentation

Code Comparison

qBittorrent (C++):

void TorrentHandle::addTrackers(const QVector<TrackerEntry> &trackers)
{
    QVector<lt::announce_entry> announces;
    announces.reserve(trackers.size());
    for (const TrackerEntry &tracker : trackers)
        announces.append(lt::announce_entry(tracker.url));
    m_nativeHandle.add_tracker(announces);
}

torrent (Go):

func (cl *Client) AddTrackers(t *Torrent, announceList [][]string) error {
    cl.lock()
    defer cl.unlock()
    return t.AddTrackers(announceList)
}

The code comparison shows that torrent's Go implementation is more concise and straightforward, while qBittorrent's C++ code is more verbose but potentially offers finer control over the tracker addition process.

Convert Figma logo designs to code with AI

Visual Copilot

Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.

Try Visual Copilot

README

qBittorrent - A BitTorrent client in Qt

GitHub Actions CI Status Coverity Status


Description:

qBittorrent is a bittorrent client programmed in C++ / Qt that uses libtorrent (sometimes called libtorrent-rasterbar) by Arvid Norberg.

It aims to be a good alternative to all other bittorrent clients out there. qBittorrent is fast, stable and provides unicode support as well as many features.

The free IP to Country Lite database by DB-IP is used for resolving the countries of peers. The database is licensed under the Creative Commons Attribution 4.0 International License.

Installation:

Refer to the INSTALL file.

Public key:

Starting from v3.3.4 all source tarballs and binaries are signed.
The key currently used is 4096R/5B7CC9A2 with fingerprint D8F3DA77AAC6741053599C136E4A2D025B7CC9A2.
You can also download it from here.
PREVIOUSLY the following key was used to sign the v3.3.4 source tarballs and v3.3.4 Windows installer only: 4096R/520EC6F6 with fingerprint F4A5FD201B117B1C2AB590E2A1ACCAE4520EC6F6.

Misc:

For more information please visit: https://www.qbittorrent.org

or our wiki here: https://wiki.qbittorrent.org

Use the forum for troubleshooting before reporting bugs: https://forum.qbittorrent.org

Please report any bug (or feature request) to: https://bugs.qbittorrent.org

Official IRC channel: #qbittorrent on irc.libera.chat


sledgehammer999 <sledgehammer999@qbittorrent.org>