Benchmark your proxies' speed, latency, and reliability.
A professional CLI tool for measuring proxy performance with detailed statistics, visual ASCII charts, and multiple export formats. Supports HTTP, HTTPS, SOCKS4, and SOCKS5 proxies.
npm install -g @birdproxies/proxy-benchmarksOr use directly with npx:
npx @birdproxies/proxy-benchmarks run -p http://user:pass@proxy:8080# Benchmark a single proxy
proxy-bench run -p http://user:[email protected]:8080
# Compare multiple proxies
proxy-bench compare -p http://proxy1:8080 socks5://proxy2:1080 https://proxy3:443
# Test geographic latency
proxy-bench geo -p http://proxy:8080 --targets https://us.example.com https://eu.example.comRun a full benchmark against one proxy and get detailed performance metrics.
proxy-bench run \
-p http://user:[email protected]:8080 \
-t https://httpbin.org/get \
-n 50 \
-c 10 \
--chart \
--histogramSample Table Output:
Benchmark Report: proxy.example.com:8080
Target: https://httpbin.org/get
2026-01-15T10:30:00.000Z - 2026-01-15T10:30:05.000Z
+-----------------------+-----------------------------------+
| Metric | Value |
+-----------------------+-----------------------------------+
| Total Requests | 50 |
| Successful | 49 |
| Failed | 1 |
| Success Rate | 98.0% |
| Duration | 4823ms |
| Throughput | 10.37 req/s |
| Data Transferred | 24.5 KB |
| Transfer Rate | 5.1 KB/s |
+-----------------------+-----------------------------------+
+---------+--------+--------+--------+--------+--------+--------+--------+
| Latency | Min | Avg | p50 | p95 | p99 | Max | StdDev |
+---------+--------+--------+--------+--------+--------+--------+--------+
| Total | 85ms | 142ms | 128ms | 245ms | 312ms | 350ms | 52ms |
| TTFB | 42ms | 98ms | 89ms | 178ms | 234ms | 280ms | 38ms |
+---------+--------+--------+--------+--------+--------+--------+--------+
Sample Latency Chart:
Latency Distribution: proxy.example.com:8080
-----------------------------------------------
Min ████████░ 85.0ms
p50 ████████████░ 128.0ms
p95 ████████████████████░ 245.0ms
p99 █████████████████████████░ 312.0ms
Max ████████████████████████████ 350.0ms
Benchmark several proxies against the same target and compare results side by side.
proxy-bench compare \
-p http://us-proxy:8080 http://eu-proxy:8080 socks5://fast-proxy:1080 \
-n 30 \
-c 5 \
--chartSample Comparison Output:
Proxy Comparison
+------------+-------------+--------+--------+------------+---------+----------+
| Proxy | Avg Latency | p95 | p99 | Throughput | Success | Requests |
+------------+-------------+--------+--------+------------+---------+----------+
| Proxy 3 * | 95ms | 180ms | 210ms | 15.2 req/s | 100.0% | 30 |
| Proxy 1 | 142ms | 245ms | 312ms | 10.4 req/s | 98.0% | 30 |
| Proxy 2 | 198ms | 380ms | 425ms | 7.8 req/s | 96.7% | 30 |
+------------+-------------+--------+--------+------------+---------+----------+
* = fastest proxy
Test how a proxy performs when connecting to servers in different geographic regions.
proxy-bench geo \
-p http://proxy:8080 \
--targets https://us-east.example.com https://eu-west.example.com https://ap-south.example.com \
--labels "US East" "EU West" "Asia Pacific"Sample Geo Output:
Geographic Latency
US East ████████░ 120.5ms 100%
EU West ██████████████░ 210.3ms 98%
Asia Pacific ████████████████████████░ 385.7ms 95%
| Option | Alias | Description | Default |
|---|---|---|---|
--proxy <url> |
-p |
Proxy URL (required) | - |
--target <url> |
-t |
Target URL to request | https://httpbin.org/get |
--requests <n> |
-n |
Number of requests | 10 |
--concurrency <n> |
-c |
Concurrent connections | 5 |
--timeout <ms> |
Request timeout | 30000 |
|
--method <m> |
-m |
HTTP method (GET, POST, HEAD) | GET |
--sequential |
Run requests one at a time | false |
|
--delay <ms> |
Delay between sequential requests | 0 |
|
--expected-status <code> |
Expected HTTP status code | 200 |
|
--label <name> |
-l |
Label for this proxy in reports | auto |
--output <format> |
-o |
Output: table, json, csv, markdown | table |
--chart |
Show ASCII latency charts | false |
|
--histogram |
Show latency histogram | false |
| Option | Alias | Description | Default |
|---|---|---|---|
--proxies <urls...> |
-p |
Proxy URLs to compare (required) | - |
--target <url> |
-t |
Target URL | https://httpbin.org/get |
--requests <n> |
-n |
Requests per proxy | 10 |
--concurrency <n> |
-c |
Concurrent connections | 5 |
--timeout <ms> |
Request timeout | 30000 |
|
--method <m> |
-m |
HTTP method | GET |
--sequential |
Run sequentially | false |
|
--output <format> |
-o |
Output format | table |
--chart |
Show comparison charts | false |
| Option | Alias | Description | Default |
|---|---|---|---|
--proxy <url> |
-p |
Proxy URL (required) | - |
--targets <urls...> |
-t |
Target URLs per region | httpbin defaults |
--labels <names...> |
Labels for each region | auto | |
--requests <n> |
-n |
Requests per target | 5 |
--timeout <ms> |
Request timeout | 30000 |
|
--output <format> |
-o |
Output format | table |
--chart |
Show geo chart | true |
proxy-bench run -p http://proxy:8080 -o json{
"proxy": {
"label": "proxy:8080",
"protocol": "http",
"host": "proxy",
"port": 8080
},
"totalRequests": 10,
"successfulRequests": 10,
"successRate": 100,
"latency": {
"min": 82.15,
"max": 310.44,
"avg": 145.32,
"median": 132.18,
"p50": 132.18,
"p95": 248.91,
"p99": 298.13,
"stddev": 55.21
},
"requestsPerSecond": 12.45,
"durationMs": 803
}proxy-bench run -p http://proxy:8080 -o csvindex,success,latency_ms,ttfb_ms,status_code,body_size,error
0,true,142.35,98.12,200,512,
1,true,128.90,85.44,200,512,
2,true,156.78,110.23,200,512,proxy-bench run -p http://proxy:8080 -o markdownGenerates a full Markdown report suitable for pasting into GitHub issues, PRs, or documentation.
| Protocol | URL Format | Example |
|---|---|---|
| HTTP | http://[user:pass@]host:port |
http://proxy:8080 |
| HTTPS | https://[user:pass@]host:port |
https://proxy:443 |
| SOCKS4 | socks4://[user:pass@]host:port |
socks4://proxy:1080 |
| SOCKS5 | socks5://[user:pass@]host:port |
socks5://proxy:1080 |
You can also use the benchmark engine as a library:
import { runBenchmark, parseProxyUrl } from '@birdproxies/proxy-benchmarks';
const proxy = parseProxyUrl('http://proxy:8080', 'My Proxy');
const report = await runBenchmark(proxy, {
targetUrl: 'https://example.com',
requests: 100,
concurrency: 10,
});
console.log(`Avg latency: ${report.latency.avg}ms`);
console.log(`Success rate: ${report.successRate}%`);
console.log(`Throughput: ${report.requestsPerSecond} req/s`);See the examples/ directory for complete usage examples:
basic.ts- Benchmark a single proxy with all output formatscompare.ts- Compare multiple proxies side by side
# Clone the repository
git clone https://github.com/birdproxies/proxy-benchmarks.git
cd proxy-benchmarks
# Install dependencies
npm install
# Build
npm run build
# Run locally
node dist/index.js run -p http://proxy:8080MIT - see LICENSE
Built by BirdProxies - Premium Proxy Provider