Skip to main content

net-benchmark

fast, extensible network benchmarking — dns, http, ssl, and distributed load testing from a single cli.

PyPI version Python License: MIT Tests Docker Downloads Docker Pulls Docker Image Version Docs Discussions PyPI - Wheel GitHub Stars

pip install net-benchmark
pip install net-benchmark[pdf]   # with pdf export

Also available as a container image — no local Python needed:

docker run --rm joeovo/net-benchmark:latest http benchmark --use-defaults --formats csv,excel

joeovo/net-benchmark on Docker Hub, ghcr.io/net-benchmark/net-benchmark on GHCR. Full guide: Running in Docker.

Or via Homebrew:

brew tap net-benchmark/net-benchmark
brew install net-benchmark

successor to dns-benchmark-tool — fully backward compatible. dns-benchmark command still works as an alias.


tools

dns benchmark — resolver performance, dnssec, doh/dot
net-benchmark dns benchmark --use-defaults
net-benchmark dns benchmark --use-defaults --doh
net-benchmark dns benchmark --use-defaults --dot --dnssec-validate
net-benchmark dns compare Cloudflare Google Quad9 --dnssec-validate
net-benchmark dns monitoring --use-defaults --interval 30
flag description default
--use-defaults built-in resolvers and sample domains —
--resolvers name, ip, or file —
--domains comma-separated or file —
--iterations queries per resolver 1
--doh dns-over-https false
--doh-url comma-separated urls, one per resolver —
--dot dns-over-tls false
--dnssec-validate fail if ad flag absent false
--formats csv, excel, pdf, json csv,excel,pdf

full documentation: DNS Benchmark guide

http benchmark — latency, ttfb, security headers, tls certs
net-benchmark http benchmark --use-defaults
net-benchmark http benchmark --use-defaults --iterations 5
net-benchmark http benchmark --targets "https://api.example.com" --method POST --body '{}'
net-benchmark http compare api.example.com api2.example.com --iterations 3
net-benchmark http top --use-defaults --limit 5
net-benchmark http monitoring --use-defaults --interval 30
flag description default
--use-defaults built-in target urls —
--targets comma-separated urls or file —
--method http verb (get, post, etc.) get
--headers "key:value,key2:value2" —
--body inline request body (e.g. json) —
--body-file path to body file —
--auth basic:user:pass or bearer:token —
--cert / --cert-key mtls client certificate —
--proxy proxy url —
--assert repeatable: status=200, body_contains=ok, max_latency=500, etc. —
--iterations requests per target 1
--no-http2 force http/1.1 false
--no-verify-ssl skip tls verification false
--formats csv, excel, pdf, json csv,excel,pdf

full documentation: HTTP Benchmark guide

http load test — sustained traffic, thresholds, distributed workers
net-benchmark http load-test -t https://api.example.com/health --mode throughput --duration 30
net-benchmark http load-test -t https://api.example.com --mode sustained --rps 150 --duration 300
net-benchmark http load-test -t https://api.example.com --mode ramp-up --ramp-concurrency 500
net-benchmark http load-test -t https://api.example.com --threshold 'p95_latency<500' --threshold 'dropped_rate<1'
net-benchmark http load-test -t https://api.example.com --workers 4 --emit-summary node-a.json
net-benchmark http merge-load-test ./nodes/*.json -o ./merged
flag description default
--targets / -t comma-separated urls or file —
--mode throughput, sustained, ramp-up throughput
--duration seconds (throughput/sustained) 10
--rps target requests/sec — required for sustained —
--max-concurrency max in-flight requests (throughput) 200
--ramp-concurrency peak concurrency to ramp to 200
--max-total-rps safety ceiling on aggregate rps during ramp-up ramp-concurrency × 50
--expected-status codes treated as expected, e.g. 200-299,401 —
--threshold repeatable pass/fail, e.g. p95_latency<500 —
--workers generate load from n processes on this machine 1
--target-distribution replicate (every worker hits every target) or shard replicate
--start-at / --start-delay synchronised start across machines —
--warmup requests per target before the start barrier 0
--emit-summary write this run's summaries as json, for merging —
--region label for where this generator runs, e.g. hel1 —
--live print each interval as it completes false
--formats csv, excel, pdf, json csv,excel

since 0.5.2, load can be generated from several parallel workers — separate processes on one machine, or separate machines entirely — with a synchronised start and a statistically correct merge. merge-load-test recomputes p95_latency and p99_latency from the merged latency histogram rather than averaging per-worker percentiles; std_latency, jitter, consistency_score and the phase p95s do not survive a merge and are rejected as unknown metrics, so evaluate those per worker.

full documentation: http load testing

ssl check — TLS handshake, certificate, and policy audit
# certificate expiry, weak keys/signatures, deprecated TLS, all flagged by default
net-benchmark ssl check --targets "example.com,api.example.com"

# chain of trust, revocation, protocol/cipher enumeration, CT transparency, grading
net-benchmark ssl check --targets example.com \
  --verify-chain --check-revocation --enumerate-protocol --grade

# CI gate: fail the build on an expiring certificate
net-benchmark ssl check --targets ./targets.txt --threshold 'cert_expiry_days>30'

# mail server STARTTLS on a non-standard port
net-benchmark ssl check --targets mail.example.com:2525 --starttls smtp

Opt-in checks add: chain-of-trust validation and OCSP/CRL revocation, protocol/cipher enumeration, Certificate Transparency, CA/Browser Forum linting (pip install net-benchmark[lint]), deep handshake introspection including post-quantum groups (pip install net-benchmark[crypto]), grading against the published SSL Labs and Server Side TLS rubrics, JARM fingerprinting, and more. Full documentation: SSL Check guide


export formats

format flag notes
csv --formats csv raw results + summary
excel --formats excel charts, dnssec sheet, colour coding
pdf --formats pdf requires pip install net-benchmark[pdf]
json --formats json full payload including protocol stats; per-worker summaries and latency histogram on merged runs


license

mit © frankovo

Metadata

Release files for net-benchmark 0.6.2

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for net-benchmark 0.6.2
File Size Uploaded
net_benchmark-0.6.2.tar.gz 5.9 MB Details

Built distribution (wheel)

Table of built distributions (wheels) for net-benchmark 0.6.2
File Interpreter ABI Platform
net_benchmark-0.6.2-py3-none-any.whl Python 3 none any Details

Total release size: 11.9 MB

Release files / net_benchmark-0.6.2.tar.gz

Download URL net_benchmark-0.6.2.tar.gz
Size 5.9 MB
Tags Source
SHA-256 checksum
How to use checksums
bd09507ac99fff8653ac349775430949aeffa2a7cce49cd8152eb5fa3c32c728
BLAKE2b-256 checksum
How to use checksums
4f36e1ab439e2a726f95406c8b1f659a0d6064db05891db47e5ea4df18f06f30
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 10, 2026.

Transparency log

Release files / net_benchmark-0.6.2-py3-none-any.whl

Download URL net_benchmark-0.6.2-py3-none-any.whl
Size 5.9 MB
Tags Python 3
SHA-256 checksum
How to use checksums
69336ea2f7f62582c2fb5bfc7697457524a1b94efa44f88d339f6cb5d7454b10
BLAKE2b-256 checksum
How to use checksums
2eb428b585e744da8d3cbd13df11146302e10885f99ae71d1050e347cf84e7aa
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 10, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

0.6.2 This release

2 release files

0.6.1

2 release files

0.6.0

2 release files

0.5.6

2 release files

0.5.5

2 release files

0.5.4

2 release files

0.5.3

2 release files

0.5.2

2 release files

0.5.1

2 release files

0.5.0

2 release files

0.4.3

2 release files

0.4.2

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page