A minimal, phone-friendly Web UI for qBittorrent. It replaces qBittorrent's built-in browser interface with a cleaner one that works just as well on a phone as on a desktop.
Built with React 19, TypeScript 7, Vite 8, and Tailwind CSS 4.
On a desktop, as a table with a torrent's details below it, and as cards:
On a phone, as cards and as a table:
In Safari on an iPhone, where the list runs on behind the address bar:
- Torrent list as a table or as cards. In the table you can show, hide (also by right-clicking a header), drag, and resize columns, and sort by any of them. The layout is remembered on each device.
- Filters by name, status, category, tag, and tracker, each showing how many torrents it matches. Save a set of filters as a view to apply it again in one tap.
- Torrent details: pieces, transfer facts, files (choose what to download, rename, and save finished files with qBittorrent 5.3), trackers, peers with country flags, and every per-torrent setting: limits, location, queue, category, tags, and more.
- Selecting and actions: click a torrent to open its details in a panel below the list, Ctrl or Cmd-click and Shift-click to select several, and right-click for every action. On phones, tap a torrent for its details and hold one to start selecting.
- Bulk actions for several torrents at once, from the selection bar or the right-click menu.
- Add torrents from links or .torrent files with all of qBittorrent's options. For a single magnet link or .torrent, see its files first and choose which to download. Drop .torrent files anywhere on the page, or let the browser open magnet links here. Create torrents from files on the server.
- RSS feeds and folders, articles, and download rules, including import and export.
- Search with qBittorrent's search plugins, and plugin management.
- Logs, statistics with a live speed graph, connection status, and the alternative speed limit switch. A notice says when qBittorrent can't be reached.
- Notifications when a torrent finishes, if you turn them on.
- Keyboard shortcuts for the torrent list. Press
?to see them. - 30 languages, listed below.
- Accessibility options, described below.
- Settings: every qBittorrent preference, shown only when your qBittorrent version has it.
- A sidebar you can hide on wide screens.
- Light and dark themes that follow your device, and a layout made for phones, including when added to the home screen. Under Settings > App > Appearance you can also hide the speeds and the speed limit button in the header.
- Text size: Small, Default, Large, or Larger under Settings > App > Appearance. Spacing, icons, and table columns grow with the text, and the sizes build on the browser's own text size, so a larger default set there still counts. On iPhone and iPad you can still pinch to zoom.
- Color-blind-safe colors are applied throughout: every status, speed, ratio, and pieces color comes from the Okabe–Ito set (bluish green, blue, orange, and vermillion), chosen to stay easy to tell apart with any kind of color blindness. Colors never carry meaning alone either: statuses have labels, speeds have arrows, the upload line in the speed graph is dashed, and pieces being downloaded are striped.
- Screen readers hear when the selection, the sort order, the view, or the number of matching torrents changes. Icon buttons have names, and the tab bar's names stay readable to screen readers when they are hidden on screen.
- Tab bar labels can be turned off on phones under Settings > App > Appearance, leaving larger icons.
- Keyboard shortcuts for the torrent list. Press
?to see them.
| Language | Shown as | Improve it |
|---|---|---|
| English | English | The original |
| Arabic | العربية | Edit ar.json |
| Bengali | বাংলা | Edit bn.json |
| Bulgarian | Български | Edit bg.json |
| Chinese (Simplified) | 中文(简体) | Edit zh-Hans.json |
| Chinese (Traditional) | 中文(繁體) | Edit zh-Hant.json |
| Czech | Čeština | Edit cs.json |
| Dutch | Nederlands | Edit nl.json |
| French | Français | Edit fr.json |
| German | Deutsch | Edit de.json |
| Greek | Ελληνικά | Edit el.json |
| Hebrew | עברית | Edit he.json |
| Hindi | हिन्दी | Edit hi.json |
| Hungarian | Magyar | Edit hu.json |
| Indonesian | Bahasa Indonesia | Edit id.json |
| Italian | Italiano | Edit it.json |
| Japanese | 日本語 | Edit ja.json |
| Korean | 한국어 | Edit ko.json |
| Persian | فارسی | Edit fa.json |
| Polish | Polski | Edit pl.json |
| Portuguese (Brazil) | Português (Brasil) | Edit pt-BR.json |
| Portuguese (Portugal) | Português (Portugal) | Edit pt.json |
| Romanian | Română | Edit ro.json |
| Russian | Русский | Edit ru.json |
| Spanish (Spain) | Español | Edit es.json |
| Swedish | Svenska | Edit sv.json |
| Thai | ไทย | Edit th.json |
| Turkish | Türkçe | Edit tr.json |
| Ukrainian | Українська | Edit uk.json |
| Vietnamese | Tiếng Việt | Edit vi.json |
The language follows the browser, or pick one under Settings > App > Appearance. For Arabic, Hebrew, and Persian the page is mirrored, right to left. See Translations to correct one or add one: no programming needed.
qBittorrent 5.0 or newer. A few features need a newer version and stay hidden or explain themselves on older ones: SSL settings for torrents need 5.1, seeing a torrent's files before adding it needs 5.2, and saving finished files from the browser needs 5.3.
- Download
qbminimal-release.zipfrom the latest release. - Unzip it. You get a folder named
qbminimalwith apublicfolder inside it. - Copy the
qbminimalfolder to the computer that runs qBittorrent. - In qBittorrent, open Tools > Options > Web UI, turn on Use alternative Web UI, and set Files location to the
qbminimalfolder. Choose the folder that containspublic, notpublicitself. - Open the Web UI address in your browser and sign in with your qBittorrent username and password.
- Replace the contents of the
qbminimalfolder with the new release. - Restart qBittorrent, or turn Use alternative Web UI off, apply, and turn it on again. qBittorrent keeps the page in memory and only reads it again when the file looks newer than the copy it holds, and files unpacked from a zip keep the time they were built.
- Reload the page. Settings > App > About shows the version that's running.
Needs Node.js 26 or newer.
npm install
npm run devThe dev server sends API requests under /api to qBittorrent at http://localhost:8080. Change server.proxy in vite.config.ts to point at yours.
Checks, also run by CI on every push and pull request:
npm run lint
npm test
npm run typechecknpm run typecheck uses TypeScript 7. The linter uses TypeScript 6.0 until typescript-eslint supports 7. Dependabot checks every week for newer packages and GitHub Actions and opens pull requests for them.
Help with translations is very welcome, and needs no programming: each language is one JSON file in src/i18n/locales that you can edit right on GitHub. The Edit links in the language list open your language's file. Change the text on the right of each colon and propose the change; a check on the pull request names anything it can't use. CONTRIBUTING.md has the few rules, and how to add a new language. You can also report a wrong translation without editing anything.
Where qBittorrent's own translations have the same text, qbminimal uses their wording and terms, so the words match what you see in qBittorrent. The rest was machine translated and hasn't been reviewed by native speakers yet.
npm run i18n:check lists text that a language doesn't cover yet, and lines whose {placeholders} don't match.
npm run packageThis builds into release/public and packs it as qbminimal-release.zip, the same layout the install steps describe.
Pushing a tag like v1.1.0 that matches the version in package.json runs the same build on GitHub and publishes the zip and its SHA-256 checksum as a release.
scripts/deploy.sh copies a release to a server over SSH with rsync, then checks that the server is serving it. Put your settings in .deploy.env, which git ignores:
DEPLOY_TARGET=user@host:/path/to/qbminimal
DEPLOY_URL=https://example.com/qbittorrent/Then run npm run deploy for the latest release, or scripts/deploy.sh --zip qbminimal-release.zip for a local build.
qbminimal is influenced by the original project qbitWebber.
Third-party components and their licenses are listed in THIRD_PARTY_NOTICES.md.
qbminimal is free software under the GNU General Public License v3.0.




