---
title: "Identify your baseline values | Grafana Labs"
description: "Extract p95 latency and error rate from your test results to establish your performance benchmark numbers."
---

# Identify your baseline values

You’ve run the test and you have raw numbers. Now you need to decide which specific values represent your baseline. This step bridges the gap between “I ran a test” and “I have a benchmark I can enforce.” The values you record here become the criteria you encode as thresholds in the next milestone.

To identify your baseline values, complete the following steps:

1. Locate the `http_req_duration` line in your test summary and note the `p(95)` value. This is your **p95 latency baseline**.
   
   For example, if the summary shows:
   
   text ![Copy code to clipboard](/media/images/icons/icon-copy-small-2.svg) Copy
   
   ```text
   http_req_duration..: avg=180ms  min=95ms
                        med=165ms  max=850ms
                        p(90)=280ms  p(95)=350ms
   ```
   
   Your p95 latency baseline is **350 ms**. This means 95% of requests completed within 350 ms under your test conditions.
   
   > Tip
   > 
   > The p95 value is a good starting point for your baseline. It captures the experience of the vast majority of users while filtering out rare outliers. You can also use p90 for a less strict baseline, or add custom percentiles like p99 in your thresholds configuration later.
2. Locate the `http_req_failed` line and note the percentage. This is your **error rate baseline**.
   
   For example:
   
   text ![Copy code to clipboard](/media/images/icons/icon-copy-small-2.svg) Copy
   
   ```text
   http_req_failed................: 0.00%   0 out of 1200
   ```
   
   Your error rate baseline is **0%**. In practice, set a small tolerance, such as less than 1%, to account for transient network issues.
3. Locate the `iterations` line and note the per-second rate. This is your **throughput baseline**.
   
   For example:
   
   text ![Copy code to clipboard](/media/images/icons/icon-copy-small-2.svg) Copy
   
   ```text
   iterations.....................: 1200    10.00/s
   ```
   
   Your throughput baseline is **10 requests per second** at 20 VUs.
4. Record these values. You’ll use them directly in the next milestone to define pass/fail thresholds:
   
   Expand table
   
   | Metric      | Baseline value | Threshold to set           |
   |-------------|----------------|----------------------------|
   | p95 latency | 350 ms         | `p(95)<500` (add headroom) |
   | Error rate  | 0%             | `rate<0.01` (allow &lt;1%) |
   | Throughput  | 10 RPS         | Monitor, not threshold     |
   
   Add headroom to your baseline values when setting thresholds. Headroom means setting the threshold higher than your observed value so normal variance doesn’t trigger false failures.
   
   A common approach is to multiply your observed p95 by 1.2 to 1.5 (20-50% above). For example, if your p95 is 53 ms, multiply by 1.3 to get a threshold of `p(95)<70`. Use less headroom (1.2x) for stable, low-latency services and more headroom (1.5x) for services with higher natural variance.

In the next milestone, you encode these baseline values into your script as thresholds.
