Best Torrent Settings for Long-Term Seeding

Configuring a BitTorrent client for long-term seeding (often called perma-seeding) requires shifting the client’s focus from rapid downloading to resource efficiency, high peer accessibility, and continuous availability. This guide covers the essential adjustments needed to maintain thousands of active seeds, manage upload bandwidth effectively, reduce disk wear, and ensure your client remains connectable to the swarm indefinitely.

Remove Seeding Limits and Ratios

By default, many clients automatically pause torrents once they hit a specific share ratio (such as 1.0 or 2.0) or after a certain amount of idle time. * Ratio Limits: Set the maximum share ratio limit to -1 or Infinite (or uncheck “Stop seeding when ratio reaches”). * Seeding Time: Set the maximum seeding time to Infinite to prevent torrents from automatically pausing. * Auto-Stop Rules: Disable any rules that automatically remove or pause inactive torrents.

Adjust Queueing and Active Torrent Caps

Standard configurations restrict the client to only a few active torrents at a time to maximize download speed. Long-term seeding requires the client to announce and listen on all loaded torrents simultaneously. * Maximum Active Torrents: Set this to a very high number (e.g., 500 to 2000) or 0 (unlimited), depending on what your client supports. * Maximum Active Uploads/Seeds: Match this to your maximum active torrent limit. * Slow Torrent Handling: Disable options like “Do not count slow torrents” or configure them so idle seeds remain open to incoming requests.

Optimize Connection and Peer Limits

Managing connections properly ensures your client does not exhaust system memory, router NAT tables, or available bandwidth. * Global Maximum Connections: Set between 500 and 1000. Setting this too high can crash consumer-grade routers. * Maximum Connected Peers per Torrent: Lower this value to 1030. Since long-term seeds often sit idle waiting for rare requests, you do not need many open connections per individual torrent. * Upload Slots per Torrent: Set to 24 or use automatic/dynamic allocation. This prevents your upload bandwidth from being fragmented into tiny, inefficient streams across too many peers.

Configure Bandwidth and Upload Rates

To maintain a stable long-term seedbox or home server, bandwidth must be throttled just below network capacity to avoid packet loss. * Global Upload Speed: Set this to roughly 80% to 85% of your total ISP upload bandwidth. Running at 100% upload capacity causes bufferbloat, latency spikes, and dropped peer connections. * Download Speed Limit: Lower the global download limit if you are running out of storage or purely focusing on uploading. * Apply Rate Limits to Transport Overhead: Enable this setting to ensure protocol overhead does not bypass your upload limits.

Optimize Disk Cache and Storage

Serving data for hundreds of torrents creates random read patterns, which can cause heavy disk thrashing on mechanical drives. * Increase Disk Cache: Increase the client’s RAM cache size (e.g., 512MB to 2048MB or higher, depending on available system RAM) to serve frequently requested pieces directly from memory. * Read Caching: Ensure “Enable caching of disk reads” is turned on. * Disable OS Cache for Reads: In clients like qBittorrent, selecting modern disk I/O modes (like POSIX-compliant asynchronous I/O) helps prevent the operating system from duplicating read caches and exhausting system memory.

Ensure Full Connectability (Port Forwarding)

A long-term seeder must be connectable so that peers behind restrictive NATs or firewalls can initiate connections. * Static Port: Set a specific, non-default incoming port (between 49152 and 65535). * Port Forwarding: Forward this port in your router settings to the local IP address of your seeding machine, or use a VPN that supports explicit port forwarding. * UPnP / NAT-PMP: Disable UPnP/NAT-PMP if you have configured manual port forwarding to ensure connection stability. * Peer Discovery: Keep DHT, PeX (Peer Exchange), and LSD (Local Peer Discovery) enabled for public trackers. For private trackers, these should remain managed by the tracker’s private flag.