A Simple Way to Fight FPS Dropping and Rubber Banding in Zwift

A Simple Way to Fight FPS Dropping and Rubber Banding in Zwift

You may have plenty of available CPU and GPU power in your Windows computer and still experience problems with dropping FPS (frames per second), stuttering, and rubber banding because of the way Zwift is written.

What can be done about that? Read on to find out more (some of the nerdier stuff is in the footnotes).

The problems

  • Zwift is very vulnerable to other programs running, often with a very visible drop in frames per second (FPS) if you launch another program.
  • Rubber banding can occur when the CPU is processing stuff for other programs. Zwift cannot get its calculation of position and screen updates done fluidly in this case, and especially in views 1 and 2 you may experience that odd back and forth rubber band effect.1
  • Another odd behavior is how Zwift freezes when it is processing screenshots.

A simple fix

A simple and easy fix for many of these problems is to increase the process priority for the ZwiftApp.exe process.2 By doing that Zwift simply gets higher priority for its data processing than most other processes on your computer. It is all it takes to make Zwift run visibly smoother!3

I’ve tested this repeatedly.4 A simple thing such as launching a browser or just switching to a browser with some animated SVG graphics would cause visible stuttering in Zwift at the normal process priority. Raising the process priority to ‘Above normal’ made Zwift run smoothly through the same scenarios, even when launching other applications in rapid succession.5 6

Set up once and worry no more

You can do it manually every time you have launched Zwift via the Windows Task Manager, but I’m going to explain how to set it up to be the standard whenever you launch Zwift.

It’s a three-step procedure:

  1. Download and install Process Hacker
  2. Launch Zwift and configure the process priority
  3. Zwift

Let’s do it!

Step 1: Download and install Process Hacker

You have to download and install a free, open source program called ‘Process Hacker’. It’s a replacement for the normal Windows Task Manager with a lot of extra functionality.

One of the many features is that it lets you save which priority a process (think ZwiftApp.exe) should run with whenever it runs. When ‘Process Hacker’ itself is running it monitors the other processes on your computer and can make your saved changes to process priority.

So, download Process Hacker (version 2.3.9) here: https://processhacker.sourceforge.io/

Run the setup program you downloaded. Just make a full installation, but if you want to customize the installation definitely remember to include the ‘User notes’ plugin in your installation.

I recommend you also choose the following options during install:

  • Start Process Hacker on system startup (otherwise you will have to start ‘Process Hacker’ manually)
  • Minimized on system tray

You can let ‘Process Hacker’ run all the time. To keep it hidden in the Taskbar tray when it is not used and to prevent you accidentally exiting it, the following options are very useful (set them via the ‘Options’ menu in the ‘Process Hacker’ program after installation):

  • Hide when closed
  • Hide when minimized

Step 2: Launch Zwift and configure the process priority

Now, launch Zwift. When the main game window opens after login and pressing ‘Lets go’, it’s time to make the configuration in ‘Process Hacker’ which we want.

Launch ‘Process Hacker’ if it’s not already opened.

In ‘Process Hacker’, search for ‘ZwiftApp’ in the search field top right.

Right click the line with ZwiftApp.exe, choose ‘Priority’, then ‘Above normal’.

Now comes the most important part: Right click the line with ZwiftApp.exe, choose ‘Priority’, then ‘Save for ZwiftApp.exe’ option at the bottom of the right click menu.

That’s it!

Step 3: Zwift

Well, just ride on.

As long as ‘Process Hacker’ is running (remember that you set it up to launch with Windows and to hide itself in the taskbar tray) it will set the process priority to ‘Above normal’ every time you launch Zwift.

Final remarks

This is definitely not the solution to all problems with stuttering, FPS drops, and rubber banding. It won’t make a slow computer more powerful, and it won’t dramatically increase the performance of Zwift. It just can help a bit in making Zwift run more smoothly. The effect you see can vary a lot, depending on your computer configuration, Zwift version etc.

Note: this post was originally published on ZwiftHacks

  1. Rubber banding can have other reasons, e.g. at high performing systems where the FPS gets capped at 60 FPS due to display limitations, so this is not the solution to all rubber banding issues
  2. This primarily makes sense if you run Zwift in window mode and run other programs in parallel with Zwift, but could also be beneficial in fullscreen mode if Zwift competes with other processes already running in advance.
  3. Zwift seems to be coded without considering that the user can be running other programs simultaneously such as browsers, OneDrive, and Dropbox. Naturally, this ‘fix’ doesn’t really improve the way Zwift is coded and how it works, but it does remove some of the visible symptoms it has.
  4. Windows 10, Version 20H2 (OS Build 19042.608), running Zwift version 1.0.57620.
  5. A downside to increasing the Zwift process priority will of course be that the priority of other processes will be lower, relatively speaking. They can be slowed a bit but for me that is definitely an acceptable tradeoff while zwifting. 
  6. There seems to be no particular benefit in increasing the Zwift process priority even further (to High or Realtime).

About The Author

Jesper Rosenlund Nielsen

Jesper lives in Vejle, Denmark and has been zwifting since 2015. He rides with World Social Riders whenever possible and also runs ZwiftHacks, the home of ZwiftMap, ZwiftPref, and other tools and hacks for Zwift riders. Find him on Strava

Subscribe
Notify of
guest
19 Comments
oldest
newest most voted
Inline Feedbacks
View all comments
Colin Peerman
Colin Peerman
5 months ago

excellent tip. If only those idiots could make it multi-threaded, so that 8 of my i9 cores could do something…🙄

Chan Stevens
Chan Stevens (@chanstevens)
5 months ago

Thanks for the tip. I run Zwift on potato hardware and on larger groups often find myself spit out the back when graphics get glitchy. I’ll close down Chrome and use this to boost Zwift priority.

Troels Walsted Hansen
Troels Walsted Hansen
5 months ago

Hi Jesper, thanks for the good post and tip on tool to save process priority. Despite using a fairly high-end PC (i7-8700, GTX 1060, 32GB RAM) I’ve also seen Zwift stutter during rendering and thought to look at process priority. Did you test whether Windows Game Mode makes a difference to this behavior? I think in theory it is supposed to recognize when games are running and boost their priority and/or reduce background task activity. Unfortunately Game Mode is a bit of a mystery, I haven’t found any details on exactly how it works or how to verify whether a… Read more »

Colin Peerman
Colin Peerman
5 months ago

My guess is it looks at either DirectX or GPU usage for a thread. If it’s the former, then Zwift won’t be picked up. TBH, my Zwift rig just does Zwift, so there’s not much else running. The lack of multi-threading isn’t helping, not just on Mac/PC, but even on most iOS/Android devices

Jesper Rosenlund Nielsen

No, I haven’t tested what impact Game Mode has. What Game Mode is definitely makes sense (prioritise GPU and CPU, reduce background tasks), but as you write it’s unclear how it is triggered. You can, however, use the XBox Game Bar to mark an application (read: Zwift) as a game.

Rick Wenger
Rick Wenger (@rwenger)
5 months ago

Another thing that helped me when raising priority didn’t help was making sure all my drivers were up to date as well as turning off some of the virus scanning that was set to happen really often. Great article and I really appreciate it!!!

Jesper Rosenlund Nielsen
Reply to  Rick Wenger

Thanks!

Anthony C Casto
Anthony C Casto
5 months ago

I run Zwift on my iPhone. Any way to “prioritize” the app on my phone?? Thanks.

Jesper Rosenlund Nielsen

No, that’s not possible

Dan Sturgeon
Dan Sturgeon
5 months ago

I can’t get past Norton when trying to download and execute. Consistently telling me there is malware hacktook prochacklg1 is infected. Is there a guaranteed clean version anywhere? Build seems to be 2.39.00124

Colin Peerman
Colin Peerman
5 months ago
Reply to  Dan Sturgeon

Well, you are using Norton. No point in trying to speed up Zwift with that anchor on your PC 🙄

Jesper
5 months ago
Reply to  Dan Sturgeon

The SourceForge download is the authoritative one and should be OK. I trust that more than I trust Norton in this case.

Besides that, IMO a hacktool warning is really most of all an annoyance and doesn’t mean that someone will hijack your computer. Hacktools are categories of software which can be used to patch or “crack” some software so it will run without a valid license or genuine product key. Too much legitimate software gets falsely flagged as hacktools.

steve
steve
5 months ago
Reply to  Dan Sturgeon

same here with kaspersky

Aaron Laing
Aaron Laing
5 months ago

Sorry, maybe a newbie question, but what phenomenon are you describing as “rubber banding”? In the Zwift context, I only know rubber banding as a *feature* of group workouts, where everyone is kept together regardless of output. I’m assuming that you’re talking about some sort of visual glitch in the case, though?

Jesper Rosenlund Nielsen
Reply to  Aaron Laing

Yes, it’s not the keep everyone together feature but a visual glitch where the point of view is shifted back and forth as was it attached to rubber band.

Kyle Bredesky
Kyle Bredesky (@kylebredesky)
5 months ago

This is awesome, thanks!!!

Dan Connelly
5 months ago

“renice” from the command-line should also work on a Mac — no need to install new software. Type “man renice”.

running tip
Member
running tip (@runningtip)
5 months ago
Reply to  Dan Connelly

The exact command that I found works is this, you need to do it once you’ve actually clicked the launch button in the Zwift splash/launcher app and ZwiftApp has started: FYI When you do this you’ll be prompted for your password: sudo renice -n -10 -p $(pgrep -x ZwiftApp) Explanation sudo : Allow me to execute as superuser (requires password) renice -n -10 : Increase the niceness priority by 10 -p $(pgrep -x ZwiftApp) : Do it for the process ID for ZwiftApp the -n argument will add or subtract the value of the current niceness: By default ZwiftAPp was… Read more »

A.K.
A.K.
4 months ago

If you’re a Windows user and don’t want to install anything to achieve the same result you can also do this:

  • Run Zwift (ZwiftApp.exe must be running)
  • Open a terminal (as Administrator) and use this command: wmic process where name=”ZwiftApp.exe” CALL setpriority “above normal”

This does not get saved permanently so you need to run this every time you run Zwift.

19
0
Would love your thoughts, please comment.x
()
x