Skip to content

luis2404123/proxy-benchmarks

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

License: MIT TypeScript Node.js

@birdproxies/proxy-benchmarks

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.


Installation

npm install -g @birdproxies/proxy-benchmarks

Or use directly with npx:

npx @birdproxies/proxy-benchmarks run -p http://user:pass@proxy:8080

Quick Start

# 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.com

Commands

proxy-bench run - Benchmark a Single Proxy

Run 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 \
  --histogram

Sample 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

proxy-bench compare - Compare Multiple Proxies

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 \
  --chart

Sample 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

proxy-bench geo - Geographic Latency Test

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%

CLI Options

run Command

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

compare Command

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

geo Command

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

Output Formats

JSON

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
}

CSV

proxy-bench run -p http://proxy:8080 -o csv
index,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,

Markdown

proxy-bench run -p http://proxy:8080 -o markdown

Generates a full Markdown report suitable for pasting into GitHub issues, PRs, or documentation.

Supported Proxy Protocols

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

Programmatic Usage

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`);

Examples

See the examples/ directory for complete usage examples:

  • basic.ts - Benchmark a single proxy with all output formats
  • compare.ts - Compare multiple proxies side by side

Development

# 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:8080

License

MIT - see LICENSE


Built by BirdProxies - Premium Proxy Provider

About

Benchmark your proxies. Measure latency, throughput, and reliability across providers.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors