Is there a way to set a custom Steam Download speed?

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.

enter image description here


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 makes 36000).

  • 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).

Steam with custom download limit

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


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)