In performance, the average means nothing.

May 1, 2025#  performance

You are testing your API, and get a mean response time of ~230 ms.

🎉 Good news — that’s (almost) acceptable!

But then you take a closer look:

💥 Your API is actually a disaster for some of your users.

The average lied to you. Here’s why — and how to avoid the trap.

The average hides the worst cases (where it really hurts)

Let’s take a simple example:

RequestsResponse Time (ms)
190< 50
10> 5000

The average is around 215 ms, but does that reflect reality?

One request ≠ one user: Averages don’t reflect real user experience

Users don’t make just one request. If they make several and even one of them is slow, their experience suffers.

In many APIs, a business transaction often involves several calls:

(And in the case of paginated data, it’s common for users to load multiple pages.)

🚨 Services relying on your API often have timeout rules. If your response is too slow, they’ll drop the connection. And if they don’t implement retries, you risk breaking the whole transaction, even if it’s only a small fraction of requests causing the issue.

💡 Worst-case latencies can affect far more transactions than the average suggests.

🎯 Real-world example:

Imagine an e-commerce site.

And considering that browsing typically involves multiple requests per page, chances are high that some users will hit those slow ones (your 5%).

If just one request is slow, it degrades the entire user experience. Users don’t feel an “average response time”, they feel every request individually.

💡 Tail latencies (P95/P99) have a direct impact on your business (conversion rates, customer frustration, cart abandonment…)

So what should you look at instead? (Percentiles!)

Forget the average — use percentiles:

💡 If your P95 spikes to 5 seconds, you have a real problem, no matter how good your average looks.

Averages fail when there’s instability

Another problem with averages: they don’t reflect variance.

Example:

Test 1Test 2Test 3Test 4Test 5Test 6Test 7
100 ms200 ms300 ms50 ms5,000 ms500 ms45 ms

Average = 885 ms ❌ (Already really bad)

But what does P95 say? 👉 5,000 ms… a nightmare for some users!

What causes this variance?

💡 Look at the full response time distribution, not just one number! Variance is an early warning sign — a signal worth investigating.

In summary: Averages are meaningless!

How to analyze performance properly:

photoCédric CHARIERE FIEDLER

Cédric CHARIERE FIEDLER

Web, QA & Perf Architect
# API,Front,QA,Performance,Cloud