Skip to main content

Fast, comprehensive DNS performance testing with DNSSEC validation, DoH/DoT support, and enterprise features.

Project description

DNS Benchmark Tool

Fast, comprehensive DNS performance testing

Part of BuildTools - Network Performance Suite

pip install dns-benchmark-tool
dns-benchmark benchmark --use-defaults --formats csv,excel

๐ŸŽ‰ 1,400+ downloads this week! Thank you to our growing community.


Real Time Tracking
Real Time Tracking
Watch DNS queries in motion

๐ŸŽ‰ Todayโ€™s Release Highlights new

Weโ€™ve added three powerful CLI commands to make DNS benchmarking even more versatile:

  • ๐Ÿš€ top โ€” quick ranking of resolvers by speed and reliability
  • ๐Ÿ“Š compare โ€” sideโ€‘byโ€‘side benchmarking with detailed statistics and export options
  • ๐Ÿ”„ monitoring โ€” continuous performance tracking with alerts and logging
# Quick resolver ranking
dns-benchmark top

# Compare resolvers side-by-side
dns-benchmark compare Cloudflare Google Quad9 --show-details

# Run monitoring for 1 hour with alerts
dns-benchmark monitoring --use-defaults --interval 30 --duration 3600 \
  --alert-latency 150 --alert-failure-rate 5 --output monitor.log

CI Tests Publish to TestPyPI Publish to PyPI PyPI version PyPI - Python Version

License Coverage

Downloads GitHub stars GitHub forks Issues Last commit Main branch protected

Why DNS Benchmarking?

DNS resolution can add 300ms+ to every request. This tool helps you find the fastest resolver for YOUR location.

The Problem:

  • DNS adds hidden latency to every request
  • Fastest resolver depends on your location
  • Security varies wildly (DNSSEC, DoH, DoT)
  • Most developers never test their DNS

The Solution:

  • Test multiple DNS resolvers side-by-side
  • Get statistical analysis (P95, P99, jitter, consistency)
  • Validate DNSSEC security
  • Compare privacy options (DoH, DoT, DoQ)

Key Features

๐Ÿš€ Performance

โœ… Async queries let you test 100+ resolvers simultaneously.
โœ… Multiโ€‘iteration runs (--iterations 3) provide more accurate results.
โœ… Statistical analysis includes P95, P99, jitter, and consistency scores.
โœ… Smart caching reuses results with --use-cache.
โœ… Warmup options (--warmup or --warmup-fast) ensure accurate tests.

๐Ÿ”’ Security & Privacy

โœ… DNSSEC validation verifies cryptographic trust chains.
โœ… DNS-over-HTTPS (DoH) enables encrypted DNS benchmarking.
โœ… DNS-over-TLS (DoT) secures transport testing.
โœ… DNS-over-QUIC (DoQ) adds experimental QUIC support.
โœ… TSIG authentication provides enterprise-grade secure queries.

๐Ÿ“Š Analysis & Export

โœ… Multiple formats supported: CSV, Excel, PDF, JSON.
โœ… Visual reports with charts and graphs in PDF/Excel.
โœ… Record type statistics (--record-type-stats) compare A, AAAA, MX, etc.
โœ… Error breakdown (--error-breakdown) highlights problematic resolvers.

๐Ÿข Enterprise Features

โœ… Zone transfers (AXFR/IXFR) validate DNS migrations.
โœ… Dynamic updates allow DNS write operation testing.
โœ… EDNS0 support extends DNS features.
โœ… Windows WMI integration auto-detects system DNS.
โœ… Compliance reports generate audit-ready PDF/Excel documentation.

๐ŸŒ Cross-Platform

โœ… Native support for Linux, macOS, and Windows.
โœ… CI/CD friendly with JSON output, exit codes, and --quiet mode.
โœ… IDNA support for internationalized domain names.
โœ… Custom configurations using JSON resolvers and text domain lists.

Installation

pip install dns-benchmark-tool

#Verify Installation
dns-benchmark --version
dns-benchmark --help

๐Ÿ“„ Optional PDF Export

By default, the tool supports CSV and Excel exports.
PDF export requires the extra dependency weasyprint, which is not installed automatically to avoid runtime issues on some platforms.

Install with PDF support

pip install dns-benchmark-tool[pdf]

Usage

Once installed, you can request PDF output via the CLI:

dns-benchmark --use-defaults --formats pdf --output ./results

If weasyprint is not installed and you request PDF output, the CLI will show:

[-] Error during benchmark: PDF export requires 'weasyprint'. Install with: pip install dns-benchmark-tool[pdf]

โš ๏ธ WeasyPrint Setup (for PDF export)

The DNS Benchmark Tool uses WeasyPrint to generate PDF reports.
If you want PDF export, you need extra system libraries in addition to the Python package.

๐Ÿ›  Linux (Debian/Ubuntu)

sudo apt install python3-pip libpango-1.0-0 libpangoft2-1.0-0 \
  libharfbuzz-subset0 libjpeg-dev libopenjp2-7-dev libffi-dev

๐Ÿ›  macOS (Homebrew)

brew install pango cairo libffi gdk-pixbuf jpeg openjpeg harfbuzz

๐Ÿ›  Windows

Install GTK+ libraries using one of these methods:

Restart your terminal after installation.


โœ… Verify Installation

After installing the system libraries, install the Python extra:

pip install dns-benchmark-tool[pdf]

Then run:

dns-benchmark --use-defaults --formats pdf --output ./results

Quick usage

# Run first benchmark
dns-benchmark benchmark --use-defaults

# Custom resolvers and domains
dns-benchmark benchmark --resolvers data/resolvers.json --domains data/domains.txt

# Results saved to ./benchmark_results/

๐Ÿ“– Usage Examples

Basic Usage

# Basic test with progress bars
dns-benchmark benchmark --use-defaults --formats csv,excel

# Basic test without progress bars
dns-benchmark benchmark --use-defaults --formats csv,excel --quiet

# Test with custom resolvers and domains
dns-benchmark benchmark --resolvers data/resolvers.json --domains data/domains.txt

# Quick test with only CSV output
dns-benchmark benchmark --use-defaults --formats csv

Advanced Usage

# Export a machine-readable bundle
dns-benchmark benchmark --use-defaults --json --output ./results

# Test specific record types
dns-benchmark benchmark --use-defaults --formats csv,excel --record-types A,AAAA,MX

# Custom output location and formats
dns-benchmark benchmark \
  --use-defaults \
  --output ./my-results \
  --formats csv,excel,pdf,json

# Include detailed statistics
dns-benchmark benchmark \
  --use-defaults \
  --record-type-stats \
  --error-breakdown

# High concurrency with retries
dns-benchmark benchmark \
  --use-defaults \
  --max-concurrent 200 \
  --timeout 3.0 \
  --retries 3

# Website migration planning
dns-benchmark benchmark \
  --resolvers data/global_resolvers.json \
  --domains data/migration_domains.txt \
  --formats excel,pdf \
  --output ./migration_analysis

# DNS provider selection
dns-benchmark benchmark \
  --resolvers data/provider_candidates.json \
  --domains data/business_domains.txt \
  --formats csv,excel \
  --output ./provider_selection

# Network troubleshooting
dns-benchmark benchmark \
  --resolvers "192.168.1.1,1.1.1.1,8.8.8.8" \
  --domains "problematic-domain.com,working-domain.com" \
  --timeout 10 \
  --retries 3 \
  --formats csv \
  --output ./troubleshooting

# Security assessment
dns-benchmark benchmark \
  --resolvers data/security_resolvers.json \
  --domains data/security_test_domains.txt \
  --formats pdf \
  --output ./security_assessment

# Performance monitoring
dns-benchmark benchmark \
  --use-defaults \
  --formats csv \
  --quiet \
  --output /var/log/dns_benchmark/$(date +%Y%m%d_%H%M%S)

Utilities

# List default resolvers and domains
dns-benchmark list-defaults

# Browse available resolvers
dns-benchmark list-resolvers
dns-benchmark list-resolvers --category privacy
dns-benchmark list-resolvers --format csv

# Browse test domains
dns-benchmark list-domains
dns-benchmark list-domains --category tech

# Generate sample config
dns-benchmark generate-config --output my-config.yaml
dns-benchmark generate-config --category security --output security.yaml

Real-World Use Cases

For Developers & DevOps/SRE:

# Optimize API performance
dns-benchmark benchmark \
  --domains api.myapp.com,cdn.myapp.com \
  --record-types A,AAAA \
  --iterations 10

# CI/CD integration test
dns-benchmark benchmark \
  --resolvers data/ci_resolvers.json \
  --domains data/ci_domains.txt \
  --timeout 2 \
  --formats csv \
  --quiet

For Enterprise IT:

# Corporate network assessment
dns-benchmark benchmark \
  --resolvers data/enterprise_resolvers.json \
  --domains data/corporate_domains.txt \
  --record-types A,AAAA,MX,TXT,SRV \
  --timeout 10 \
  --max-concurrent 25 \
  --retries 2 \
  --formats csv,excel,pdf \
  --output ./enterprise_dns_audit

# Multi-location testing
dns-benchmark benchmark \
  --resolvers data/global_resolvers.json \
  --domains data/international_domains.txt \
  --formats excel \
  --output ./global_performance

For Network Admins:

# Monthly health check (crontab)
0 0 1 * * dns-benchmark benchmark \
  --use-defaults \
  --formats pdf,csv \
  --output /var/reports/dns/

Performance Tips

Mode Flags Purpose
Quick --iterations 1 --warmup-fast --timeout 1 Fast feedback
Thorough --iterations 3 --use-cache --warmup Accurate results
CI/CD --quiet --formats csv --timeout 2 Automated testing
Large Scale --max-concurrent 200 --quiet 100+ resolvers

โšก CLI Commands

The DNS Benchmark Tool now includes three specialized commands for different workflows:

๐Ÿš€ Top

Quickly rank resolvers by speed and reliability.

# Rank resolvers quickly
dns-benchmark top

# Use custom domain list
dns-benchmark top -d domains.txt

# Export results to JSON
dns-benchmark top -o results.json

๐Ÿ“Š Compare

Benchmark resolvers sideโ€‘byโ€‘side with detailed statistics.

# Compare Cloudflare, Google, and Quad9
dns-benchmark compare Cloudflare Google Quad9

# Compare by IP addresses
dns-benchmark compare 1.1.1.1 8.8.8.8 9.9.9.9

# Show detailed per-domain breakdown
dns-benchmark compare Cloudflare Google --show-details

# Export results to CSV
dns-benchmark compare Cloudflare Google -o results.csv

๐Ÿ”„ Monitoring

Continuously monitor resolver performance with alerts.

# Monitor default resolvers continuously (every 60s)
dns-benchmark monitoring --use-defaults

# Monitor with custom resolvers and domains
dns-benchmark monitoring -r resolvers.json -d domains.txt

# Run monitoring for 1 hour with alerts
dns-benchmark monitoring --use-defaults --interval 30 --duration 3600 \
  --alert-latency 150 --alert-failure-rate 5 --output monitor.log

๐ŸŒŸ Command Showcase

Command Purpose Typical Use Case Key Options Output
top Quick ranking of resolvers by speed and reliability Fast check to see which resolver is best right now --domains, --record-types, --output Sorted list of resolvers with latency & success rate
compare Sideโ€‘byโ€‘side comparison of specific resolvers Detailed benchmarking across chosen resolvers/domains --domains, --record-types, --iterations, --output, --show-details Table of resolvers with latency, success rate, perโ€‘domain breakdown
monitoring Continuous monitoring with alerts Realโ€‘time tracking of resolver performance over time --interval, --duration, --alert-latency, --alert-failure-rate, --output, --use-defaults Live status indicators, alerts, optional log file

Feedback & Community

Share Your Input

Help us improve dns-benchmark! Share your DNS challenges and feature requests:

dns-benchmark feedback

Opens a 2-minute survey that directly shapes our roadmap: https://forms.gle/BJBiyBFvRJHskyR57

Smart Prompts (Non-Intrusive)

The tool occasionally shows a feedback prompt:

  • Only after runs 5, 15, and 30 (not random)
  • With 24-hour cooldown between prompts
  • Stops after you submit feedback or dismiss 3 times

Privacy First

Local storage only: State stored in ~/.dns-benchmark/feedback.json
No telemetry: Zero automatic data collection
Full control: Multiple opt-out options available

Opt Out

Dismiss when prompted:

Show this again? (y/n) [y]: n

Environment variable (permanent):

export DNS_BENCHMARK_NO_FEEDBACK=1

Auto-disabled in CI/CD: Respects CI=true and --quiet flag


๐ŸŒ Hosted Version (Coming Soon)

CLI stays free forever. The hosted version adds features impossible to achieve locally:

๐ŸŒ Multi-Region Testing

Test from US-East, US-West, EU, Asia simultaneously. See how your DNS performs for users worldwide.

๐Ÿ“Š Historical Tracking

Monitor DNS performance over time. Identify trends, degradation, and optimize continuously.

๐Ÿšจ Smart Alerts

Get notified via Email, Slack, PagerDuty when DNS performance degrades or SLA thresholds are breached.

๐Ÿ‘ฅ Team Collaboration

Share results, dashboards, and reports across your team. Role-based access control.

๐Ÿ“ˆ SLA Compliance

Automated monthly reports proving DNS provider meets SLA guarantees. Audit-ready documentation.

๐Ÿ”Œ API Access

Integrate DNS monitoring into your existing observability stack. Prometheus, Datadog, Grafana.


Join the Waitlist โ†’ | Early access gets 50% off for 3 months


๐Ÿ›ฃ๏ธ Roadmap

โœ… Current Release (CLI Edition)

  • Benchmark DNS resolvers across domains and record types
  • Export to CSV, Excel, PDF, JSON
  • Statistical analysis (P95, P99, jitter, consistency)
  • Automation support (CI/CD, cron)

๐Ÿšง Hosted Version (Q1 2026)

CLI stays free forever. Hosted adds:

  • ๐ŸŒ Multi-region testing (US, EU, Asia, custom)
  • ๐Ÿ“Š Historical tracking with charts and trends
  • ๐Ÿšจ Alerts (Email, Slack, PagerDuty, webhooks)
  • ๐Ÿ‘ฅ Team collaboration and sharing
  • ๐Ÿ“ˆ SLA compliance reporting
  • ๐Ÿ”Œ API access and integrations

Join Waitlist for early access

๐Ÿ”œ More Network Tools (Q1-Q2 2026)

Part of BuildTools - Network Performance Suite:

  • ๐Ÿ” HTTP/HTTPS Benchmark - Test API endpoints and CDNs
  • ๐Ÿ”’ SSL Certificate Monitor - Never miss renewals
  • ๐Ÿ“ก Uptime Monitor - 24/7 availability tracking
  • ๐ŸŒ API Health Dashboard - Complete network observability

๐Ÿ’ก Your Input Matters

Help shape our roadmap:


๐Ÿค Contributing

We love contributions! Here's how you can help:

Ways to Contribute

  • ๐Ÿ› Report bugs - Open an issue
  • ๐Ÿ’ก Suggest features - Start a discussion
  • ๐Ÿ“ Improve docs - README, examples, tutorials
  • ๐Ÿ”ง Submit PRs - Bug fixes, features, tests
  • โญ Star the repo - Help others discover the tool
  • ๐Ÿ“ข Spread the word - Tweet, blog, share

Code Guidelines

  • Follow PEP 8 style guide
  • Add tests for new features
  • Update documentation
  • Keep PRs focused and atomic

๐Ÿ”— Links & Support

Official

Community

Stats

  • Downloads: 1,400+ (this week)
  • Active Users: 600+

License

MIT License - see LICENSE file for details.


Built with โค๏ธ by @frankovo

Part of BuildTools - Network Performance Suite

โญ Star on GitHub โ€ข ๐Ÿ“ฆ Install from PyPI โ€ข ๐ŸŒ Join Waitlist

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

dns_benchmark_tool-0.3.4.tar.gz (5.5 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

dns_benchmark_tool-0.3.4-py3-none-any.whl (40.0 kB view details)

Uploaded Python 3

File details

Details for the file dns_benchmark_tool-0.3.4.tar.gz.

File metadata

  • Download URL: dns_benchmark_tool-0.3.4.tar.gz
  • Upload date:
  • Size: 5.5 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for dns_benchmark_tool-0.3.4.tar.gz
Algorithm Hash digest
SHA256 4a6d95866da742f5805cbb683e1d8d34b2ae7f2e15e325f5775f3043096c177d
MD5 7725809b2869a8bb98495deb4ba223c7
BLAKE2b-256 b4d0eb43979226a2dc8e551f8d711ac17118d7d43c7f0de8880d1f1d6628b021

See more details on using hashes here.

Provenance

The following attestation bundles were made for dns_benchmark_tool-0.3.4.tar.gz:

Publisher: pypi.yml on frankovo/dns-benchmark-tool

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file dns_benchmark_tool-0.3.4-py3-none-any.whl.

File metadata

File hashes

Hashes for dns_benchmark_tool-0.3.4-py3-none-any.whl
Algorithm Hash digest
SHA256 e5bfcfe127a5b7dc4ab630e0e6473e83a7bef540083ebaca0c6939bb35f40f9f
MD5 58a7ed810a120a92d0216899bd45814a
BLAKE2b-256 61d836cad7fb778113f58c73c8c3528bf13307cdd16ea1845d48205ff1904aa6

See more details on using hashes here.

Provenance

The following attestation bundles were made for dns_benchmark_tool-0.3.4-py3-none-any.whl:

Publisher: pypi.yml on frankovo/dns-benchmark-tool

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page