Average FPS Can Hide a Bottleneck: Read the Full Benchmark
A worked explanation of average fps can hide a bottleneck read the full benchmark, including the key limitation and a checkable example.
Average FPS Can Hide a Bottleneck: Read the Full Benchmark
You see a smooth 100 FPS average in your benchmark summary and assume the system is balanced. That average fps can hide a bottleneck read the full benchmark to see the real story. The arithmetic mean of frame rates over a test interval discards the temporal distribution, so a run averaging 100 FPS can contain 50ms frame-time spikes that feel like a stutter every few seconds. The summary that reveals the inconsistency is the percentile distribution, specifically the 1% low and 0.1% low FPS values.
What a 1% Low Tells You That Average FPS Conceals
Frame time consistency matters more than the headline number. Average FPS is calculated as total frames divided by total seconds. In a 10-second benchmark that records 1000 frames, the average is 100 FPS. But if 900 of those frames come in at a 10ms frame time (100 FPS) and 100 frames take 50ms each (20 FPS), the average stays at 100 while the frame time spikes are the frames you actually feel as a stutter.
The 1% low FPS is the frame rate below which the worst 1% of frames fall. In that example, the worst 1% is 10 frames at 50ms, giving a 1% low of 20 FPS. That 20 FPS number reveals the inconsistency the average hid. The 0.1% low captures rarer but perceptible stutters, a single frame every five seconds at 100ms frame time (10 FPS) barely moves the average from 60 to 59.8 but produces a 0.1% low of 10 FPS.
PresentMon, the open-source standard from Microsoft used by Gamers Nexus and Hardware Unboxed, captures frame times at sub-millisecond precision. It computes percentiles by sorting all frame times and taking the 99th percentile for the 1% low. No gaming benchmark standard exists, but PresentMon is the de facto reference.
A Worked Example
A concrete case makes the limitation obvious. A system running an Intel Core i5-12400F with an RTX 4070 Super at 1440p in a demanding title records 1000 frames over 10 seconds. Average FPS: 100. Frame times: 900 frames at 10ms (100 FPS), 100 frames at 50ms (20 FPS). The 1% low FPS is 20. That 80 FPS gap between the average and the 1% low is the stutter you would feel as a visible hitch every time the CPU hits a cross-load spike from background Discord or a driver overhead event.
The failure case for relying on average FPS alone is a game with consistent 16.7ms frame times (60 FPS average) but one frame every five seconds that takes 100ms (10 FPS). The average remains approximately 59.8 FPS, but the 0.1% low FPS is 10. A benchmark summary that only shows the average would label this system smooth. The 0.1% low FPS tells you to investigate the cause, likely a background process or thermal throttling from a poor cooler.
Calculation Steps
To compute the 1% low yourself, you need the raw frame time log from a tool like PresentMon or the statistics calculator built into MSI Afterburner via RTSS. Sort every frame time recorded in the test run from fastest to slowest. For a run of 1000 frames, the worst 1% is the slowest 10 frames. Find the frame time at the 99th percentile, the tenth-slowest frame in that set. Convert it to FPS: 1000ms divided by that frame time in milliseconds. That number is the 1% low FPS.
The 0.1% low uses the 99.9th percentile. For 1000 frames, that is the single slowest frame. Divide 1000ms by that frame time to get the 0.1% low FPS. A frame time histogram visualizes the distribution better than a single number, showing spikes at specific milliseconds that the average would flatten.
Frame time consistency is not linearly proportional to perceived smoothness. A drop from 60 to 30 FPS (16.7ms to 33.3ms frame time) is more noticeable than a drop from 120 to 90 FPS (8.3ms to 11.1ms), even though both are 30 FPS changes. The percentile metrics capture the actual experience.
Why the Method Works
The limitation of average FPS is structural, it discards the temporal distribution of frame delivery. Two benchmark runs can produce identical averages but radically different experiences. One run delivers 100 FPS consistently with a 10ms frame time; the other delivers 100 FPS average but with 5% of frames at 50ms. The average cannot distinguish them. Percentile summaries exist specifically to surface this difference.
Descriptive summaries like frame time histograms or percentile tables (P99, P99.9) are the benchmarks that reveal stutter or inconsistency an average FPS number conceals. They answer the question directly: which summary reveals the stutter? The one that reports 1% low and 0.1% low FPS values or displays the full frame time distribution.
A practical step for any reader: after a benchmark run, open PresentMon and look at the 99th percentile frame time. If it exceeds 25ms (40 FPS equivalent) and your average is above 100 FPS, you have a bottleneck that the average is hiding. The component causing it is likely the CPU, since GPU utilization in that scenario would be below 95%.
Common Questions
What is the 1% low FPS?
The 1% low FPS is the frame rate below which the worst 1% of frames fall. It is computed by sorting all frame times, taking the 99th percentile frame time, and converting to FPS. It reveals frame-time spikes that the average FPS flattens.
How do I calculate the 1% low from a benchmark log?
Sort every frame time from fastest to slowest. For 1000 frames, the worst 1% is the slowest 10 frames. Take the frame time at position 990 (the 99th percentile), divide 1000ms by that value to get FPS. That is the 1% low.
What does a 0.1% low tell me that the 1% low does not?
The 0.1% low captures the single rarest stutter event, for example, one frame every five seconds at 100ms frame time. That event barely drops the 1% low but drops the 0.1% low to 10 FPS, revealing a micro-stutter the broader percentile misses.
Can average FPS be high while the game feels stuttery?
Yes. Average FPS discards the temporal distribution. A run with 900 frames at 100 FPS and 100 frames at 20 FPS still averages 100 FPS. The 100 frames at 20 FPS produce the stutter you feel, not the average.
Which tool should I use to capture frame times?
PresentMon from Microsoft is the gold standard. It captures frame times at sub-millisecond precision and outputs percentile data. Gamers Nexus and Hardware Unboxed both use it for their benchmarking.
Does a 1% low of 40 FPS on a 144Hz monitor mean I have a bottleneck?
It means you have frame-time spikes that will be visible as stutters even though your average FPS is high. The bottleneck is likely the CPU, check GPU utilization, if it is below 95%, the CPU is the limit.
How do I distinguish a CPU bottleneck from a game bug using percentiles?
Run a clean boot with no background tasks and re-benchmark. If the 1% low improves significantly, the original stutter was a CPU bottleneck from background load. If it stays the same, the issue is a game bug or driver problem.