Limit the maximum network bandwidth for BITS background transfers
Verified with Windows 11 25H2 — updated on July 30, 2026
Supported on: Windows XP SP2 or Windows Server 2003 SP1, or computers with BITS 2.0 installed.
Path in the GPO console
Computer Configuration\Administrative Templates\Network\Background Intelligent Transfer Service (BITS) Description
This policy setting limits the network bandwidth that Background Intelligent Transfer Service (BITS) uses for background transfers. (This policy setting does not affect foreground transfers.) You can specify a limit to use during a specific time interval and at all other times. For example, limit the use of network bandwidth to 10 Kbps from 8:00 A.M. to 5:00 P.M., and use all available unused bandwidth the rest of the day's hours. If you enable this policy setting, BITS will limit its bandwidth usage to the specified values. You can specify the limit in kilobits per second (Kbps). If you specify a value less than 2 kilobits, BITS will continue to use approximately 2 kilobits. To prevent BITS transfers from occurring, specify a limit of 0. If you disable or do not configure this policy setting, BITS uses all available unused bandwidth. Note: You should base the limit on the speed of the network link, not the computer's network interface card (NIC). This policy setting does not affect Peercaching transfers between peer computers (it does affect transfers from the origin server); the "Limit the maximum network bandwidth used for Peercaching" policy setting should be used for that purpose. Consider using this setting to prevent BITS transfers from competing for network bandwidth when the client computer has a fast network card (10Mbs), but is connected to the network via a slow link (56Kbs).
Registry
Software\Policies\Microsoft\Windows\BITS Value name: EnableBITSMaxBandwidth
MDM / Intune (CSP)
./Device/Vendor/MSFT/Policy/Config/BITS/BandwidthThrottlingEndTime Multiple CSP matches are possible; the first one was selected.
Microsoft Learn documentation Mapping data: Microsoft Learn (CC BY 4.0)
Export Builder
BETAConfigure the state, scope and options, then generate .reg, PowerShell, Intune and SCCM outputs — or add the setting to a multi-setting collection.
These exports write the registry — this is not a managed GPO. ⓘ
.reg file
Windows Registry Editor Version 5.00
; Exported from gporais.com
; Policy: Limit the maximum network bandwidth for BITS background transfers
; State: Enabled
; Supported on: Windows XP SP2 or Windows Server 2003 SP1, or computers with BITS 2.0 installed.
[HKEY_LOCAL_MACHINE\Software\Policies\Microsoft\Windows\BITS]
"EnableBITSMaxBandwidth"=dword:00000001
"MaxTransferRateOnSchedule"=dword:0000000a
"MaxBandwidthValidFrom"=dword:00000008
"MaxBandwidthValidTo"=dword:00000011
"UseSystemMaximum"=dword:00000001
"MaxTransferRateOffSchedule"=dword:00000014 More formats (PowerShell, Intune, SCCM)
PowerShell
# Exported from gporais.com
# Policy: Limit the maximum network bandwidth for BITS background transfers
# State: Enabled
# Supported on: Windows XP SP2 or Windows Server 2003 SP1, or computers with BITS 2.0 installed.
$path = 'HKLM:\Software\Policies\Microsoft\Windows\BITS'
New-Item -Path $path -Force | Out-Null
Set-ItemProperty -Path $path -Name 'EnableBITSMaxBandwidth' -Value 1 -Type DWord
Set-ItemProperty -Path $path -Name 'MaxTransferRateOnSchedule' -Value 10 -Type DWord
Set-ItemProperty -Path $path -Name 'MaxBandwidthValidFrom' -Value 8 -Type DWord
Set-ItemProperty -Path $path -Name 'MaxBandwidthValidTo' -Value 17 -Type DWord
Set-ItemProperty -Path $path -Name 'UseSystemMaximum' -Value 1 -Type DWord
Set-ItemProperty -Path $path -Name 'MaxTransferRateOffSchedule' -Value 20 -Type DWord Intune XML
OMA-URI: ./Device/Vendor/MSFT/Policy/Config/BITS/BandwidthThrottlingEndTime
Data type: String
Value:
<enabled/>
<data id="BITS_MaxTransferRateText" value="10"/>
<data id="BITS_BandwidthLimitSchedFrom" value="8"/>
<data id="BITS_BandwidthLimitSchedTo" value="17"/>
<data id="BITS_UseSystemMaximum" value="1"/>
<data id="BITS_MaxTransferRateText_1" value="20"/> Intune Remediation
# === Detection script ===
# Exported from gporais.com
# Policy: Limit the maximum network bandwidth for BITS background transfers
# State: Enabled
# Supported on: Windows XP SP2 or Windows Server 2003 SP1, or computers with BITS 2.0 installed.
function Test-RegistryValue {
param(
[Parameter(Mandatory = $true)][string]$Path,
[Parameter(Mandatory = $true)][string]$Name,
[object]$Expected,
[ValidateSet('String', 'DWord', 'MultiString')][string]$Kind = 'String',
[switch]$Absent
)
try {
$item = Get-ItemProperty -LiteralPath $Path -Name $Name -ErrorAction Stop
} catch {
return $Absent.IsPresent
}
if ($Absent.IsPresent) { return $false }
$actual = $item.$Name
if ($Kind -eq 'DWord') { return ([int64]$actual) -eq ([int64]$Expected) }
if ($Kind -eq 'MultiString') {
$actualValues = @($actual)
$expectedValues = @($Expected)
if ($actualValues.Count -ne $expectedValues.Count) { return $false }
for ($i = 0; $i -lt $expectedValues.Count; $i++) {
if ([string]$actualValues[$i] -ne [string]$expectedValues[$i]) { return $false }
}
return $true
}
return [string]$actual -eq [string]$Expected
}
$checks = @(
(Test-RegistryValue -Path 'HKLM:\Software\Policies\Microsoft\Windows\BITS' -Name 'EnableBITSMaxBandwidth' -Expected 1 -Kind DWord)
(Test-RegistryValue -Path 'HKLM:\Software\Policies\Microsoft\Windows\BITS' -Name 'MaxTransferRateOnSchedule' -Expected 10 -Kind DWord)
(Test-RegistryValue -Path 'HKLM:\Software\Policies\Microsoft\Windows\BITS' -Name 'MaxBandwidthValidFrom' -Expected 8 -Kind DWord)
(Test-RegistryValue -Path 'HKLM:\Software\Policies\Microsoft\Windows\BITS' -Name 'MaxBandwidthValidTo' -Expected 17 -Kind DWord)
(Test-RegistryValue -Path 'HKLM:\Software\Policies\Microsoft\Windows\BITS' -Name 'UseSystemMaximum' -Expected 1 -Kind DWord)
(Test-RegistryValue -Path 'HKLM:\Software\Policies\Microsoft\Windows\BITS' -Name 'MaxTransferRateOffSchedule' -Expected 20 -Kind DWord)
)
if ($checks -notcontains $false) {
Write-Output 'Compliant'
exit 0
}
Write-Output 'Non-compliant'
exit 1
# === Remediation script ===
# Exported from gporais.com
# Policy: Limit the maximum network bandwidth for BITS background transfers
# State: Enabled
# Supported on: Windows XP SP2 or Windows Server 2003 SP1, or computers with BITS 2.0 installed.
$path = 'HKLM:\Software\Policies\Microsoft\Windows\BITS'
New-Item -Path $path -Force | Out-Null
Set-ItemProperty -Path $path -Name 'EnableBITSMaxBandwidth' -Value 1 -Type DWord
Set-ItemProperty -Path $path -Name 'MaxTransferRateOnSchedule' -Value 10 -Type DWord
Set-ItemProperty -Path $path -Name 'MaxBandwidthValidFrom' -Value 8 -Type DWord
Set-ItemProperty -Path $path -Name 'MaxBandwidthValidTo' -Value 17 -Type DWord
Set-ItemProperty -Path $path -Name 'UseSystemMaximum' -Value 1 -Type DWord
Set-ItemProperty -Path $path -Name 'MaxTransferRateOffSchedule' -Value 20 -Type DWord SCCM scripts
# Exported from gporais.com
# Policy: Limit the maximum network bandwidth for BITS background transfers
# State: Enabled
# Supported on: Windows XP SP2 or Windows Server 2003 SP1, or computers with BITS 2.0 installed.
# SCCM Configuration Item guidance:
# Create a Configuration Item of type "Setting: Script".
# Discovery script: use the Detection script below.
# Remediation script: use the Remediation script below.
# Compliance rule: the Discovery script output equals 'Compliant'.
# === Detection script ===
# Exported from gporais.com
# Policy: Limit the maximum network bandwidth for BITS background transfers
# State: Enabled
# Supported on: Windows XP SP2 or Windows Server 2003 SP1, or computers with BITS 2.0 installed.
function Test-RegistryValue {
param(
[Parameter(Mandatory = $true)][string]$Path,
[Parameter(Mandatory = $true)][string]$Name,
[object]$Expected,
[ValidateSet('String', 'DWord', 'MultiString')][string]$Kind = 'String',
[switch]$Absent
)
try {
$item = Get-ItemProperty -LiteralPath $Path -Name $Name -ErrorAction Stop
} catch {
return $Absent.IsPresent
}
if ($Absent.IsPresent) { return $false }
$actual = $item.$Name
if ($Kind -eq 'DWord') { return ([int64]$actual) -eq ([int64]$Expected) }
if ($Kind -eq 'MultiString') {
$actualValues = @($actual)
$expectedValues = @($Expected)
if ($actualValues.Count -ne $expectedValues.Count) { return $false }
for ($i = 0; $i -lt $expectedValues.Count; $i++) {
if ([string]$actualValues[$i] -ne [string]$expectedValues[$i]) { return $false }
}
return $true
}
return [string]$actual -eq [string]$Expected
}
$checks = @(
(Test-RegistryValue -Path 'HKLM:\Software\Policies\Microsoft\Windows\BITS' -Name 'EnableBITSMaxBandwidth' -Expected 1 -Kind DWord)
(Test-RegistryValue -Path 'HKLM:\Software\Policies\Microsoft\Windows\BITS' -Name 'MaxTransferRateOnSchedule' -Expected 10 -Kind DWord)
(Test-RegistryValue -Path 'HKLM:\Software\Policies\Microsoft\Windows\BITS' -Name 'MaxBandwidthValidFrom' -Expected 8 -Kind DWord)
(Test-RegistryValue -Path 'HKLM:\Software\Policies\Microsoft\Windows\BITS' -Name 'MaxBandwidthValidTo' -Expected 17 -Kind DWord)
(Test-RegistryValue -Path 'HKLM:\Software\Policies\Microsoft\Windows\BITS' -Name 'UseSystemMaximum' -Expected 1 -Kind DWord)
(Test-RegistryValue -Path 'HKLM:\Software\Policies\Microsoft\Windows\BITS' -Name 'MaxTransferRateOffSchedule' -Expected 20 -Kind DWord)
)
if ($checks -notcontains $false) {
Write-Output 'Compliant'
exit 0
}
Write-Output 'Non-compliant'
exit 1
# === Remediation script ===
# Exported from gporais.com
# Policy: Limit the maximum network bandwidth for BITS background transfers
# State: Enabled
# Supported on: Windows XP SP2 or Windows Server 2003 SP1, or computers with BITS 2.0 installed.
$path = 'HKLM:\Software\Policies\Microsoft\Windows\BITS'
New-Item -Path $path -Force | Out-Null
Set-ItemProperty -Path $path -Name 'EnableBITSMaxBandwidth' -Value 1 -Type DWord
Set-ItemProperty -Path $path -Name 'MaxTransferRateOnSchedule' -Value 10 -Type DWord
Set-ItemProperty -Path $path -Name 'MaxBandwidthValidFrom' -Value 8 -Type DWord
Set-ItemProperty -Path $path -Name 'MaxBandwidthValidTo' -Value 17 -Type DWord
Set-ItemProperty -Path $path -Name 'UseSystemMaximum' -Value 1 -Type DWord
Set-ItemProperty -Path $path -Name 'MaxTransferRateOffSchedule' -Value 20 -Type DWord Building a multi-setting collection? Add this setting and generate combined .reg / PowerShell / GPO scripts.