Way to limit bandwidth of programs on Windows?

220,187

Solution 1

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

Solution 2

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.

Solution 3

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.

Solution 4

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)

Solution 5

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:

  1. Select the network adapter to use in "Network Interfaces"
  2. Add a process definition for the program to throttle
  3. Add a filterset with a rule for the defined process
  4. Enable the speed limit traffic shaper for that filterset and apply
  5. Click "Start/Stop Capture" to enable/disable throttling
Share:
220,187

Related videos on Youtube

James McMahon
Author by

James McMahon

Updated on September 17, 2022

Comments

  • James McMahon
    James McMahon almost 2 years

    Is there a technique in Windows that can selectively limit bandwidth of a running process?

    • bgmCoder
      bgmCoder almost 9 years
      There is a whole list of applications here that can do this: alternativeto.net/software/netbalancer
    • Admin
      Admin almost 8 years
      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.
  • demonkoryu
    demonkoryu over 11 years
    No, the lite/pro versions, which allow traffic limiting, aren't free.
  • GSerg
    GSerg about 11 years
    This one, on contrary, works quite good on Windows XP.
  • Dan Atkinson
    Dan Atkinson over 7 years
    NetLimiter 4 still has the limiting functionality, and it's in the free version, but is time-limited.
  • Dan Atkinson
    Dan Atkinson over 7 years
    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.
  • bebbo
    bebbo over 7 years
    If 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.
  • zaTricky
    zaTricky over 7 years
    I 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
  • Gras Double
    Gras Double about 7 years
    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".
  • zaTricky
    zaTricky about 7 years
    Sigh. Curious now about when that changed. I haven't installed Origin since I last "refreshed" my gaming desktop.
  • pgr
    pgr about 6 years
    The 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...
  • theyetiman
    theyetiman over 4 years
    Doesn't work. It's only for outbound traffic, not inbound.
  • user5858
    user5858 over 3 years
    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.
  • gawkface
    gawkface over 3 years
    Enabling gpedit in Win 10 Home edition: ghacks.net/2019/01/07/…
  • thepaulpage
    thepaulpage about 3 years
    I tried this and did not get any results. Is this still a viable way of solving the problem?
  • bebbo
    bebbo about 3 years
    @thepaulpage: have a look to my other answer and try TMeter Free
  • Marcus Mangelsdorf
    Marcus Mangelsdorf over 2 years
    @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."