Frame time and 1% lows
Average framerate is the number every benchmark leads with and the number that describes your experience least well. A system averaging 200 fps with regular stutters feels worse than one holding a steady 144, and the average cannot tell you which you have.
Frame time is the unit, framerate is the summary
A game does not produce a framerate. It produces frames, each of which took a certain number of milliseconds. Framerate is a summary statistic computed from those durations, and like all summaries it hides the distribution.
Consider two seconds of gameplay:
| System | Frame times | Average fps | Feels like |
|---|---|---|---|
| A | 6.9, 6.9, 6.9, 6.9, 6.9 ms | 144 | Perfectly smooth |
| B | 4.0, 4.0, 4.0, 4.0, 18.5 ms | 144 | Smooth with a visible hitch every few frames |
Both average 144 fps. Only one of them is playable in a duel.
How to read 1% and 0.1% lows
| Metric | What it measures | Use it for |
|---|---|---|
| Average fps | Mean over the whole run | Comparing hardware in reviews. Little else. |
| 1% low | The slowest 1% of frames | Perceived smoothness. This is the number to optimise. |
| 0.1% low | The slowest 0.1% of frames | Detecting rare severe stutters, such as shader compilation. |
| Frame time graph | Every frame, plotted | Diagnosing the pattern, which tells you the cause. |
Reading the pattern
A frame time graph is a diagnostic instrument, not just a score. The shape tells you what is wrong.
| Pattern | Likely cause | Fix |
|---|---|---|
| Flat line with occasional single tall spikes | Shader compilation, asset streaming | Precompile shaders, faster storage, replay the area once |
| Regular spikes at a fixed interval | A background process on a timer | Find it in task manager, disable or reschedule it |
| Gradually rising baseline over a session | Thermal throttling, or a memory leak | Check temperatures and clocks; restart to test for a leak |
| Noisy baseline, no clear spikes | CPU bound with variable work per frame | Lower CPU-side settings, or a faster CPU |
| Sawtooth pattern | Vsync or a limiter interacting badly with the frame pacing | Change the cap, or move the cap in-game rather than driver-level |
What to target
The competitive goal is straightforward once you have the right metric:
Targets
- 1% low above your refresh rate, measured in a busy fight rather than a menu.
- 1% low within 60 to 70% of your average. A wider gap indicates a bottleneck worth investigating.
- No 0.1% low below half your refresh rate. Frames that slow means a visible hitch.
- Prefer consistency to peak. Lowering a setting that removes spikes is worth more than one that raises the average.
Notice that this reverses the usual advice. Most settings guides help you raise your average. For competitive play you should be looking for the setting that removes your worst frames, which is often a different setting entirely, frequently something related to texture streaming or shadow detail.
Related reading
- FPS and refresh calculator.
- Reflex and the render queue, which also affects frame pacing.
- Refresh rate, which your 1% low should be feeding.
Frequently asked questions
What are 1% lows?
Take every frame rendered during a benchmark, sort them by how long they took, and look at the slowest 1%. The framerate corresponding to that group is your 1% low. It describes the worst moments rather than the typical ones, which is why it tracks perceived smoothness far better than the average.
What is a good 1% low?
As close to your average as possible. A 1% low within 60 to 70% of the average is normal and fine. Below about half your average indicates a real problem: usually a CPU bottleneck, a memory or storage stall, or a background process.
Why does my game feel stuttery at high framerate?
Because the average is high while individual frames are not consistent. A 5 ms frame followed by a 25 ms frame averages to a perfectly respectable 66 fps, and feels like a hitch. Frame time consistency, not framerate, is what smoothness actually is.
Should I target framerate above my refresh rate?
Target 1% lows above your refresh rate, which is a stricter and more useful goal. If your 1% low is above your refresh rate, every refresh has a fresh frame even in the busiest moments, which is the outcome you actually want.
What causes frame time spikes?
Most commonly: shader compilation on first encounter with an effect, asset streaming from storage, a background process taking CPU time, thermal throttling, or garbage collection in the engine. The pattern tells you which. Spikes on new areas suggest streaming or shaders; periodic spikes suggest a background process; spikes that worsen over a session suggest heat.