When you run gostress --formats html, you get a dark-themed, interactive report with charts, metrics, and diagnostic insights. This guide walks through every section so you know exactly what you're looking at.
1. Hero Section
The top of the report shows your test headline and configuration pills:
- Method & URL — what was tested
- Workers — concurrency level
- Ramp — if
--rampwas used, the ramp duration - Target vs Actual duration — how long you asked for vs how long it actually ran
Tip: If actual duration is significantly longer than target, the server may be slow to close connections, or transport errors are extending the measurement window.
2. KPI Cards
Four summary metrics at a glance:
- Total Requests — every HTTP request sent during the test
- Success Rate — percentage of requests that returned a status code in your
--success-statusrange (default: 200-399) - Error Rate — the inverse: failed HTTP responses + transport errors
- Throughput — requests per second achieved, with utilization % if
--rpswas set
These numbers count up from zero when you open the report — a small animation, but it makes it easy to see which metrics are large vs small at a glance.
3. Reliability (Donut Chart)
The SVG donut chart visualizes the breakdown of your traffic:
- ● Green — Successful requests (status in success range)
- ● Amber — HTTP failures (status outside success range)
- ● Red — Transport errors (timeout, connection refused, etc.)
The center shows your overall success rate percentage. Hover over the legend items to highlight each segment.
4. Latency Distribution
Horizontal bar chart showing your latency percentiles:
- p50 (Median) — Half of requests finished faster than this. Your "typical" experience.
- p95 — 95% of requests finished faster. The slowest 5%.
- p99 — 99% of requests finished faster. Your tail latency.
- Average — Arithmetic mean. Can be skewed by outliers.
- Min / Max — Best and worst observed latency.
Key insight: If p99 is much larger than p50 (e.g., 10x), your system has tail latency issues — a small percentage of requests are significantly slower. This often points to garbage collection pauses, connection pool exhaustion, or queue buildup.
5. Status Codes
Bar chart + table showing every HTTP status code observed:
- Each bar is proportional to its count
- Color-coded: green for success codes, amber/red for errors
- The table below shows exact counts per code
If you see unexpected codes (e.g., 429 Too Many Requests), that's a signal to adjust your --rps limit or reduce concurrency.
6. Transport Errors
Errors that happen before the server sends a response:
- deadline_exceeded — Request timed out (default 2s)
- connection refused — Server rejected the TCP connection
- connection reset — Server dropped the connection mid-stream
- EOF / broken pipe — Server closed connection before sending a response
Below the chart, a diagnostic card explains what each error type means and provides contextual advice based on your actual error rate.
7. Throughput
Data transfer metrics:
- Total Data — total bytes received from the server
- Avg Throughput — MB/s transfer rate
- Utilization — if
--rpswas set, shows what % of the limit you actually hit
A "Analysis" note below adapts its message based on whether you used rate limiting and how close you got to the target.
8. Configuration & Results Tables
Two detailed tables at the bottom:
- Configuration — every flag and its value, including headers, payload, and success status spec
- Results — all raw numbers: request counts, latency stats, error breakdowns, timing
These are useful for copy-pasting into reports or comparing across runs.
Exporting as PDF
Click the Export PDF button in the top-right corner of the report. This opens your browser's print dialog — select "Save as PDF" to generate a clean, print-optimized version with a white background and proper page breaks.
gostress --url https://api.example.com --formats html
open report.html