Skip to content
Learn with RV – Tech Blog
Learn with RV – Tech Blog

#testautomation #qa #programming #linux #devops

  • Home
  • Who am I?
  • 1-on-1 Mentoring
  • Test Automation Incubator
  • 24 Testimonials
  • YouTube
  • LinkedIn
  • Contact
Learn with RV – Tech Blog

#testautomation #qa #programming #linux #devops

March 28, 2026May 24, 2026

Understanding p95 Percentiles in Load Testing (with k6 examples)

When you start working with performance testing tools like k6, you’ll quickly notice metrics such as p95, p90, or p60 in the results. But what do these values represent, and how should you interpret them?

The idea is simple

p(95) (95th percentile) means:

  • 95% of your requests were faster than or equal to this value
  • only 5% were slower

That’s it.

How it works behind the scene

You run a test in k6 and make 100 requests.

Each request has a response time:
– 120 ms
– 314 ms
– 90 ms
– 1200 ms
….

– 900 ms

Step 1
Pull all response times into a list

Step 2
Sort them from fastest to lowest.

Step 3
Look at position number 95

That value is your p(95)

Why not just use the average?

Because averages can hide problems.

Example:

  • 95 requests → 200 ms
  • 5 requests → 5 seconds 

The average might still look “fine”.

But in reality?
5% of users are having a terrible experience.

Percentiles expose that.

What about p(90), p(99), etc.?

Same idea, different cutoffs:

  • p(90) → 90% of requests are faster than this
  • p(95) → 95%
  • p(99) → 99% (this shows edge cases / worst experiences)

The higher the percentile, the closer you get to the “pain zone”.

How it looks in k6

k6-percentiles

Quick interpretation:

For this test, I used a local server application, and most users are very fast (< 1.95 ms)
→ 90% of requests complete almost instantly
Almost everyone gets a great response time (< 2.4 ms)

What this tells us

This is actually a very healthy system:

The gap between p(90) and p(95) is small → consistent performance
The gap between p(95) and max exists → a few outliers (normal in real systems)
All values are in milliseconds, not seconds → excellent response time overall

In short:
Most users get lightning-fast responses, and even the slowest ones are still fast.

Common mistake

A lot of people think: “95% of requests took exactly 2.4 ms”
NOT TRUE!!!

It means “up to 2.4 ms”, not “exactly 2.4 ms”.

Enjoyed this article?
I share more practical automation tips on YouTube and LinkedIn.

Need structured guidance instead of learning alone?
I offer 1-on-1 mentoring – learn more → HERE

Or email me at iamqarv [at] gmail [dot] com

Post Views: 266

Related

Share this article:
k6 Tools

Post navigation

Previous post
Next post

Recent Posts

  • Using npm –prefix to Run Scripts from a Nested package.json
  • Unit Testing in JavaScript: Getting started with Vitest
  • Fail Fast in Playwright with maxFailures
  • Cleaner asserts in Grafana k6 load tests using expect
  • AI: What Happens When an AI’s Context Window Gets Full?

Recent Comments

  1. Paul on Web Accessibility: A step-by-step guide to Testing with pa11y
  2. Automated Tests for website Accessibility with Axe and TestCafe - Learn with RV - Tech Blog on How to generate E2E TestCafe Framework in seconds
  3. RV on Exploring Faker.js: A Powerful Tool for Generating Realistic Random Test Data
  4. Adrian Maciuc on Exploring Faker.js: A Powerful Tool for Generating Realistic Random Test Data
  5. Nick on Cypress vs Playwright vs Testcafe – which framework is faster?

Archives

  • July 2026
  • June 2026
  • May 2026
  • April 2026
  • March 2026
  • February 2026
  • November 2025
  • October 2025
  • September 2025
  • August 2025
  • July 2025
  • June 2025
  • March 2025
  • February 2025
  • January 2025
  • November 2024
  • October 2024
  • September 2024
  • August 2024
  • July 2024
  • May 2024
  • April 2024
  • March 2024
  • February 2024
  • January 2024
  • December 2023
  • October 2023
  • September 2023
  • August 2023
  • July 2023
  • June 2023
  • May 2023
  • April 2023

Categories

  • AI
  • k6
  • Linux
  • Programming
  • QA
  • Tools
  • Uncategorized
©2026 Learn with RV – Tech Blog | WordPress Theme by SuperbThemes