You may have plenty of available CPU and GPU power in your Windows computer and still experience problems with dropping FPS, 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).
- 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, and especially in views 1 and 2 you will experience that odd back and forth rubber band effect.1
- Another odd behaviour is how Zwift freezes when it is processing screen shots.
A simple fix
A simple and easy fix for many of these problems is to increase the process priority for the ZwiftApp.exe process2. 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 repeatedly4. 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:
- Download and install Process Hacker
- Launch Zwift and configure the process priority
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 customise 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 that you accidentially exit 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 its 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.
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 7
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.
- 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
- 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. Note added 2020-10-27 17:06 CET
- 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.
- Windows 10, Version 20H2 (OS Build 19042.608), running Zwift version 1.0.57620. Note added 2020-10-27 17:15 CET
- 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.
- There seems to be no particular benefit in increasing the Zwift process priority even further (to High or Realtime).
- Remarks added 2020-10-27 17:07 CET