LatencyLens is a lightweight REST API performance testing tool. It sends repeated requests to an endpoint and reports latency, reliability, and stability metrics in a clean UI.
- Test any HTTP/HTTPS REST endpoint.
- Run load tests from 1 to 100 requests.
- Support for GET, POST, PUT, DELETE, and PATCH.
- Detailed metrics: average, fastest, slowest, range, success rate, stability, P50, P95, and P99.
- Per-request results table with status code and latency.
- Export test results as JSON or CSV.
- Backend: Node.js, Express, Axios
- Frontend: Vanilla HTML, CSS, JavaScript
- Runtime metrics: Node
perf_hooks - Containerization: Docker
- Node.js 20+
- npm
npm install
npm install --prefix backendnpm startApp URL: http://localhost:5000
npm run devdocker build -t latencylens .docker run --name latencylens-test -p 5000:5000 latencylensApp URL: http://localhost:5000
docker stop latencylens-test
docker rm latencylens-testOptional variables (set in backend/.env for local non-Docker runs, or in your deployment platform):
PORT=5000
REQUEST_TIMEOUT_MS=10000
WARMUP_REQUESTS=1
MAX_CONCURRENCY=5Runs a latency test against a target endpoint.
{
"endpoint": "https://api.github.com/users/octocat",
"requestCount": 10,
"method": "GET",
"body": {},
"headers": {
"Authorization": "Bearer token"
}
}{
"endpoint": "https://api.github.com/users/octocat",
"metrics": {
"totalRequests": 10,
"successfulRequests": 10,
"averageLatencyMs": 245.5,
"fastestLatencyMs": 200.2,
"slowestLatencyMs": 350.8,
"responseTimeRangeMs": 150.6,
"successRatePercent": 100,
"stabilityScoreMs": 45.3,
"p50": 240.1,
"p95": 334.2,
"p99": 347.6
},
"insights": [
"Reliability is strong with a high success rate across requests."
],
"requests": [
{
"index": 1,
"latencyMs": 231.42,
"statusCode": 200,
"success": true,
"error": null
}
],
"testedAt": "2026-05-05T10:40:57.943Z"
}Health-check endpoint.
- Push the repository to GitHub.
- In Render, create a new Web Service.
- Choose your repository.
- Set environment to Docker.
- Add env vars if needed (
PORT,REQUEST_TIMEOUT_MS,WARMUP_REQUESTS,MAX_CONCURRENCY). - Deploy.
Render will build and run the app from the root Dockerfile.
LatencyLens/
├── backend/
│ ├── server.js
│ ├── package.json
│ └── package-lock.json
├── frontend/
│ ├── index.html
│ ├── app.js
│ ├── styles.css
│ ├── mobile.css
│ └── about/
│ └── index.html
├── Dockerfile
├── .dockerignore
├── package.json
└── README.md