Have you ever noticed unexpected choppiness in a game where framerates and performance otherwise seem fine? This can manifest in many ways, and benchmarks don't always tell the whole story (which is why my tests included a 97 percentile minimum fps). Most recently, I was testing The Crew 2, a game with a hard 60fps framerate cap, and short, irregular frame dips—often referred to as microstutter—are definitely present.
There are multiple potential causes for microstutter, with possible solutions that may or may not work. But let's start by first explaining microstutter.
Let me first explain that microstutter isn't the same as the stutter associated with low framerates, or in some cases massive dips in performance while a game loads new assets. (Kingdom Come: Deliverance had severe stuttering at launch, mostly due to loading new textures and models for a complex environment.) Microstutter is more subtle and often harder to measure objectively—the best tools like Nvidia's FCAT involve color tagging of each frame received by a high-end capture card.
Blur Busters has a great webpage that can help you see microstutter in action. If you swap between the 'smooth' and 'microstutter' options, it's immediately obvious which one is better—and if you have a monitor with a high refresh rate, the test supports that as well. Microstutter most often occurs when the rate of new frames doesn't quite match up to your monitor's refresh rate and vsync is enabled.
There are other potential causes of microstutter, like drivers and/or multiple GPUs. SLI and CrossFire are both seeing less support these days, however, so I'm going to focus on the most common culprit these days: vsync and framerate caps.
With a 60Hz monitor, the screen updates every 1/60 of a second, and either a new frame is available in time or it's not. If it's not, the display shows the same frame as the previous update, giving you 30fps, and if a new frame is ready you get 60fps. Microstutter occurs when the framerate fluctuates just enough that you might average 60fps, but some frames come a bit early and others come a bit late, or in other words the frame pacing is just a bit off.
That's one reason I prefer much higher framerate caps. If an engine puts in a hard 60fps cap, it tries to have a new frame ready for each 60Hz screen refresh, and often other parts of the engine 'slow down' so that the frames don't finish too early, physics and netcode don't get messed up, etc. However, if there's a slight hiccup in the engine—a new texture needs to be loaded, or a new model, or maybe just some other background task—you can end up with a frame arriving 0.001 seconds too late. Oops, there's some stutter.
Depending on the game, this can be a frequent occurrence, and some people end up preferring a constant 30fps rather than aiming for 60fps and getting microstutter. Neither of those are desirable, especially on a fast PC.
How do you fix microstutter?
One option to combat microstutter is to disable vsync, but that has drawbacks as well. Now when a frame is ready from the engine, it will show up on your display. The problem now is that this can lead to tearing—where the next frame arrives in the middle of a screen update. If there's a lot of movement and action, you get a clear line across your display, and if the game is running at 60fps on a 60Hz display the tearing can remain in roughly the same location on your display for a long time.
This was clearly visible in The Crew 2, and it occurs in just about every game where there's a 60fps maximum built into the engine.
There's not much you can do with games that include a framerate cap, especially if that cap is linked to physics, AI, network code, or other elements—that's generally not the 'right' way to code a game engine, but that's a different topic. You can try lowering your quality settings, in the hope of seeing less frequent dropped frames and stutter, but even that doesn't always work. The more expensive solution is to throw hardware at the problem.
So here's the easy fix for microstutter: a variable refresh monitor.
Nvidia and AMD recognize the problem with microstutter, and the solution is to have hardware that can sync the screen refresh rate to the games rather than the other way around. Nvidia's G-Sync and AMD's FreeSync technologies approach things in a similar fashion. When a frame is finished by the GPU, rather than waiting for the next screen refresh to come along, the GPU sends out the new frame and sends a signal to the monitor saying, basically, "refresh now." The best such displays have a wide range of refresh rates, from 40 to 144Hz, which virtually eliminates microstutter. There may be variations in framerate, but running at anywhere from 40 to 80 fps without tearing or stutters is far less noticeable than discrete jumps between 60 and 30 fps.
If you don't want to lower settings, disable vsync, or buy a G-Sync or FreeSync display, there are still ways to try to reduce microstutter. Updating to the latest graphics drivers might help (or in some cases, you might try rolling back to older drivers), though this is often on a game-by-game basis. But AMD and Nvidia have been tuning drivers for years and usually the drivers aren't the root cause.
Another option is to close any unnecessary background tasks—that includes your browser, Discord, FRAPS, and any other utilities. Run as clean as possible and see if the problem persists. If it doesn't, you can start reintroducing background tasks and try to determine the culprit.
One final option is something I already mentioned: impose a framerate cap. If a game can't maintain 60fps, try running it at 30fps. Or if you have a 144Hz display, aim for half or one third your refresh rate. Some games have a framerate cap in the settings; otherwise, you can use MSI Afterburner plus Rivatuner, AMD's Radeon Settings, or other utilities. Ideally, you want to set the framerate cap slightly above your monitor's refresh rate (like 72fps on a 60Hz display) and then enable vsync, but if a game has a built-in cap at or below your monitor's refresh rate, you'll need to go lower. Opinions on whether a smooth 30fps is better than 60fps with microstutter vary, so give it a shot.
Ultimately, there's no single guaranteed fix to every cause of microstutter. Some of it is specific to game developer decisions (arbitrary low framerate caps are bad), occasionally it's caused by drivers, and sometimes it's caused by the multi-tasking nature of modern operating systems and fluctuations in game environments.
Hardware like G-Sync and FreeSync can be part of the solution, and you can just try faster graphics cards and processors, more memory, etc., but throwing money at the problem only goes so far. In situations where microstutter does occur, the above can help you track down and hopefully cure the problem.