Guide · 6 min read

Transmission proxy settings: there is no box, and that tells you something

Transmission has no proxy field: set proxy_url in settings.json, see why it covers HTTP(S) tracker requests but never peers, and when to use another client.

Transmission proxy settings, the short version: there is no box. Not hidden behind an Advanced tab, not renamed. The client’s source shows the word “proxy” appears zero times in the GTK, Qt and macOS preference layouts at version 4.1.3. What Transmission does have, since 4.1.0, is one key in a config file. This guide sets it, says exactly what it covers, which is much less than people hope, and tells you when to use a different client.

Checked against Transmission’s configuration docs at 4.1.3 and the 4.1.0 release notes in October 2026.

What proxy_url actually covers

The 4.1.0 release notes, from 27 January 2026, say: “Added support for using a proxy server for web connections.” Web connections is the key phrase. The docs describe proxy_url as a “Proxy for HTTP(S) requests (for example, requests to tracker)”, and the source sets it on libcurl, the library Transmission uses for those requests.

Which Transmission traffic uses proxy_url
TrafficThrough proxy_url?
HTTP and HTTPS tracker announcesYes
Other web requests Transmission makesYes
Peer connections over TCPNo
Peer connections over uTPNo
UDP trackersNo
DHTNo
So a Transmission proxy never hides your IP from peers. It changes what HTTP(S) trackers see, and nothing else.

The fine print, Transmission edition

  • Peers always see your real IP. Not a misconfiguration; that is the design. Everything outside HTTP(S) leaves from your own connection.
  • The meter is per GB, the seed is not on it. Residential, and traffic past a shared IP’s allowance, are metered per GB, and in a client that proxies peers a seeded torrent pays both ways. Transmission’s peers skip the proxy, so only its web requests count.
  • UDP never touches the proxy. UDP trackers, DHT and uTP go direct. Separately, our SOCKS5 should be treated as TCP only, and an HTTP proxy cannot carry UDP anyway.
  • No encryption. A proxy relays requests; it does not scramble them.
  • Not for copyright-type worries. With peers never proxied, Transmission plus a proxy gives no cover at all; the qBittorrent’s wiki recommends a VPN for that, and the proxy vs VPN guide explains the difference.
  • Lawful content only. Using our proxies to share files you have no right to share is not allowed; the acceptable use policy is the rulebook.

Setting proxy_url, step by step

  1. Quit Transmission first. The docs warn that editing settings while it runs means “settings will be reverted”.
  2. Open settings.json. Where it lives differs by platform and front-end; the configuration docs list the locations.
  3. Set proxy_url to your proxy, using one of the schemes the docs allow: http, https, socks4, socks4h, socks5 or socks5h. Prefer socks5h, so the proxy resolves tracker hostnames.
  4. Save and start Transmission again.
{
  "proxy_url": "socks5h://IP:PORT"
}

That is one key inside a file that has many; add it, do not replace the file with it. Two values mean something special. If proxy_url is null, Transmission “respects the CURL environment variables”, so a proxy variable set in the environment for something else applies here too. If it is an empty string, no proxy is used.

Daemon users on a NAS or a server: the same key works in transmission-daemon’s settings.json, and the daemon reloads its settings on SIGHUP:

pkill -HUP transmission-daemon

Two more notes from the docs. Version 4.1 is moving key names to snake_case, and the old kebab-case names still work. And the 1.4x-era proxy-* keys are listed under Legacy Options; do not copy them from an old forum post and expect them to do anything on a current build.

Passwords: the docs do not mention credentials in proxy_url. libcurl itself accepts scheme://user:pass@host:port, but that is curl’s documentation, not Transmission’s, so we treat it as unconfirmed. The clean way round it is to add your own IP to the order’s IP allowlist, so the proxy needs no password.

Read the meter: it should be almost nothing

Here is the upside of Transmission’s tiny proxy: the bill is tiny too. Tracker announces are small requests. Download a 4 GB ISO and seed it to 1.0, and your home connection moves at least 8 GB, while our meter only sees the announces. In a client that proxies peers, all 8 GB would cross the proxy instead; the metering explainer covers how those bytes count.

So the meter test is a smoke alarm. After a day of Transmission, the usage view in your dashboard should show a trickle. If it shows gigabytes, something else is using your proxy credentials, or an environment variable is sending other traffic through the proxy. Go find it.

Seeding: your connection, not our meter

Because peers never use the proxy, seeding with Transmission costs your own bandwidth and nothing on ours. Still set an upload cap and a ratio, for your own line and your housemates’ video calls. Just do not set them because of a proxy bill: there will not be one worth mentioning.

Verdict

proxy_url is a tracker tool. Use it when an HTTPS tracker is blocked on the network you are on, or when you want tracker announces to leave from somewhere other than home and you understand that peers still see you. It costs almost nothing on any line.

If you need peers proxied, Transmission cannot do it; use a client that can. Deluge proxies peers as soon as you choose a type, and the Deluge guide covers it, daemon and all.

Quick answers

Does Transmission support SOCKS5?

Only as a scheme in proxy_url, and proxy_url only covers HTTP(S) requests such as tracker announces. Peer connections, UDP trackers and DHT never use it. So Transmission can send its tracker requests through a SOCKS5 proxy, but never its peers.

Why can’t I find proxy settings in Transmission?

Because there are none in the interface. The source shows no proxy field in the GTK, Qt or macOS preferences at 4.1.3. The setting is proxy_url in settings.json, added in 4.1.0.

Do the old proxy settings still work?

Transmission’s docs list the 1.4x-era proxy keys under Legacy Options. Do not use them as if they were current; use proxy_url on 4.1 or later.

Can I put a username and password in proxy_url?

Transmission’s docs do not say. libcurl, which Transmission uses for these requests, accepts user:pass@ in a proxy URL, but that is curl’s documentation, not Transmission’s. Allowlist your own IP on the order instead and leave credentials out.

Try it while you read

Top-ups start at $5.

One shared datacenter IP for 30 days is $1.25. A single gigabyte of residential is $5.50. The balance never expires.

Published

Filed under

Found a mistake? Tell us in Discord and we will fix the post.

The community layer

Stuck halfway through?

Paste the error in Discord. Someone has hit it before and the answer is usually one message long.

Join the Discord

4,200+monkeys in the Discord

  • Help from humans

    Post your error, get an answer. Usually in minutes, usually from someone who has hit the same wall.

  • A status bot that tells on us

    Pool health, incidents and maintenance posted automatically. Including the bad days.

  • Deals and free traffic

    Bonus GB drops, early access to new pools, and the occasional giveaway for a good bug report.

Join the Discord4,200+ monkeys, free to lurk