Is there a way to set a custom Steam Download speed?
I found (and slightly redacted) this solution on SuperUser, which was copied verbatim from Reddit, whence it was sourced from the Steam community:
Go into your Steam directory, and open the config directory [C:\Program Files (x86)\Steam\config by default.]
Go into the config directory and open the "config.vdf" file.
Find the
DownloadThrottleKbps
setting, and set it to the desired speed (take the amount in Mb/s you want to set it to, and multiply it by 8000 - e.g. 4.5 Mb/s makes36000
).Save the file, open Steam, and verify that it is working.
Make sure to set the "config.vdf" file to 'Read-only'. Steam changes the file on start-up and exiting (when set to be run as administrator).
Note that the file contains more settings, so customizing other settings might require the file to have the 'Read-only' flag disabled.
Works with the New Steam Library update
As of October 7th, 2020, you can now specify an exact speed simply by inputting the amount you desire. Go to Steam → Settings → Downloads and in the "Download Restrictions" part of the window, check the "Limit Bandwidth to" checkbox and input the amount you wish (in KB/s). 4500 KB/s would equate to 4.5 MB/s.
Based on the answer by Joachim, I created a little Python script that sets the DownloadThrottleKbps in the config.vdf file, so you don't need to redo it manually everytime the setting gets overwritten. Recommended use: create a shortcut to the script with the bandwidth in Kbit/s as first the argument.
Example: To set a bandwidth limit of 4.5MB/s, in the shortcut's properties, edit the Target of the shortcut as: C:\path\to\bandwidth-limit-script.py 36000
Note 1: Close Steam before running this.
Note 2: I hardcoded the path to C:\Program Files (x86)\Steam\config\config.vdf, so change that line of code if you've installed Steam to a custom location.
Note 3: I used f-strings so you need Python 3.6 or higher.
# Set Steam download bandwidth limit (for Windows)
import argparse
from time import sleep
# Config
configpath = "C:\\Program Files (x86)\\Steam\\config\\config.vdf"
throttlestr = "DownloadThrottleKbps"
# Make the user at least see error messages when launched from a shortcut
# Please don't judge me for my lazy exceptions XD
try:
# Parse bandwidth argument
parser = argparse.ArgumentParser(description='Set Steam download bandwidth limit in Windows.')
parser.add_argument('bandwidth', metavar='bandwidth', type=int, nargs=1,
help='Bandwidth limit in Kbit/s. 0 = no limit.\n\
Recommended use: create a shortcut to the script with bandwidth as first the argument.')
args = parser.parse_args()
bandwidth = args.bandwidth[0]
except:
input('Press Enter to exit')
exit()
try:
# Open config file
with open(configpath, 'r') as f:
contents = f.readlines()
# Find DownloadThrottleKbps line
for n in range(len(contents)): # Loop over lines of config
if throttlestr in contents[n]: # Check for 'DownloadThrottleKbps'
contents[n] = f'\t\t\t\t"{throttlestr}"\t\t"{bandwidth}"\n' # Replace line
break # Exit loop
# Write new config to file file
with open(configpath, 'w') as f:
f.writelines(contents)
except:
input(f'Error during file access of {configpath}\nPress Enter to exit')
exit()
print(f'Steam bandwidth limit was set to {bandwidth} Kbit/s')
sleep(1)