Reduce game network latency in Windows 7 or Vista


After installing Windows 7 I noticed a slight increase in network latency in several online games. It wasn’t a big deal – I’m talking 200-300ms, but this is on a connection that was reliably < 100ms in the past. Beyond the obvious settings in Windows or on your router, here’s a list of tweaks that may help quite a bit. It involves disabling Nagle’s algorithm, also commonly known as TCP no delay, which is basically an optimization of network traffic that tries to reduce overall packet volume but can cause extra latency in the connection. This should work on Windows 7 or Vista, though the same principle can probably applied to other operating systems as well.

  1. From a command prompt (usually in All Programs -> Accessories -> Command Prompt) run “regedit”
  2. Browse to HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\Tcpip\Parameters\Interfaces
  3. Browse the items under interfaces until you find one that has an IPAddress entry matching the network interface you want to affect (typically LAN IP addresses start with 192.168 or 10.0); note that if your IP address is automatically assigned by a DHCP server you may need to look for a matching DhcpIPAddress instead of IPAddress
  4. Right-click on the interface and select New > DWORD (32-bit) Value, name it “TcpAckFrequency”
  5. Right-click the new TcpAckFrequency value and select Modify, enter “1″ (Hexadecimal radio button should be selected)
  6. Right-click on the interface and select New > DWORD (32-bit) Value, name it “TCPNoDelay” (note that TCP is all uppercase this time – that’s intentional)
  7. Right-click the new TCPNoDelay value and select Modify, enter “1″ (Hexadecimal radio button should be selected)
  8. Verify that both TcpAckFrequency and TCPNoDelay now show up in the adapter’s property list with types REG_DWORD and values 0×00000001
  9. Exit regedit and reboot (reboot is necessary for the changes to take effect!)
  10. Play a game and enjoy your new low ping

This decreased my ping in most games from 200-300ms to 50-60ms, which matches the latency I would see via a tracert to the game’s server.

Share

, , , , ,

  1. #1 by buy kinect on October 24, 2010 - 4:18 am

    Hi there,

    I have a question for the webmaster/admin here at lifeandcode.net.

    Can I use part of the information from this post above if I provide a link back to this website?

    Thanks,
    Jules

  2. #2 by jb on October 29, 2010 - 11:31 am

    Bonjour, j’ai suivi tous le déroulement pour me retrouver avec la meme latense(200 ping). Je possède Windows 7.

  3. #3 by Jdeb on November 15, 2010 - 5:04 pm

    are you supposed to do anything on step 3 or do you just find it?

  4. #4 by mohammed on November 16, 2010 - 2:48 pm

    umm at point number 8..how do i actually verify that TcpAckFrequency and TCPNoDelay now show up in the adapter’s property list with types REG_DWORD and values 0×00000001
    i went up to the adapters folder but didnt find it XD!

  5. #5 by Fredy on November 18, 2010 - 12:07 pm

    Didn’t Work For Me :S:S
    I have internet speed of 2MBs and i download with 200 KB\s But my ping is always around 300…..the maximum it gets is 250
    and after i did this it didn’t change….HELP!

  6. #6 by jeyy on November 23, 2010 - 9:55 am

    Where is “the property list?”

  7. #7 by jeyy on November 23, 2010 - 10:31 am

    “right click on the interface” ?? right click on “interfaces”? or the interface option???

  8. #8 by jeyy on November 23, 2010 - 6:03 pm

    I got it, seems to work..nice trick.

  9. #9 by Adam on November 28, 2010 - 10:13 am

    Clarifications:
    Step 3: nothing is required other than clicking on the string that brings up the long list in the right-hand pane which includes your IP address.

    Steps 4 and beyond: “Right click on the interface” simply means right-click in the right-hand pane (the one which contains your IP address) to open a drop-down menu. “Modify” appears in that menu.

    Hope this helped. Any other questions, email me at macchiavelli64@gmail.com

  10. #10 by DaDeceptiveOne on December 3, 2010 - 8:30 am

    Thanks worked like a charm^^
    Ping in WoW went from 120 to 13!!!

  11. #11 by tommythepitbull on December 13, 2010 - 4:57 pm

    wow works lowered my ping from 300ms to 130ms
    thanks man now i call it world of warcraft

  12. #12 by tommythepitbull on December 23, 2010 - 6:15 pm

    tommythepitbull :
    wow works lowered my ping from 300ms to 130ms
    thanks man now i call it world of warcraft

  13. #13 by some random guy on December 28, 2010 - 2:18 pm

    if we connect to a different network will we have to redo this?
    thanks anyway i’m gonna test now.

  14. #14 by Ormo80 on January 11, 2011 - 9:11 am

    Gday guys just tried this and wow launcher cant find internet connection any ideas .. on how to fix this ? please help

    thankyou in advance

  15. #15 by lapc506 on January 14, 2011 - 5:20 pm

    I pressed Win+R (or Super+R) keys and wrote this:

    C:\Windows\System32\cmd.exe /k %windir%\system32\ipconfig.exe

    and then I saw an connection with the name of the connecction I was using, I looked up for it IP number, and that’s how I found my interface in STEP 3
    I think, what this “post-writer” wanted to meant at Step 8 is to press F5 to refresh the Registry Editor, isn’t it? Am I wrong?

    Sorry for my english XD

  16. #16 by Dio on January 16, 2011 - 2:53 pm

    Hmmm… Probably better to set TCP_NODELAY socket option to false in the application, rather than make a global system setting change in the registry that effects system services. The goal should be to limit the scope of the change and enable the desired behavior in just the effected application rather than changing the behavior of the entire system.

  17. #17 by mats on January 21, 2011 - 5:55 pm

    If I use Windows7(64) will I have to use the 64 bit dword instead of the 32 bit? Used the step-by-step guide, but noticed no decrease in latency. :/

  18. #18 by jonathon on January 24, 2011 - 9:34 am

    note that the registry hack requires the msmq and then apply it to it as well tcpnodelay in the tcpip root folder and then the no delay in the msmq root folder there are instructions to this if if you look for the registry lattency hack in google,if you do it incorrectly you can damage the rate of your downloads and increase lattency rather then decrease it

  19. #19 by Semidoppel on February 1, 2011 - 10:03 pm

    Nice tip! I’ll try this one!

  20. #20 by mussen on February 18, 2011 - 7:43 pm

    mats :
    If I use Windows7(64) will I have to use the 64 bit dword instead of the 32 bit? Used the step-by-step guide, but noticed no decrease in latency. :/

    …I had the same experience and the same question….anyone?

  21. #21 by lucb1e on February 20, 2011 - 3:22 pm

    “It wasn’t a big deal – I’m talking 200-300ms”
    Erm, that’s a HUGE delay. If i have over 200ms ping in openarena (quake3-like game), it’s nearly not playable when used to 30-60ms lag.

    Applied the changes (XP though), curious if it will have any effect. Not sure if I’ll reply again though, will see…

  22. #22 by Dustin on March 3, 2011 - 10:02 pm

    Even if you’re on a 64-bit platform the values entered should be 32-bit DWORD. 64-bit vs. 32-bit OS has nothing to do with this value.

  23. #23 by Nelson on March 4, 2011 - 11:51 pm

    Dustin :
    Even if you’re on a 64-bit platform the values entered should be 32-bit DWORD. 64-bit vs. 32-bit OS has nothing to do with this value.

    i used 64-bit DWORD and had no issues. So it worked for me

  24. #24 by Proxamix on March 23, 2011 - 10:02 pm

    Jdeb :
    are you supposed to do anything on step 3 or do you just find it?

    Just find it. The ending part (data) you should find one that has your computers IP. thats the folder you want to do this in

  25. #25 by 2dor on April 6, 2011 - 8:49 am

    8. Verify that both TcpAckFrequency and TCPNoDelay now show up in the adapter’s property list with types REG_DWORD and values 0×00000001

    If not , what to do ?

  26. #26 by Jason on April 26, 2011 - 2:47 pm

    Um… I have 3 folders with strands. Which one do I put it in? Email me? jason_pontalion@yahoo.com

  27. #27 by Happy93 on April 28, 2011 - 5:06 pm

    OMG its work men !!!!!!!!!! I love you …

  28. #28 by Happy93 on April 28, 2011 - 5:07 pm

    I have test this for many time my ms doesnt reach 2xx++ anymore ^-^

  29. #29 by 2dor on May 3, 2011 - 9:34 am

    8. Verify that both TcpAckFrequency and TCPNoDelay now show up in the adapter’s property list with types REG_DWORD and values 0×00000001

    If not , what to do ?

  30. #30 by David Forrester on May 11, 2011 - 1:57 pm

    yeah, it works! that’s great..thx for the tip!

  31. #31 by iLoveDota on May 21, 2011 - 6:27 pm

    Hi. I followed your steps in but i cant sill see it in adapaters. Did i do something wrong.
    I dont understand #3 as well. So i skip it and just create TcpAckFrequency and TCPNoDelay. please help me. I cand send you a screen shoot of my regedit

  32. #32 by koneko on June 5, 2011 - 9:06 am

    OMG!!! you have NO idea how amazingly this worked on my laptop. I just had windows 7 installed and my mmo’s were running horribly slow, my ping was between 5000 and 9500. i kept dying because of the lag.

    I just did this, followed all the steps and PRESTO! lol. i have never had such a low ping. it is at 150. that is amazing! Thank you SO very much for this!

  33. #33 by jhay on June 8, 2011 - 4:47 am

    hi guys..i cant verify both TcpAckFrequency and TCPNoDelay in adapter’s property list..plz teach me how to verify it

    i see this REG_DWORD 0×00000001 (1) inside Interfaces folder w/ named TcpAckFrequency and TCPNoDelay..is this right?

    and can u teach me how to reboot windows7 w/o cd/dvd..tnx for help

  34. #34 by Mohit816 on June 10, 2011 - 1:14 am

    8. Verify that both TcpAckFrequency and TCPNoDelay now show up in the adapter’s property list with types REG_DWORD and values 0×00000001

    If not , what to do ?

  35. #35 by viragiste on June 12, 2011 - 1:24 am

    FAIL !
    Modifying the registery key values or any other thing in your OS will just “Fake” your in-game ping, making the game server calculate a wrong latency and thus showing a lower ping. But the lag will be always there.
    This is quite similar to what happens with Source engine based games when a client sets cl_cmdrate to 101 (beyond limit) the server will calculate a value of 5ping o.0 ! but the game is still laggy
    the only way to reduce lag effectively is to connect to acloser server and/or get a better connection !

  36. #36 by Belinrahs on June 20, 2011 - 4:58 pm

    @viragiste: Actually, yes it does work. TCPAckFrequency and TCPNoDelay work by not requiring servers to acknowledge TCP packets and by not causing the OS to buffer large sets of packets before sending them (the Nagle algorithm), respectively. This does, in fact, reduce latency by causing packets to come in a linear, even flow, rather than in large groups at once, the former being much, much better for real-time games like World of Warcraft.

  37. #37 by dota on June 24, 2011 - 9:02 am

    damn it works like a charm dude.thanks for this tips bookmarked

  38. #38 by Mo on June 30, 2011 - 10:18 pm

    dosen’t work for me :(
    i play Arma2 game servers…ping is still on 300 and more
    win 7 64bit

  39. #39 by JAmes on July 5, 2011 - 12:57 am

    what if i hv a dynamic IP adress?

  40. #40 by Pervitin on July 12, 2011 - 8:37 pm

    2dor :
    8. Verify that both TcpAckFrequency and TCPNoDelay now show up in the adapter’s property list with types REG_DWORD and values 0×00000001
    If not , what to do ?

    same problem here …

  41. #41 by iJonJon on August 12, 2011 - 12:56 pm

    Step 8 im having a problem , where do i have to see the TcpAckFrequency and TcpNoDelay on the Adapter’s Property list….Where is the Property list? i see alot of people having trouble and no one here is helping with that question at all!!!

  42. #42 by Enough of this crap on August 18, 2011 - 7:30 am

    where do i have to see the TcpAckFrequency and TcpNoDelay on the Adapter’s Property list….Where is the Property list? i see alot of people having trouble and no one here is helping with that question at all!!!
    <—-I WANNA KNOW THE SAME.
    I did everything else step to step and my latency still sucks.Jumps from 50-200 all LOL games long.While at the old times with my 1MB internet on my XP i had lik 40ms.
    SO PLEASE FOR THE GODSAKE ANSWER THIS QUESTION,CAUSE LIKE 50GUY ASKED ALREADY.
    Sorry im pissed off,cant solve this latency issue for like a week and i can’t play properly,my team starts to be angry too…

  43. #43 by Dustin on August 18, 2011 - 2:12 pm

    The list should be in a pane to the right of the tree. There will be a whole list of existing properties and you should see those you created added to them. But technically, if you followed the other steps it should work whether you check this or not, it’s just to verify.

  44. #44 by ViC on August 20, 2011 - 12:03 am

    If you have a Win 7 64-bit would you have to select DWORD (64-bit) instead of 32-bit?

  45. #45 by Delive on August 31, 2011 - 9:14 am

    didnot work or better to say didnot know how to do it plzzz help!!! my ping 450 O_Q

  46. #46 by Sabari on September 1, 2011 - 8:43 pm

    Im using reliance 3g datacard ; im staying at chennai ; my ping used to be around 250 to 300 while playing cs 1.6 ; if i fix this trick can it be reduced below 100 or atleast below 150 ; then wen changes are made will it affect my systems internal coding system ; will this oly reduce the ping level in the screen alone or there ll be even reduced lagging while playing uh ……pls reply for my quest. im using win 7 ultimate 64 bit should i register as 64 instead of 32 or just 32 even wen it is 64 ……reply soon

  47. #47 by Sabari on September 2, 2011 - 5:46 am

    Sabari :
    Im using reliance 3g datacard ; im staying at chennai ; my ping used to be around 250 to 300 while playing cs 1.6 ; if i fix this trick can it be reduced below 100 or atleast below 150 ; then wen changes are made will it affect my systems internal coding system ; will this oly reduce the ping level in the screen alone or there ll be even reduced lagging while playing uh ……pls reply for my quest. im using win 7 ultimate 64 bit should i register as 64 instead of 32 or just 32 even wen it is 64 ……reply soon

    Sabari :
    Im using reliance 3g datacard ; im staying at chennai ; my ping used to be around 250 to 300 while playing cs 1.6 ; if i fix this trick can it be reduced below 100 or atleast below 150 ; then wen changes are made will it affect my systems internal coding system ; will this oly reduce the ping level in the screen alone or there ll be even reduced lagging while playing uh ……pls reply for my quest. im using win 7 ultimate 64 bit should i register as 64 instead of 32 or just 32 even wen it is 64 ……reply soon

    Sabari :
    Im using reliance 3g datacard ; im staying at chennai ; my ping used to be around 250 to 300 while playing cs 1.6 ; if i fix this trick can it be reduced below 100 or atleast below 150 ; then wen changes are made will it affect my systems internal coding system ; will this oly reduce the ping level in the screen alone or there ll be even reduced lagging while playing uh ……pls reply for my quest. im using win 7 ultimate 64 bit should i register as 64 instead of 32 or just 32 even wen it is 64 ……reply soon

  48. #48 by Vita V. on September 9, 2011 - 9:14 am

    For Windows 7, try this tutorial. (Works for Vista as well.) http://www.youtube.com/watch?v=aKV4iHvdR2M

  49. #49 by G-Light on October 14, 2011 - 8:02 am

    Well I was sceptical about this, but it’s really working!!! I have Windows 7 32 bit, fast internet, good machine, but I was a hardcore lagger in AVA.I was playing on minimum graphics, now I’m playing maxed out without a single lag…it doesn’t affect download or upload speed, but my ping is always around 40.I can’t thank you enough!!! :D DD

  50. #50 by John Thomas on October 25, 2011 - 12:43 pm

    I tried this for freelancer. And initially on logging on the ping will show around the 20 mark. Within 2 minutes of playing though it is back up around the 150 to 160 mark. I think all this is doing is initially fooling the ping rate in game and then reverting to the true ping once the game has time to catch up.
    Any other briiliant ideas Dude?;))

(will not be published)