Load Test Results Analyzer (JMeter, k6, Locust)
Percentiles, Apdex, errors and SLA checks from JMeter, k6 or Locust result files.
Try before you buy.
- Free preview: the overall summary and every SLA result, with the first rows (up to 3) of the label, error and check tables.
- Locked until you unlock it: download and copy.
- Unlock: Premium pass, ₹799 for 30 days or ₹249 for 1 week, a one-time payment that never renews. Unlock: Premium pass, $19.99 for 30 days or $7.99 for 1 week, a one-time payment that never renews.
Ways to unlock shows how to get the full result.
Printing this result is locked in the free preview.
Test results
Compare with a baseline run (optional)
A time or the error rate this much higher, or throughput this much lower, than in the baseline.
Thresholds and SLA rules
Satisfied at or below T, tolerating up to 4 × T. The Apdex specification suggests 4 s for whole pages; API calls usually need much less.
Load test report
SLA rules
| Rule | All requests | Result | Labels that fail |
|---|
By label
Over time
Errors
| Response code | Message | Count | Of errors | Labels |
|---|
k6 checks
| Check | Passed | Failed | Pass rate |
|---|
Compared with the baseline
Notes on the data
Export
Locked in the free preview. Opens the ways to unlock this result.
Locked in the free preview. Batch runs unlock with a pass.
Locked in the free preview. Query results unlock with a pass.
About the Load Test Results Analyzer (JMeter, k6, Locust)
Open the results of a load test and get the report you would otherwise build in a spreadsheet: every label’s samples, error rate, throughput and response times (minimum, mean, median, p90, p95, p99 and maximum), Apdex for the threshold you choose, SLA rules such as “p95 under 500 ms and errors under 1 %” with a pass or fail for every label, the errors grouped by response code and message, and charts over time of the percentiles, throughput, errors and active users. Add a baseline run and each label is compared with it, with the regressions beyond your threshold flagged.
It reads JMeter results (the .jtl files JMeter writes, as CSV or XML), k6’s JSON output (k6 run --out json) and its end-of-test summaries, Locust’s CSV files (stats, history, failures and exceptions) and any CSV of timestamps, labels and response times. Files of a gigabyte and more are read in a background worker as a stream, and every response time is kept, so the percentiles are exact (above 20 million samples they become estimates, marked as such).
Nothing is uploaded. Without a pass the report is a free preview: the overall summary, every SLA result and the first rows of each table. The charts, the comparison, every label and the HTML, PDF and CSV exports unlock with a Premium pass.
How to use it
- Drop the result files on Choose result files: one .jtl or CSV from JMeter, the JSON from
k6 run --out json, or Locust’s CSV files together. Load an example run shows the whole report on an invented test. - For a CSV of your own, choose which column holds the response time in milliseconds, and the label, the time and the success flag if there are any.
- Set the Apdex threshold T and your SLA rules (each one for every label or for one label), and the time zone for times written without one.
- Read the summary, the SLA results and the tables; sort the labels by any column. To compare, open an earlier run under Compare with a baseline run.
- With a pass, read the charts and the comparison, and export the one-file HTML report, the PDF, the CSV tables or a Markdown summary; the free preview shows the summary, the SLA results and the first rows of each table.
Examples
Load an example run: a JMeter CSV of 5,983 samples of GET /products, GET /products/{id}, POST /cart and POST /checkout · Apdex T = 500 ms · rules: p95 < 500 ms and errors < 1 % for every labelOverall: p95 734 ms, error rate 0.47 %, Apdex 0.96 [0.5] Excellent · SLA fail: POST /cart (errors 1.30 %) and POST /checkout (p95 2.17 s, errors 2.22 %) · errors: 12 × 429 Too Many Requests (POST /cart), 11 × 500 Internal Server Error (POST /checkout), 5 read time-outs
The example is an invented shop API under a growing load; the cart is rate-limited (429) in the last minute only, which the chart of errors a second shows.
1,000 samples, T = 0.5 s: 850 successful at or below 500 ms, 100 successful between 500 ms and 2 s, 30 slower, 20 failed
Apdex = (850 + 100 ÷ 2) ÷ 1,000 = 0.90 → 0.90 [0.5], rated Good
Failed samples count as frustrated whatever their time, as the specification requires for detected errors.
Baseline: release-4.1.jtl · current: release-4.2.jtl · regression threshold 10 %
GET /products/{id}: p95 180 ms → 240 ms (+33 %, regression) · POST /cart: throughput 41/s → 44/s (+7 %) · 2 regressions in 1 of 4 labelsCommon uses
- Reading a JMeter, k6 or Locust run without opening JMeter’s GUI, a dashboard or a spreadsheet.
- Checking a release against its performance SLA before it ships, and seeing which endpoint fails it.
- Comparing a run with the last good one to catch a regression in one endpoint that the overall figures hide.
- Sending stakeholders a one-file HTML or PDF report with the charts and tables.
Getting the files out of each tool
- JMeter:
jmeter -n -t plan.jmx -l results.jtlwrites a CSV with a header by default; an XML .jtl works too. The columns are listed in JMeter’s manual (CSV and XML log formats); a CSV written without field names is read in JMeter’s default column order. In XML, embedded resources are sub-samples: they count as samples of their own only when you tick that option. - k6:
k6 run --out json=results.json script.jswrites one JSON object a line (k6 JSON output). Eachhttp_req_durationpoint is a request, labelled by itsnametag (k6 sets it to the URL unless the script names the request), and failed whenexpected_responseis false.vusgives the active users andchecksthe checks. An end-of-test summary (fromhandleSummaryor--summary-export) gives k6’s own totals only. - Locust:
--csv=runwritesrun_stats.csv,run_stats_history.csv,run_failures.csvandrun_exceptions.csv(Locust configuration); open them together. Locust keeps statistics, not single requests: its percentiles are its own (it rounds response times above 100 ms to about two significant figures), and Apdex cannot be worked out. - Any other tool: a CSV with a response-time column in milliseconds, and optionally a label, a timestamp, a success flag, a status code and an error message.
How the figures are worked out
- Percentiles are exact, by the nearest-rank method: p95 is the smallest response time that at least 95 % of the samples are at or below. Tools differ in how they choose between two neighbouring samples, so a value can differ from another report’s by one sample’s worth.
- Throughput is the samples divided by the time from the first sample’s start to the last sample’s end, as JMeter defines it (JMeter glossary); KB/s counts 1,024 bytes a KB.
- Apdex for a threshold T = (satisfied + tolerating ÷ 2) ÷ total samples, where a sample is satisfied at or below T, tolerating above T up to F = 4T and frustrated above F, and failed samples count as frustrated. It is shown as the specification asks, with two decimals and T in seconds — 0.85 [0.5] — with an asterisk under 100 samples, and rated Excellent (0.94 and above), Good (0.85), Fair (0.70), Poor (0.50) or Unacceptable (Apdex Technical Specification).
- Charts over time group the samples into intervals (one second, doubled until the test fits in a few hundred points); the percentiles of each interval come from a histogram with bins about 2 % wide.
SLA rules and regressions
Each rule compares one figure — a percentile, the mean, the maximum, the error rate, throughput or Apdex — with a value, for every label or for one label by name. A label passes when every rule that applies to it passes; the run passes when every label and the overall figures pass. In a comparison, a time or the error rate is a regression when it is more than your threshold higher than in the baseline, and throughput when it is more than the threshold lower; a figure that was zero in the baseline and is not now always counts.
Limitations
- The response times are those the load tool measured on its machine: a client that was overloaded itself makes every figure worse.
- Above 20 million samples the percentiles and Apdex are t-digest estimates, marked “≈”; the counts, the error rate and throughput stay exact.
- A k6 summary and Locust’s files hold their tools’ own figures: no charts from a k6 summary, no Apdex from either.
- Files are read in your browser: a run of several gigabytes needs a desktop with plenty of memory to spare.
- Times written without a time zone (a formatted JMeter timestamp, a CSV of your own) are read in the zone you choose; epoch timestamps and k6’s times are exact.
Privacy
On this device: nothing is sent
Everything happens in your browser. What you enter or open here is not uploaded or stored by MySmartCoPilot.
Frequently asked questions
What do I get without a pass?
Without a pass, Load Test Results Analyzer (JMeter, k6, Locust) shows the overall summary and every SLA result, with the first rows (up to 3) of the label, error and check tables. Until you unlock it, the result can’t be downloaded or copied. A Premium or Ultimate pass, a one-time payment that never renews, unlocks the full result. The pricing page lists the passes and their prices.
Which Apdex threshold should I use?
The response time your users find fine for that kind of request. The Apdex specification suggests 4 seconds as a tool’s default for whole pages; an API call is usually judged much faster, often with T between 100 and 500 ms. Use the same T for runs you compare.
Why are my percentiles a little different from JMeter’s report?
Percentile methods differ in how they pick between two samples next to each other, and some reports leave out sub-samples or failed samples. Here every top-level sample counts and the nearest-rank method is used; the difference is at most one sample’s step.
Are failed requests in the response times?
Yes, as in JMeter’s own reports: a timed-out request took its time. For Apdex they count as frustrated whatever their time.
Is my data uploaded?
No. The files are read and the report is worked out in your browser; nothing about your test leaves your device.
Can I compare runs from different tools?
Yes: the comparison matches labels by name, so a JMeter run can be compared with a k6 run whose request names are the same.