Windows Delivery Optimization is a peer-to-peer (P2P) file-sharing service for software from Microsoft. It works with Windows Update and updates from the Microsoft Store. The service can help reduce your data/bandwidth usage, and free up limited internet bandwidth for other activities. It can optionally also download from other Microsoft customers over the internet.
Delivery Optimization, unlike other P2P services like BitTorrent, is centrally managed by Microsoft. The obvious use for Delivery Optimization is to reduce the cost and time to download updates for consumers with slow network connections. Assuming you’ve got more than one Windows PC in your household, you’ll only need to download updates via the internet once. Your Windows devices can then share the updates directly on your local network.
However, Windows prefers downloading updates in parallel from Microsoft servers over the network and through Delivery Optimization. Your devices won’t use the Delivery Optimization service by default, despite the service being configured to run by default. In this article, I’ll teach you how to get the Delivery Optimization service working. I’ll also show you how to get Windows to prefer downloading updates through the Delivery Optimization service.
Delivery Optimization may appear to be controlled by a simple on/off toggle in the Windows Settings app. However, there are a few more technical requirements to run the Delivery Optimization service. The Windows Settings app frankly doesn’t do a good enough job at communicating these to the user. Let’s go through each of them to make sure Delivery Optimization can run on your computers.
Let’s start with the basics. Open the Windows Settings app and go to Windows Update: Delivery Optimization. Make sure it’s set to “allow downloads from other PCs.” If you just want your computer to prefer peer-to-peer downloads, set it to “PCs on my local network, and PCs on the internet.” This setting may be faster overall depending on your internet connection, and the size of the updates. If you want to reduce your internet usage and save bandwidth, set it to “PCs on my local network.”
You should then double-checking your devices’ network settings. Open the Windows Settings app and go to Network: Status. Click Properties next to your network connection. Make sure the Network profile is set to Private. Delivery Optimization can’t communicate with other computers on your local network unless it’s configured as a Private network. Virtual Private Network (VPN) services and network proxies may interfere with Delivery Optimization.
You also need at least 32 GB of available disk space, at least 4 GB of total system RAM, and a 40 % battery charge. Despite requiring 32 GB of free disk space, it won’t use more than 10 GB or 20 % of your total disk size (whichever is the smallest). Delivery Optimization will only work for 100 MB files or larger, and files won’t be shared for more than three days. I’ll discuss how to change these parameters later in the article. Make sure you read the second section if you’re highly bandwidth-constrained or pay excessively for your internet access.
You need to repeat the above steps on each of your Windows devices. With all the above setup and troubleshooting out of the way, you should have Delivery Optimization in a working state on your Windows devices. However, depending on your internet speed and device usage, all your devices may still fetch most of their updates from Microsoft Servers over the internet.
You need to make one more tweak to get Windows Update to prefer downloading updates via Delivery Optimization. Unfortunately, there’s no setting intended for this purpose. However, we can tweak another set of settings to achieve the same end.
You should understand the consequences of delaying updates and new installs. Downloads from Windows Updates, Microsoft Store, and optional Windows features may appear stalled until the delay period has elapsed. They might appear stuck in a “downloading – 0%” state. There’s no button to override the delay, you just have to wait. As soon as one computer on your network has an update, it should begin downloading on your other PCs too.
This is also where the difference between the background and foreground download delays comes into play. A shorter (or no) foreground delay means you’ll not have to wait for downloads to begin when you have the Microsoft Store or Windows Update open in a window. This, of course, means they could consume more bandwidth/data compared to background downloads. So, be aware that can happen when you leave the Windows Update or Store windows open. The five-minute delay gives you enough time to manually prompt Windows Update to check for updates, and close the window and have it finish the update process in the background.
This setup will negatively impact updates to device-specific drivers, however. If no other device needs a specific set of drivers, your devices will just have to wait for the delay timer to run out. This is why we set it to one hour and not something more aggressive like a week.
You can make this change via the Registry Editor (regedit
), Group Policy Editor, PowerShell or Terminal, or by importing a predefined registration file. We’ll use the latter method because it works the same on all versions and editions of Windows 10 and 11. The process is simple.
Start by downloading the msdosvc-delay-http.reg file to your Downloads folder. Open File Explorer and go to the Downloads folder. Right-click on the file and select Edit. You should always review .reg
files before applying them to check that they don’t make any changes you don’t want. In this instance, you’ll see that the file only makes changes to the Delivery Optimization service. You can now close Notepad again.
You can then import the registration file on your system by double-clicking on it. You’ll get prompted to confirm that you want to apply the changes to your system. Agree to make the changes, and you’re done!
The configuration file will delay updates from Microsoft Servers by one hour for background updates, and 15 minutes for foreground updates (when the Windows Update window is open). You can change the timing settings by opening the Registry Editor (regedit
; search for it in the Start menu), and going to HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\DeliveryOptimization
. Note that this path might not exist until after you’ve imported the above registration file! Double-click on a setting, toggle decimal mode, and enter the desired times in seconds.
Delivery Optimization will download over the internet in parallel as well as from your local network after the delay timer expired (parallel download mode). For maximum data/bandwidth usage savings, the timer should be long enough to allow one computer to fully download the updates.
If your internet access is expensive or slow, you may want to increase the delay timer to three or more hours to improve the chances that your devices will be powered on simultaneously and can share updates. For the most bandwidth savings, you can set the delay to one day (86400 seconds). A longer delay is useful on slow connections where you absolutely don’t want all your computers to download the same updates over the internet.
Ideally, you’ll want to set no or only a short delay on one computer on your local network. This computer should be your primary computer; the one that’s powered on the most. It’ll get updates earlier than other computers on your network, and can then share them with the rest of your network over time.
I’ve prepared a second registration file that makes more changes to how and when your computers use the Delivery Optimization service. It tweaks some of the conditions that govern when the Delivery Optimization service runs. I briefly discussed these earlier in the article. The registration file makes the following changes:
- Share updates of >2 MB instead of >100 MB.
- Cache files for two weeks instead of three days.
- Share updates when there is at least 16 GB of available disk space instead of 32 GB.
- Share updates when their battery is 30 % charged or more instead of 40 %.
The process is the same as the one specified above, but repeat the process with the msdosvc-run-conditions.reg file. To be clear, you can apply one or both registration files; apply both will help you save the most on your monthly data cap.
You can get a more detailed description of all the changed values and other available options by opening the Local Group Policy Editor app (only available on Windows Pro): Computer Configuration: Administrative Templates: Windows Components: Delivery Optimization. Or, you can review the Delivery Optimization reference guide.
Here’s the process to revert the changes applied in this article from your PC. Redownload the two registration files linked earlier in the article. Edit them and find all lines containing an equal sign and a value. Change each option to say, e.g. OptionName=-
(equals hyphen/minus.) Save the modified file, and double-click it to apply the changes. You can also delete the entries using the Registry Editor app.