Overload

Free, open-source load testing tool that reads Postman collections and gives you a gorgeous browser dashboard or a clean CLI — your choice.

Named Overload because that's exactly what it does to your server.
No metaphor. No brand committee. Just requests — a lot of them — all at once, until something interesting happens.

pip install overload-cli

Key Features

10 Load Patterns
Burst, Load, Stress, Spike, Soak, Ramp, Breakpoint, Custom stages, Rate Limit, and Sequential. Each pattern models a real-world traffic scenario.
📮 Postman Native
Import your existing Postman Collection v2.1 files directly — nested folders, auth inheritance, variables, and all body types just work.
🖥️ Browser Dashboard
Run overload and get a live browser UI with real-time Chart.js charts, progress tracking, and instant HTML reports — no Node.js required.
🔧 CLI Mode
Run headless with overload run for CI pipelines. Full flag surface, progress bar, and machine-readable exit codes.
CI/CD Assertions
Set performance gates with --assert "p95_latency_ms<500". Exit code 1 on failure. JUnit XML output for native CI integration.
🔒 Auth Built-in
Bearer tokens, Basic auth, API keys (header & query), and OAuth2 client-credentials flow with automatic token caching.
📊 Rich Reports
HTML reports with latency distribution, timeline scatter, per-second breakdown, and verdict section. Also exports JSON and CSV.
🐍 Pure Python
Python 3.10+ with async/await. No binary dependencies, no Node.js, no build step. Install with pip and start testing immediately.

How It Works

Overload provides two interfaces to the same async engine:

Option 1 — Browser UI

overload
# Opens http://localhost:3000 automatically
  1. Auto-detect: The UI scans your working directory for Postman collection & environment JSON files.
  2. Configure: Pick a test type, adjust concurrency/RPS/duration, and optionally add assertion thresholds.
  3. Run: Watch live progress with real-time RPS, latency, and error rate charts.
  4. Analyze: View the full HTML report with latency distribution, timeline scatter, and per-second breakdown.

Option 2 — CLI

overload run --collection api.json --pattern load --rps 100 --duration 60 \
  --assert "p95_latency_ms<500" \
  --assert "error_rate_pct<1" \
  --junit results.xml

Results print to the terminal with a progress bar and summary table. An HTML report is saved to the reports/ directory. If any assertion fails, the process exits with code 1 — the universal CI failure signal.

Quick Reference

Command Description
overload Start browser UI on port 3000
overload ui --port 8080 Browser UI on custom port
overload run --collection api.json --pattern burst CLI burst test
overload run --config overload.config.yaml Load test config from file
overload sequential --collection api.json --iterations 5 Run requests in order, 5 times
overload --debug Enable verbose debug logging

Test Types at a Glance

Pattern What It Simulates Key Config
BurstAll requests at once — max throughput--requests 200
LoadSustained traffic: ramp up → hold → ramp down--rps 100 --duration 300
StressStep-up until error threshold is hit--rps 50 (starting)
SpikeBaseline → sudden spike → recovery--rps 200 (spike)
SoakSteady low RPS over long duration--rps 30 --duration 1800
RampLinear increase from start to end RPS--rps 200 (end)
BreakpointBinary search for degradation thresholdAuto-probes
CustomUser-defined stage sequence--stages '[…]'
Rate LimitVerify API rate limiting enforcement--rps 60 --requests 120
SequentialRun requests in collection order--iterations 5
💡 Tip Explore each pattern in detail on the Test Patterns page, including configuration options, use cases, and example commands.

Tech Stack

Python 3.10+
Async/await with asyncio for high-concurrency HTTP testing. No GIL-blocked threads.
FastAPI + Uvicorn
ASGI web server for the browser UI. WebSocket for live progress streaming.
httpx
Async HTTP client with connection pooling, SSL, timeouts, and HTTP/2 support.
Vanilla JS + Chart.js
Zero-build frontend. No Node.js, no npm, no webpack. Just HTML, CSS, and JS.