Quick answer: Microstutter and poor frame pacing are about the consistency of frame delivery, not the average frame rate. Even at a high average FPS, if frames are delivered at uneven intervals, the motion judders subtly. Causes include inconsistent per-frame workload, present/vsync timing issues, and timing jitter in the update loop. The fix is to make frame times even, so each frame takes and is displayed for a consistent interval.
Frame pacing is the subtle cousin of stuttering: not occasional big hitches, but a persistent unevenness in how frames are delivered that makes motion feel slightly off, juddery, even though the FPS counter reads high and steady. It's a quality issue that players feel without always being able to name, and fixing it is about consistency of timing rather than raw speed.
What Frame Pacing Is
Smooth motion requires frames to be delivered at even intervals, each frame displayed for the same slice of time. Frame pacing is how consistent those intervals are. Good pacing: frames arrive every ~16.7ms like clockwork (for 60 FPS), and motion is smooth. Poor pacing (microstutter): frames arrive at uneven intervals, one frame after 12ms, the next after 21ms, even if the average is still ~16.7ms, and that unevenness makes motion judder subtly. This is distinct from a low average frame rate (everything's just slow) and from big stutters (occasional huge spikes); microstutter is small, persistent timing unevenness.
Because the average can look fine, microstutter is easy to miss in FPS measurements and easy to dismiss, but players perceive the judder as a lack of smoothness. The causes are anything that makes frame times uneven.
How to Diagnose It
Look at frame times, specifically their consistency, not the average. A frame-time graph reveals pacing: smooth pacing is a flat, even line; microstutter shows as small, persistent variation (jitter) in frame times even when the average is good. You're looking for unevenness, not spikes, the frame-time line wobbling rather than occasionally jumping.
Common causes to check: per-frame workload that varies frame to frame (some frames do more work than others), present/vsync timing mismatches (frames not aligned with the display refresh, causing judder even at matching FPS), and jitter in the update/timing loop (inconsistent delta times, timing measured inconsistently). Bugnet's performance monitoring captures frame-time data beyond averages, so the inconsistency that causes microstutter, the bad-case frame timing, surfaces in the data rather than being hidden by a healthy average FPS.
How to Fix It
Make frame times even. Stabilize the per-frame workload so frames take consistent time, avoid doing extra work on some frames (spread variable work evenly, avoid periodic spikes). Fix present/vsync timing, ensure frames are presented in sync with the display refresh and that your frame rate aligns with it (mismatches between render rate and refresh rate cause judder); proper vsync or frame-rate capping to a divisor of the refresh rate helps. Address timing jitter, use consistent, accurate timing for your update loop and delta times so motion is computed against even time steps, and avoid timing measurement that introduces jitter.
The goal is clockwork-even frame delivery: each frame taking and being shown for a consistent interval. After fixing, verify with a frame-time graph that the line is flat and even (good pacing) rather than wobbly (microstutter), measuring consistency, not just average. Smooth frame pacing is a subtle but real quality difference that players feel as polish, and it's achieved by evenness of timing rather than raw frame rate.
Microstutter is uneven frame delivery, judder even at high FPS, because the intervals between frames aren't consistent. Measure frame-time consistency and make delivery clockwork-even.