Transmission has been built from the ground up to be a powerful, yet lightweight BitTorrent client. Its simple, intuitive interface is designed to integrate tightly with whatever computing environment you choose to use.
Transmission strikes a balance between providing useful functionality without feature bloat. Furthermore, it is free for anyone to use or modify.
Features
- Uses fewer resources than other clients
- Native Mac, GTK+ and Qt GUI clients
- Daemon ideal for servers, embedded systems, and headless use
- All these can be remote controlled by Web and Terminal clients
- Local Peer Discovery
- Full encryption, DHT, µTP, PEX and Magnet Link support
Transmission runs natively on over five operating systems. Seamless configuration of your network, intelligent banning of peers who send corrupted data, and built in Peer Exchange are some of the features which enable Transmission to download your files as quickly as possible. All this is done in the background, without the user having to worry about complicated settings.
These days, bandwidth is a precious commodity. Transmission allows you to ration this commodity efficiently. You might want to queue your torrents for maximum performance. Or throttle their speed during peak periods.
Transmission easily lets you do both, and thus only works its hardest when you want it to. Support for Growl notifications and dock badging keep you updated with what's going on so you can get back to doing more important things.
NOTE: Transmission is fully open source, with most code licensed under the liberal MIT License and with select code licensed under the GNU General Public License.
What's New
Transmission 4.10.0 Beta 1
Highlights
- Added optional sequential downloading. (#4795)
- Added the option preferred-transport to settings.json, so that users can choose their preference between µTP and TCP. (#5939)
- Improved µTP download performance. (#6508)
- Added support for IPv6 and dual-stack UDP trackers. (#6687)
- Fixed 4.0.6 bug where Transmission might spam HTTP tracker announces. (#7086)
All Platforms
- Added ability to cache IP addresses used in global communications, and use it to fix UDP6 warning log spam. (#5329, #5510)
- Added support for sending an ipv4 parameter during the Extension Protocol handshake. (#5643)
- Setting "cache-size-mb": 0 in settings.json now disables the disk write cache. (#5668)
- Improved libtransmission code to use less CPU and RAM. (#5801)
- Transmission now checks if local files exists after setting torrent location. (#5978)
- Improved handling of plaintext and MSE handshakes. (#6025)
- If a torrent contains empty (zero byte) files, create them when starting the torrent. (#6232)
- Improved DHT performance. (#6569, #6695)
- Added advanced sleep-per-seconds-during-verify setting to settings.json. (#6572)
- Improved µTP download performance. (#6586)
- Added support for IPv6 Local Peer Discovery. (#6700)
- Allow port forwarding state to automatically recover from error. (#6718)
- Save upload/download queue order between sessions. (#6753)
- Make client reqq configurable. (#7030)
- Daemon log timestamps are now in local ISO8601 format. (#7057)
- Fixed crash in tr_peerMgrPeerStats(). (#5279)
- Fixed bug in sending torrent metadata to peers. (#5460)
- Avoid unnecessary heap memory allocations. (#5519, #5520, #5522, #5527, #5540, #5649, #5666, #5672, #5676, #5720, #5722, #5725, #5726, #5768, #5788, #5830)
- Fixed filename collision edge case when renaming files. (#5563)
- Fixed locale errors that broke number rounding when displaying statistics, e.g. upload / download ratios. (#5587)
- In RPC responses, change the default sort order of torrents to match Transmission 3.00. (#5604)
- Improved handling of multiple connections from the same IP address. (#5619)
- Always use a fixed-length key query in tracker announces. This isn't required by the spec, but some trackers rely on that fixed length because it's common practice by other BitTorrent clients. (#5652)
- Fixed minor performance bug that caused disk writes to be made in smaller batches than intended. (#5671)
- Fixed potential Windows crash when getstdhandle() returns NULL. (#5675)
- Modified LTEP to advertise PEX support more proactively, and added an sanity check for magnet metadata exchange. (#5783)
- Fixed 4.0.0 bug where the port numbers in LPD announces are sometimes malformed. (#5825)
- Fixed a bug that prevented editing the query part of a tracker URL. (#5871)
- Fixed a bug where Transmission may not announce LPD on its listening interface. (#5875)
- Fixed a bug that prevented editing trackers on magnet links. (#5957)
- Fixed HTTP tracker announces and scrapes sometimes failing after adding a torrent file by HTTPS URL. (#5969)
- Fixed blocklist error seen on some Synology devices due to a bug in tr_sys_path_copy(). (#5974)
- Run peerMgrPeerStats in session thread. (#5992)
- In some locales, some JSON stirngs were incorrectly escaped. (#6005)
- Fixed 1.60 bug where low priority torrents behaved as if they had a normal priority. (#6079)
- Fixed 4.0.4 regression that could cause slower downloads when upload speed limits were enabled. (#6082)
- Fixed 4.0.0 bug where the IP address field in UDP announces were not encoded in network byte order. [BEP-15]. (#6126)
- Improved parsing HTTP tracker announce response. (#6223)
- Fixed 4.0.0 bugs where some RPC methods don't put torrents in recently-active anymore. (#6355, #6405)
- Fixed error when using mbedtls crypto backend: "CTR_DRBG - The requested random buffer length is too big". (#6379)
- Fixed 4.0.0 bug that caused some user scripts to have an invalid TR_TORRENT_TRACKERS environment variable. (#6434)
- Added optional sequential downloading. (#6450, #6746)
- Fixed 4.0.0 bug where alt-speed-enabled had no effect in settings.json. (#6483)
- Fixed 4.0.0 bug where the GTK client's "Use authentication" option was not saved between's sessions. (#6514)
- Fixed 4.0.0 bug where secondsDownloading and secondsSeeding will be reset when stopping the torrent. (#6844)
- Fixed 4.0.0 bug where the filename for single-file torrents aren't sanitized. (#6846)
- Partial file suffixes will now be updated after torrent verification. (#6871)
- Limit the number of bad pieces to accept from a webseed before banning it. (#6875)
- Fixed a 4.0.0 bug where 2.20-3.00 torrent piece timestamps saved in the resume file aren't loaded correctly. (#6896)
- Fixed a bug that could discard BT messages that immediately followed a handshake. (#6913)
- Various bug fixes and improvements related to PEX flags. (#6917)
- Fixed a bug where the turtle icon is active but not effective on starting Transmission. (#6937)
- Fixed a bug where Transmission does not properly reconnect on handshake error. (#6950)
- Fixed edge cases where date done and recently-active does not get updated after torrent state change. (#6992)
- Fixed a 4.0.0 bug where the tracker error is not cleared when the tracker is removed from the torrent. (#7141)
- Fixed a bug where torrent progress is not properly updated after verifying. (#7143)
- Fixed 1.74 bug where resume files are not saved when shutting down Transmission. (#7216)
- Fixed 4.0.0 bug where the download rate of webseeds are double-counted. (#7235)
- Improved libtransmission code to use less CPU. (#4876, #5645, #5715, #5734, #5740, #5792, #6103, #6111, #6325, #6549, #6589, #6712, #7027)
- Slightly reduced latency when sending protocol messages to peers. (#5394)
- Fixed a bug where disk IO rate is much higher than transfer rate. (#7089)
- Refactor: prefer direct-brace-initialization. (#5803)
- Refactor: add tr_variant_serde. (#5903)
- Dropped jsonsl in favour of RapidJSON as our json lexer. (#6138)
- Easier recovery from temporarily missing data files, no longer needing to remove and re-add torrent. (#6277)
- Use a consistent unit formatting code between clients. (#5108)
- Chore: bump minimum openssl version to 1.1.0. (#6047)
- Fixed libtransmission build on very old cmake versions. (#6418)
- Build: fix building on macOS 10.14.6, 10.15.7 and 11.7. (#6590)
- Added torrent priority to completion script environment variables. (#6629)
- Dropped support for miniupnpc version below 1.7. (#6665)
- Bumping libdeflate/small/utfcpp to newer versions. (#6709)
- Bumped fast-float to 6.1.1 and miniupnpc to 2.2.7 and libdeflate to 1.2.0. (#6721)
- Default initialize sleep callback duration in tr_verify_worker. (#6789)
- Bumped miniupnpc to 2.2.8. (#6907)
- Compatibility with libfmt v11. (#6979)
- Removed TR_ASSERT(now >= latest). (#7018)
- Updated documentation. (#7044)
macOS Client
- Added "Show Toolbar" toggle. (#4419)
- Feat: add stats for known peers, not just connected ones. (#4900)
- MacOS convert TorrentTableView to view based. (#5147)
- Feat: support redirects to magnet. (#6012)
- Render file tree in QuickLook plugin for .torrent files. (#6091)
- Added an option to set Transmission as the default app for torrent files. (#6099)
- Support Dark Mode and update default font in QuickLook plugin. (#6101)
- Support pasting multiple magnets on the same line. (#6465)
- Support multiple URL objects from pasteboard. (#6467)
- Feat: clear the badge when quitting app. (#7088)
- Fix: apply i18n to percentage values. (#5568)
- Fixed "Unrecognized colorspace number -1" error message. (#6049)
- Fix: URL cleanup in BlocklistDownloader on macOS. (#6096)
- Fixed early truncation of long group names in groups list. (#6104)
- Use screen.visibleFrame instead of screen.frame. (#6321)
- Fix: support dark mode colors with pieces bar on macOS. (#6959)
- Fixed dock bug that prevented resizing. (#7188)
- Added alternating row color in QuickLook plugin. (#5216)
- Refactor: remove unnecessary NSNotificationCenter observer removals. (#5118)
- Refactor: move macOS default app logic to dedicated class. (#6120)
- Added sort-by-ETA option. (#4169)
- Support localized punctuation for "Port:". (#4452)
- Replace mac app default BindPort with a random port. (#5102)
- Updated code that had been using deprecated API. (#5633)
- Support macOS Sonoma when building from sources. (#6016)
- Chore: replace deprecated NSNamePboardType with NSPasteboardTypeName. (#6107)
- Fixed building on macOS Mojave. (#6180)
- Improved macOS UI code to use less CPU. (#6452)
- Fixed app unable to start when having many torrents and TimeMachine enabled. (#6523)
- Support finding Transmission in Spotlight with keywords "torrent" and "magnet". (#6578)
- Removed warning "don't cut off end". (#6890)
- Opt-in to secure coding explicitly. (#7020)
Qt Client
- Added ETA to compact view. (#3926)
- Added the web client's Labels feature. (#6428)
- Fixed torrent name rendering when showing magnet links in compact view. (#5491)
- Fixed bug that broke the "Move torrent file to trash" setting. (#5505)
- Fixed Qt 6.4 deprecation warning. (#5552)
- Fixed poor resolution of Qt application icon. (#5570)
- Fix: only append '.added' suffix to watchdir files. (#5705)
- Fixed compatibility issue with 4.x clients talking to Transmission 3.x servers. (#6438)
- Fixed 4.0.0 bug where piece size description text and slider state in torrent creation dialog are not always up-to-date. (#6516)
- Use semi-transparent color for inactive torrents. (#6544)
- Correct "Queue for download" last activity. (#6872)
- Avoid unnecessary heap memory allocations. (#6542)
- Fixed spinbox translation ambiguity. (#5124)
- Improved Qt client's accessibility. (#6518, #6520)
- Changed Qt client CLI options parsing to accept Qt options as a separate group. (#7076)
- Modified the "New Torrent" dialog's piece size range to [16 KiB..256 MiB]. (#6211)
GTK Client
- The Qt and GTK Client now does separate port checks for IPv4 and IPv6. (#6525)
- Use native file chooser dialogs (GTK client). (#6545)
- Fixed missing 'Remove torrent' tooltip. (#5777)
- If there was some disk error with torrent removal, fail with a user readable error message. (#6055)
- Setting default behaviour for GTK dialogs to add torrent from url and add tracker. (#7102)
- Fixed crash when opening torrent file from "Recently used" section in GTK 4. (#6131)
- Fix: Avoid ambiguous overload when calling Gdk::Cursor::create. (#7070)
- Fixed 4.0.0 regression causing GTK client to hang in some cases.
- Broken-by: #4430. (#7097)
- GTK client progress bar colours updated to match Web and macOS clients. (#5906)
- Fix: QT build missing an icon. (#6683)
- Improved GTK client's accessibility. (#7119)
- Added developer_name entry to the Flathub build. (#6596)
- Fixed file list text size adjustment based on global settings. (#7096)
Web Client
- Added support for adding torrents by drag-and-drop. (#5082)
- Added high contrast theme. (#5470)
- Replaced background colors with system color keywords to enable using browser's colors. CSS style adjustments esp. for label and buttons. (#5897)
- Added percent digits into the progress bar. (#5937)
- Improved WebUI responsiveness and made quality of life improvements. (#5947)
- The WebUI now does separate port checks for IPv4 and IPv6. (#5953, #6607)
- Added forced variant of the "Verify Local Data" context menu item to WebUI. (#5981)
- Feat: Only show .torrent files in the web UI. (#6320)
- The inspector can now be hidden by clicking. (#6863)
- Don't show null as a tier name in the inspector's tier list. (#5462)
- Fixed truncated play / pause icons. (#5771)
- Fixed overflow when rendering peer lists and made speed indicators honor prefers-color-scheme media queries. (#5814)
- Made the main menu accessible even on smaller displays. (#5827)
- WebUI: Fix graying out inspector. (#5893)
- Fixed updating magnet link after selecting same torrent again. (#6028)
- Fix: add seed progress percentage to compact rows. (#6034)
- Fixed 4.0.0 bug where the WebUI "Set Location" dialogue does not auto fill the selected torrent's current download location. (#6334)
- Fixed 4.0.5 bug where svg and png icons in the WebUI might not be displayed. (#6409, #6430)
- Fixed a 4.0.0 bug where the infinite ratio symbol was displayed incorrectly in the WebUI. (#6491)
- Fix(web): pressing the enter key now submits dialogs. (#7036)
- Removed excessive session-set RPC calls related to WebUI preference dialogue. (#5994)
- Removed modifiers for keyboard shortcuts. (#5331)
- Improved some UI styling and spacing. (#5466)
- Updated WebUI progress bar and highlight colours. (#5762)
- WebUI: Improved filterbar for narrowed viewports. (#5828)
- Unified CSS shadow properties. (#5840)
- Feat: webui use monochrome icons for play/pause buttons. (#5868)
- Improved overflow menu for web client. (#5895)
- Added display and time in torrent detail. (#5918)
- Added touchscreen support in the context menu. (#5928)
- Fixed truncated hash in inspector page, added name section to inspector page. (#7014)
- Updated gray color for grayed out objects. (#7248)
- Updated displaying number in new gigabyte per second unit. (#7279)
- Increased base font sizes, and progress bar size in compact view. (#5340)
- Use esbuild to build the web client. (#6280)
Daemon
- Fixed minor memory leak. (#5695)
- Fixed a couple of logging issues. (#6463)
- Updated documentation. (#6499)
- More accurate timestamps for daemon logs. (#7009)
- Avoid unnecessary heap memory allocations. (#5724)
- Updated transmission-daemon.1 to sync with --help. (#6059)
- Added start_paused to settings and daemon. (#6728)
- Added documentation key to systemd service file. (#6781)
transmission-cli
- Fixed "no such file or directory" warning when adding a magnet link. (#5426)
- Fixed bug that caused the wrong decimal separator to be used in some locales. (#5444)
- Fix: restore tr_optind in all getConfigDir branches. (#6920)
- Refactor: add libtransmission::Values. (#6215)
transmission-remote
- Remote: Implement idle seeding limits. (#2947)
- Fixed display bug that failed to show some torrent labels. (#5572)
- Added optional sequential downloading. (#6454)
- Fixed crash in printTorrentList. (#6819)
- Added 'months' and 'years' to ETA display for extremely slow torrents. (#5584)
- Transmission-remote: for '-l', implement default sorting by addedDate. (#5608)
Everything Else
- Sanitize torrent filenames depending on current OS. (#3823)
- Fixed building Xcode project. (#5521)
- Handle IPv6 NAT during LTEP handshake. (#5565)
- Expose files' begin and end pieces via RPC. (#5578)
- Updated the torrent creator's default piece size to handle very large torrents better. (#5615)
- Updated documentation. (#5688, #6083, #6196, #6199, #6367, #6677, #6800, #6828, #7120)
- Improved libtransmission code to use less CPU. (#5651)
- Sync translations. (#6453)
- Ran all PNG files through lossless compressors to make them smaller. (#5586)
- Fixed potential build issue when compiling on macOS with gcc. (#5632)
- Fix: conform to libcurl requirements to avoid memory leak. (#5702)
- Chore: update generated transmission-web files. (#5790, #5831, #6037, #6156, #6427)
- Improved support for building with the NDK on Android. (#6024)
- Bumped fast_float snapshot to v5.3.0. (#6255)
- Chore: bump fmt to 10.1.1. (#6358)
- GTK: Add 4.0.4 and 4.0.5 releases to metainfo. (#6378)
- Hardened systemd service settings. (#6391)
- Updated miniunpnp snapshot to 2.3.4 (miniupnpc 2.2.6). (#6459)
- Chore: fix warnings when compiling macOS client with either Xcode or CMake. (#6676)
- Added sanitizer-tests-macos. (#6703)
- Added documentation for building transmission-qt on macOS. (#6814)
- Build with -latomic on platforms that need it. (#6774)
- Fixed building with mbedtls 3.X. (#6822)
- Build: enable clang-tidy by default. (#6989)
Transmission 4.0.6 Final
All Platforms
- Improved parsing HTTP tracker announce response. (#6223)
- Fixed 4.0.0 bug that caused some user scripts to have an invalid TR_TORRENT_TRACKERS environment variable. (#6434)
- Fixed 4.0.0 bug where alt-speed-enabled had no effect in settings.json. (#6483)
- Fixed 4.0.0 bug where the GTK client's "Use authentication" option was not saved between's sessions. (#6514)
- Fixed 4.0.0 bug where the filename for single-file torrents aren't sanitized. (#6846)
macOS Client
- Fix: Sparkle support for handling beta version updates. (#5263)
- Fixed app unable to start when having many torrents and TimeMachine enabled. (#6523)
- Fix: Sparkle Version Comparator. (#6623)
Qt Client
- Fixed 4.0.0 bug where piece size description text and slider state in torrent creation dialog are not always up-to-date. (#6516)
GTK Client
- Fixed build when compiling with GTKMM 4. (#6393)
- Added developer name to metainfo files. (#6598)
- Added the launchable desktop-id to metainfo files. (#6779)
- Fixed build when compiling on BSD. (#6812)
Web Client
- Fixed a 4.0.0 bug where the infinite ratio symbol was displayed incorrectly in the WebUI. (#6491, #6500)
- Fixed layout issue in speed display. (#6570)
- General UI improvement related to filterbar and fixes download/upload speed info wrap. (#6761)
Daemon
- Fixed a couple of logging issues. (#6463)
Everything Else
- Updated flatpak release metainfo. (#6357)
- Fixed libtransmission build on very old cmake versions. (#6418)
- UTP peer connections follow user-defined speed limits better now. (#6551)
- Only use a single concurrent queue for timeMachineExclude instead of one queue per torrent (#6523). (#6558)
- Fixed 4.0.5 bug where svg and png icons in the WebUI might not be displayed. (#6563)
- Fixed 4.0.0 bug where alt-speed-enabled had no effect in settings.json. (#6564)
- Fixed 4.0.0 bugs where some RPC methods don't put torrents in recently-active anymore. (#6565)
- Improved parsing HTTP tracker announce response. (#6567)
- Fixed compatibility with clang-format 18. (#6690)
- Fixed build when compiling with mbedtls 3.x . (#6823)