Is there a technique in Windows that can selectively limit bandwidth of a running process?
-
4There is a whole list of applications here that can do this: alternativeto.net/software/netbalancer– bgmCoderJul 29, 2015 at 15:17
-
NetBalencers’ new updates do not limit programs as per their statement, the trial is only 7 days, you can only limit 3 softwares (when it does decide to work) and it costs a whopping 50 bucks for the full service. Don’t even bother.– user614477Jul 7, 2016 at 9:37
5 Answers
I use Net Limiter, which has a free version, but unfortunately you'll need to pay for the limitation feature.
NetLimiter is an ultimate internet traffic control and monitoring tool designed for Windows. You can use NetLimiter to set download/upload transfer rate limits for applications or even single connection and monitor their internet traffic.
Along with this unique feature, Netlimiter offers comprehensive set of internet statistical tools. It includes real-time traffic measurement and long-term per-application internet traffic statistics
-
8No, the lite/pro versions, which allow traffic limiting, aren't free. Mar 28, 2013 at 10:34
-
-
1NetLimiter 4 still has the limiting functionality, and it's in the free version, but is time-limited. Oct 21, 2016 at 17:02
-
I've paid version but netlimiter/netpeek don't work to limit. Both simply can hang full network requiring restart. On two Windows10 i've already tested.– user5858Jan 5, 2021 at 16:47
You can use Windows Group Policy to throttle the bandwidth of any process. Go to:
- Start Menu > Run > gpedit.msc
- Computer/User Configuration (pick one or the other) > Windows Settings > Policy-based QoS
Here you can see the current policies and create new ones by:
- Either right clicking "Policy-based QoS" or going to "Action" > Create new policy...
- Then follow the wizard to create a new throttling policy.
The wizard allows you to create a policy to throttle bandwidth for either:
- Everything on your computer
- Specific processes
- Specific websites (only for applications using HTTP protocols)
And your policies can then be filtered by:
- TCP or UDP protocols
- Source/destination IP
- Source/destination ports
You can also create these policies in Powershell by running:
New-NetQosPolicy -Name "FTP" -AppPathNameMatchCondition "ftp.exe" -ThrottleRateActionBitsPerSecond 1MB
Although this might require administrator rights, and there seems to be a bug where policies created like this will not appear in the GUI.
-
7
-
1
-
1@gawkface: Seems like gpedit.msc will be available but won't actually work if you follow the instructions linked. It says on the site: "The method described below adds the Group Policy Editor GUI to the operating system but not the functionality." Jan 17, 2022 at 7:39
There are good reasons to look at the "Internet facing router" approach for managing a network as a whole - however as the original question was specific and the user may very well be the only computer on the network, that is a secondary concern.
NetBalancer
Per one of the other top answers, for a while I tested out NetBalancer. It works really well - and is easy to configure.
NetBalancer is available for purchase on their web page for about $50. The trial/free version allows you to monitor connections - but does not allow throttling.
NetLimiter
The alternative is NetLimiter. It has a free trial period - but starts at ~$20 for the Lite version or ~$30 for the Pro version. NetLimiter is the tried-and-tested go-to application for many SysAdmins.
When NetLimiter's trial ends, until you buy a license, it becomes a monitoring-only tool - and no longer supports throttling. This can still be useful - but not for this use case.
Using a Router (with an explanation of why this isn't a good approach to this use case).
Though using a smart/highly-configurable router is usually the better approach to wholistic network management, the disconnect between that and the original question is not explained in other answers. The original question is specifically asking about a process - which a router has no way reliably to identify.
The one variation that is close to useful on this end is if an application only communicates over a specific channel or type of traffic that easily can be identified by the router. An example below is of how EA's Origin downloads worked at one point:
Origin presently uses Akamai. Typically I set automatic downloads/updates to run at any time - but I'd prefer that it not use all the line capacity while I'm busy doing other more important things. Origin happens to be very bad at this sort of thing, thus it doesn't support download schedules or download throttling. Currently my desktop is downloading a game using the server "a1750.d.akamai.net". A MikroTik router (an example of a smart router) can take note that this DNS name was used (it will be in the DNS cache with an IP address) and can be configured temporarily to add the destination server's IP address to an "address list". All traffic to/from the address list can be added to a throttled queue thereby, technically, throttling a single application.
The approach above is naive however. EA could at any time change the server name, the protocol used, or another unrelated service using the Akamai infrastructure could be inadvertently throttled. Now my rule is useless and broken or, worse, is throttling something unrelated.
-
I'm not sure the free version of NetBalancer still allows bandwidth limitation. Quoting the download page: "The unregistered version works as a monitoring application only, and supports no priorities or rules". Apr 6, 2017 at 1:06
-
Sigh. Curious now about when that changed. I haven't installed Origin since I last "refreshed" my gaming desktop.– zaTrickyApr 6, 2017 at 12:57
Here is my poor mans throttling:
It does not exactly limit the bandwith, it rather suspends/resume the bandwidth eating process and thus frees some bandwidth for other applications. And it's free!
You need PsSuspend.exe (I put this file into C:\tools\sysinternals) and a batch file (e.g.) slow.bat:
@echo off
:START
c:\tools\sysinternals\pssuspend.exe %1 >NUL: 2>&1
timeout /T 1 /NOBREAK >NUL:
c:\tools\sysinternals\pssuspend.exe -r %1 >NUL: 2>&1
timeout /T 1 /NOBREAK >NUL:
goto START
Now open a command line as administrator and run the batch file with the throttles program as parameter
slow.bat filetransfer.exe
(replace filetransfer.exe with your program name)
If you are done, hit CTRL-C and cancel the batch.
If the program is still running consider to resume the program in case you interrupted the batch while the program was suspended:
c:\tools\sysinternals\pssuspend.exe -r filetransfer.exe
(replace filetransfer.exe with your program name)
-
This doesn't really solve the issue. It's a single process fix, you have to know the process which is hogging the bandwidth, and you have to not be actively using it. Oct 21, 2016 at 17:06
-
3If you want to "limit the bandwidth of a running process" (that is the question), you know the process, right? And my processes which eat all the bandwidth are especially uploads (makes my internet not usable for anything else) and maybe also downloads. My "poor man's throttling" does the job: I can upload and still use the internet. And yes - it's not a perfect solution. It's for poor men - not buying some software.– bebboOct 21, 2016 at 20:34
-
1I have to agree with @dan-atkinson. NetBalancer is a good example where the free version will work perfectly well in the same use-case as this. This method also has limitations: - Requires cumbersome/manual steps - There is no way to specify what the bandwidth limit should be. - This method can simply shift the "stable" unwanted usage into less-desirable peaks-and-troughs. - The application will become unresponsive/laggy– zaTrickyNov 7, 2016 at 9:28
-
1The geek in me wonders if this could actually be a good, cheap way to get things done, but with a much lower timeout like 50ms. So there would be a lot of suspending/unsuspending, but the experience could be smoother.I don't know how the time in suspension actually maps out to a reduced upload rate, but it's something to experiment with...– pgrMay 5, 2018 at 16:06
-
1
You can use TMeter Free from http://www.tmeter.ru/en/.
The many steps to configure it for throttling can be found e.g. here: https://www.howtogeek.com/347711/how-to-limit-any-applications-bandwidth-on-windows/
The summary is:
- Select the network adapter to use in "Network Interfaces"
- Add a process definition for the program to throttle
- Add a filterset with a rule for the defined process
- Enable the speed limit traffic shaper for that filterset and apply
- Click "Start/Stop Capture" to enable/disable throttling