Apdex Score: The Formula, T, and What It Hides
Apdex folds response times into one number from 0 to 1 by grading each sample against a threshold you choose, and that threshold is the whole decision.
Apdex is a ratio that folds a pile of response times into one number between 0 and 1. Each sample is graded satisfied, tolerating or frustrated against a threshold you pick, and the middle bucket counts for half. The result is a figure someone outside engineering can read without a tutorial.
What is an Apdex score?
A single value from 0 to 1, where 1 means every sample came back fast. The Apdex Users Group publishes it as an open standard for converting many measurements into one zero-to-one score. Wikipedia records that it came from an alliance of companies rather than a single vendor, which is why competing tools compute it the same way.
Three buckets do the work. A sample is satisfied when it returns within your target T, tolerating when it takes longer than T but no more than four times T, and frustrated past that line.
How is Apdex calculated?
Add the satisfied count to half the tolerating count, then divide by every sample you took. Frustrated samples contribute nothing to the numerator and everything to the denominator, which is exactly the punishment they deserve.
T = your target response time, in seconds
satisfied = samples <= T
tolerating = samples > T and <= 4T
frustrated = samples > 4T
score = (satisfied + tolerating / 2) / (satisfied + tolerating + frustrated)
A worked example keeps it concrete. With T at 0.5 seconds and 1,000 samples split 800 satisfied, 150 tolerating and 50 frustrated, the arithmetic gives 875 divided by 1,000, or 0.875.
Choosing T is the entire decision
The threshold is the only input carrying an opinion, and a score quoted without it means nothing. New Relic's documentation treats T as a per-service setting for that reason, since a search query and a cached asset do not deserve the same target.
| Endpoint | Reasonable T | Frustrated past |
|---|---|---|
| Cached page or static asset | 0.3 s | 1.2 s |
| JSON API call | 0.5 s | 2.0 s |
| Search or report query | 2.0 s | 8.0 s |
| Export or batch trigger | 5.0 s | 20.0 s |
We prefer deriving T from the median you already measure, then rounding up slightly, rather than picking a round number that flatters the result. A target nobody can hit produces a score nobody trusts, and a target everything clears produces a flat line at 0.99 that hides a real regression.
What does one score hide?
The shape of the tail. Two services can both land on 0.90 while feeling nothing alike. In the first, a tenth of requests run a shade slow. In the second, nine in ten are instant and the rest time out.
That is the trade you accept for a number a product manager can read in a weekly review. Keep the percentile distribution beside it, because response time monitoring on p50, p95 and p99 is what tells you which of those two services you are running.
Computing Apdex from external checks
A probe produces exactly the inputs the formula wants. Each run yields one response time, and the response-time threshold on the monitor is your T, so the pass and fail counts map straight onto the satisfied bucket.
curl -X POST https://uptimeroom.com/api/v1/monitors \
-H "Authorization: Bearer urm_live_..." \
-H "Content-Type: application/json" \
-d '{
"name": "search api",
"type": "api",
"target": "https://example.com/api/search?q=test",
"intervalSec": 60,
"regions": ["london", "singapore"],
"expectedStatus": [200],
"responseTimeThresholdMs": 500
}'
Pull the samples back through the monitoring API and the division is a few lines of code. There is an honest limit to that number. A scheduled probe runs one fixed request from a handful of places, so it describes a controlled path rather than a census of real traffic.
Common mistakes
Comparing two scores built on different thresholds. A 0.95 at T of 5 seconds is worse than a 0.88 at T of 0.3 seconds. Publish T next to the score every single time.
Reporting one figure for a whole site. Averaging a checkout call with an image request produces a number that describes neither. Score per endpoint, then roll up if someone insists.
Paging on it. The index moves slowly by design, so it belongs on a weekly review rather than in an alert rule. Page on the symptoms in the four golden signals instead.
An Apdex score is a summary, and summaries are for people who are not looking at the graphs. Set T per endpoint, publish it alongside the number, and keep percentiles underneath for whoever has to fix the tail. The samples cost nothing to start collecting: the free plan allows 10 monitors on a 1-minute schedule as of September 2026.
FAQ
It is a ratio between 0 and 1 that summarises how many response-time samples were acceptable. Each sample is graded satisfied, tolerating or frustrated against a target threshold called T, with tolerating samples counting for half. The Apdex Users Group publishes it as an open standard, so competing tools compute the same figure the same way.
Add the number of satisfied samples to half the number of tolerating samples, then divide by the total sample count. Satisfied means a response within T, tolerating means slower than T but within four times T, and frustrated means anything beyond that. Frustrated samples count in the denominator only, which pulls the score down.
That depends entirely on the threshold it was computed with, so a score quoted without its T is not comparable to anything. Most teams treat values above 0.94 as strong and anything under 0.70 as a problem worth scheduling work for. Set T per endpoint from the median you already measure, then publish it alongside the score.
T is the response time you consider acceptable for that specific endpoint, and it also sets the frustrated boundary at four times its value. A cached asset might use 0.3 seconds while a report query uses 2 seconds. Picking T is a product decision rather than a technical default, which is why tools make it configurable per service.
Related reading
- Response Time Monitoring: Phases, Percentiles, Regions - Response time monitoring works when you read the timing waterfall, alert on p95 instead of the mean, and compare probe regions rather than blending them.
- Golden Signals: The Four SRE Metrics That Matter - Golden signals are latency, traffic, errors and saturation - the four metrics Google's SRE book says to watch when you can only watch four.