{"id":49702982,"url":"https://github.com/net-benchmark/dns-benchmark-tool","last_synced_at":"2026-05-24T21:00:46.343Z","repository":{"id":323247093,"uuid":"1092595436","full_name":"net-benchmark/dns-benchmark-tool","owner":"net-benchmark","description":"Fast, comprehensive DNS performance testing with DNSSEC validation, DoH/DoT support, and enterprise features","archived":false,"fork":false,"pushed_at":"2026-05-03T21:18:38.000Z","size":52290,"stargazers_count":360,"open_issues_count":0,"forks_count":11,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-05-08T22:42:11.615Z","etag":null,"topics":["automation","benchmark","cli-tool","cross-platform","developer-tools","dns","dnssec","doc","doh","dot","internet-infrastructure","latency","latency-test","network-per","networking","open-source","privacy","python","sysadmin","workflow-hygiene"],"latest_commit_sha":null,"homepage":"https://www.buildtools.net/","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/net-benchmark.png","metadata":{"files":{"readme":"README-pypi.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-11-08T23:16:24.000Z","updated_at":"2026-05-06T04:04:50.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/net-benchmark/dns-benchmark-tool","commit_stats":null,"previous_names":["frankovo/dns-benchmark-tool","net-benchmark/dns-benchmark-tool"],"tags_count":24,"template":false,"template_full_name":null,"purl":"pkg:github/net-benchmark/dns-benchmark-tool","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/net-benchmark%2Fdns-benchmark-tool","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/net-benchmark%2Fdns-benchmark-tool/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/net-benchmark%2Fdns-benchmark-tool/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/net-benchmark%2Fdns-benchmark-tool/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/net-benchmark","download_url":"https://codeload.github.com/net-benchmark/dns-benchmark-tool/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/net-benchmark%2Fdns-benchmark-tool/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33450402,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-24T19:21:36.376Z","status":"ssl_error","status_checked_at":"2026-05-24T19:21:10.562Z","response_time":57,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["automation","benchmark","cli-tool","cross-platform","developer-tools","dns","dnssec","doc","doh","dot","internet-infrastructure","latency","latency-test","network-per","networking","open-source","privacy","python","sysadmin","workflow-hygiene"],"created_at":"2026-05-08T08:00:42.628Z","updated_at":"2026-05-24T21:00:46.335Z","avatar_url":"https://github.com/net-benchmark.png","language":"Python","funding_links":[],"categories":["Python"],"sub_categories":[],"readme":"\u003cdiv align=\"center\"\u003e\n\n\u003e ⚠️ **deprecated.** this package is no longer maintained.\n\u003e migrate to: `pip install net-benchmark`\n\u003e https://github.com/net-benchmark/net-benchmark\n\n---\n\n# DNS Benchmark Tool\n\n**Fast, comprehensive DNS performance testing**\n\nPart of [BuildTools](https://buildtools.net) - Network Performance Suite\n\n```bash\npip install dns-benchmark-tool\ndns-benchmark benchmark --use-defaults --formats csv,excel\n```\n\n---\n\n\u003e 🎉 **1,400+ downloads · 600+ active users**\n\u003e 🚀 **The web dashboard is now live!** [Try BuildTools free →](https://buildtools.net)\n\n\u003c/div\u003e\n\n---\n\n\u003cp align=\"center\"\u003e\n  \u003cstrong\u003eReal Time Tracking\u003c/strong\u003e \u003cbr\u003e\n  \u003cimg src=\"https://raw.githubusercontent.com/frankovo/dns-benchmark-tool/main/docs/real_time_tracking.gif\" alt=\"Real Time Tracking\"\u003e\n  \u003cbr\u003e\n  \u003cspan\u003eWatch DNS queries in motion\u003c/span\u003e\n\u003c/p\u003e\n\n\n\u003cp align=\"center\"\u003e\n  \u003cstrong\u003eReal Time Tracking — Web UI\u003c/strong\u003e \u003cbr\u003e\n  \u003cimg src=\"https://raw.githubusercontent.com/frankovo/dns-benchmark-tool/main/docs/BuildTools_DNS_Test_Demo.gif\" alt=\"Real Time Tracking -Web UI\"\u003e\n  \u003cbr\u003e\n  \u003cspan\u003eMonitor DNS queries live with email alerts\u003c/span\u003e\n\u003c/p\u003e\n\n\n## 🎉 What's New in ![new](https://img.shields.io/pypi/v/dns-benchmark-tool.svg?color=brightgreen\u0026label=new)\n\nWe've added **three powerful CLI commands** and full support for **DoH, DoT, and DNSSEC**:\n\n- 🚀 **top** — quick ranking of resolvers by speed and reliability\n- 📊 **compare** — side-by-side benchmarking with detailed statistics and export options\n- 🔄 **monitoring** — continuous performance tracking with alerts and logging\n- 🔒 **DoH / DoT / DNSSEC** — encrypted DNS benchmarking with real latency tradeoff data\n\n```bash\n# Quick resolver ranking\ndns-benchmark top\n\n# Compare resolvers side-by-side\ndns-benchmark compare Cloudflare Google Quad9 --show-details\n\n# Run monitoring for 1 hour with alerts\ndns-benchmark monitoring --use-defaults --interval 30 --duration 3600 \\\n  --alert-latency 150 --alert-failure-rate 5 --output monitor.log\n\n# Encrypted DNS\ndns-benchmark benchmark \\\n  --resolvers \"Cloudflare,Google\" \\\n  --domains \"bing.com,google.com\" \\\n  --doh \\\n  --doh-url \"https://cloudflare-dns.com/dns-query,https://dns.google/dns-query\" \\\n  --iterations 1 \\\n  --formats csv \\\n  --output ./doh_results_explicit_urls\n\ndns-benchmark benchmark \\\n  --resolvers \"Cloudflare,Quad9\" \\\n  --domains \"cloudflare.com,quad9.net\" \\\n  --dot\n```\n\n[![CI Tests](https://github.com/frankovo/dns-benchmark-tool/actions/workflows/test.yml/badge.svg)](https://github.com/frankovo/dns-benchmark-tool/actions/workflows/test.yml)\n[![Publish to TestPyPI](https://github.com/frankovo/dns-benchmark-tool/actions/workflows/testpypi.yml/badge.svg)](https://github.com/frankovo/dns-benchmark-tool/actions/workflows/testpypi.yml)\n[![Publish to PyPI](https://github.com/frankovo/dns-benchmark-tool/actions/workflows/pypi.yml/badge.svg)](https://github.com/frankovo/dns-benchmark-tool/actions/workflows/pypi.yml)\n[![PyPI version](https://img.shields.io/pypi/v/dns-benchmark-tool.svg?color=brightgreen)](https://pypi.org/project/dns-benchmark-tool/)\n[![PyPI - Python Version](https://img.shields.io/pypi/pyversions/dns-benchmark-tool.svg)](https://pypi.org/project/dns-benchmark-tool/)\n\n![License](https://img.shields.io/badge/license-MIT-green.svg)\n![Coverage](https://img.shields.io/badge/coverage-87%25-brightgreen.svg)\n\n[![Downloads](https://img.shields.io/pypi/dm/dns-benchmark-tool.svg?color=blueviolet)](https://pypi.org/project/dns-benchmark-tool/)\n[![GitHub stars](https://img.shields.io/github/stars/frankovo/dns-benchmark-tool.svg?style=social\u0026label=Star)](https://github.com/frankovo/dns-benchmark-tool/stargazers)\n[![GitHub forks](https://img.shields.io/github/forks/frankovo/dns-benchmark-tool.svg?style=social\u0026label=Fork)](https://github.com/frankovo/dns-benchmark-tool/network/members)\n[![Issues](https://img.shields.io/github/issues/frankovo/dns-benchmark-tool.svg?color=orange)](https://github.com/frankovo/dns-benchmark-tool/issues)\n[![Last commit](https://img.shields.io/github/last-commit/frankovo/dns-benchmark-tool.svg?color=blue)](https://github.com/frankovo/dns-benchmark-tool/commits/main)\n[![Main branch protected](https://img.shields.io/badge/branch%20protection-main%20✅-brightgreen)](https://github.com/frankovo/dns-benchmark-tool/blob/main/RELEASE.md)\n\n## ⚡ Commands at a Glance\n\n| Command | What it does | Quick example |\n|---|---|---|\n| `benchmark` | Full DNS benchmark with exports | `dns-benchmark benchmark --use-defaults` |\n| `top` | Rank all resolvers by speed | `dns-benchmark top --limit 5` |\n| `compare` | Side-by-side resolver comparison | `dns-benchmark compare Cloudflare Google Quad9` |\n| `monitoring` | Continuous monitoring with alerts | `dns-benchmark monitoring --use-defaults` |\n\n---\n\n## Why DNS Benchmarking?\n\nDNS resolution can add 300ms+ to every request. This tool helps you find the fastest resolver for YOUR location.\n\n**The Problem:**\n\n- DNS adds hidden latency to every request\n- Fastest resolver depends on your location\n- Security varies wildly (DNSSEC, DoH, DoT)\n- Most developers never test their DNS\n  \n**The Solution:**\n\n- Test multiple DNS resolvers side-by-side\n- Get statistical analysis (P95, P99, jitter, consistency)\n- Validate DNSSEC security\n- Compare privacy options (DoH, DoT)\n\n---\n\n## Key Features\n\n### 🚀 Performance\n\n✅ Async queries let you test 100+ resolvers simultaneously.  \n✅ Multi‑iteration runs (`--iterations 3`) provide more accurate results.  \n✅ Statistical analysis includes P95, P99, jitter, and consistency scores.  \n✅ Smart caching reuses results with `--use-cache`.  \n✅ Warmup options (`--warmup` or `--warmup-fast`) ensure accurate tests.  \n\n## 🔒 Security \u0026 Encrypted DNS\n\nThree protocols are fully supported — each adds privacy at a latency cost.\n\n| Protocol | Flag | Typical overhead | When to use |\n|---|---|---|---|\n| Plain UDP | *(default)* | baseline | Latency benchmarking |\n| DNS-over-HTTPS | `--doh` | +50–200ms | Privacy, firewall bypass |\n| DNS-over-TLS | `--dot` | +200–500ms cold, ~50ms warm | Encrypted transport |\n| DNSSEC | `--dnssec-validate` | +30–100ms | Validating resolver integrity |\n\n\u003e ⚠️ **Tradeoffs**\n\u003e - DoH and DoT add TLS handshake overhead on first query per resolver. Use `--warmup-fast` to absorb this before measuring.\n\u003e - `--dnssec-validate` requests RRSIG records and enforces the AD flag. Only ~33% of common domains are DNSSEC-signed — expect `DNSSEC_FAILED` results on unsigned domains. Latency numbers with and without this flag are **not directly comparable**.\n\u003e - Results on mobile/hotspot will show 2–5× higher variance than wired ethernet. Use `--iterations 5` and compare median latency, not average.\n\n```bash\n# DoH benchmark — resolvers in db have URLs auto-resolved\ndns-benchmark benchmark \\\n  --resolvers \"Cloudflare,Google\" \\\n  --domains \"cloudflare.com,google.com\" \\\n  --doh --warmup-fast\n\n# DoH with explicit URLs — must match resolver count 1:1, order matters\ndns-benchmark benchmark \\\n  --resolvers \"Cloudflare,Google\" \\\n  --domains \"bing.com,google.com\" \\\n  --doh \\\n  --doh-url \"https://cloudflare-dns.com/dns-query,https://dns.google/dns-query\" \\\n  --formats csv \\\n  --output ./doh_results\n\n# DoT with DNSSEC on signed domains\ndns-benchmark benchmark \\\n  --resolvers \"Cloudflare,Quad9\" \\\n  --domains \"cloudflare.com,quad9.net\" \\\n  --dot \\\n  --dnssec-validate\n\n# Rank top resolvers over DoH\ndns-benchmark top --doh --limit 5\n\n# Rank top resolvers over DoT by reliability\ndns-benchmark top --dot --metric reliability --limit 5\n\n# Compare resolvers over DoH\ndns-benchmark compare Cloudflare Google --doh --iterations 3\n\n# Monitor with DoT and latency alerts\ndns-benchmark monitoring --use-defaults --dot \\\n  --interval 60 --alert-latency 300\n\n# DoH + DNSSEC enforced + export\ndns-benchmark benchmark --use-defaults --doh --dnssec-validate --formats csv,excel\n\n# DoT + DNSSEC + multiple iterations\ndns-benchmark benchmark \\\n  --resolvers \"Cloudflare,Quad9,Google\" \\\n  --domains \"cloudflare.com,quad9.net,google.com\" \\\n  --dot \\\n  --dnssec-validate \\\n  --iterations 5 \\\n  --formats excel\n\n# DoH monitoring with explicit URLs\ndns-benchmark monitoring \\\n  --resolvers \"Cloudflare,Google\" \\\n  --doh \\\n  --doh-url \"https://cloudflare-dns.com/dns-query,https://dns.google/dns-query\" \\\n  --interval 30 --duration 7200\n```\n\n**Early failure examples** — these fail immediately before any query runs:\n\n```bash\n# --doh and --dot are mutually exclusive\ndns-benchmark benchmark --use-defaults --doh --dot\n# ERROR: --doh and --dot are mutually exclusive.\n\n# --doh-url count must match --resolvers count\ndns-benchmark benchmark --resolvers \"Cloudflare,Google\" --doh \\\n  --doh-url \"https://cloudflare-dns.com/dns-query\"\n# ERROR: --doh-url has 1 URL(s) but --resolvers has 2 resolver(s). Counts must match.\n\n# Custom IP with --doh requires --doh-url\ndns-benchmark benchmark --resolvers \"192.168.1.1\" --doh\n# ERROR: --doh requires a DoH URL for: 192.168.1.1. Use --doh-url to supply them explicitly.\n```\n\n---\n\n## Installation\n\n```bash\npip install dns-benchmark-tool\n\n#Verify Installation\ndns-benchmark --version\ndns-benchmark --help\n```\n\n## 📄 Optional PDF Export\n\nBy default, the tool supports **CSV** and **Excel** exports.  \nPDF export requires the extra dependency **weasyprint**, which is not installed automatically to avoid runtime issues on some platforms.\n\n### Install with PDF support\n\n```bash\npip install dns-benchmark-tool[pdf]\n```\n\n### Usage\n\nOnce installed, you can request PDF output via the CLI:\n\n```bash\ndns-benchmark --use-defaults --formats pdf --output ./results\n```\n\nIf `weasyprint` is not installed and you request PDF output, the CLI will show:\n\n```bash\n[-] Error during benchmark: PDF export requires 'weasyprint'. Install with: pip install dns-benchmark-tool[pdf]\n```\n\n---\n\n## ⚠️ WeasyPrint Setup (for PDF export)\n\nThe DNS Benchmark Tool uses **WeasyPrint** to generate PDF reports.  \nIf you want PDF export, you need extra system libraries in addition to the Python package.\n\n### 🛠 Linux (Debian/Ubuntu)\n\n```bash\nsudo apt install python3-pip libpango-1.0-0 libpangoft2-1.0-0 \\\n  libharfbuzz-subset0 libjpeg-dev libopenjp2-7-dev libffi-dev\n```\n\n---\n\n### 🛠 macOS (Homebrew)\n\n```bash\nbrew install pango cairo libffi gdk-pixbuf jpeg openjpeg harfbuzz\n```\n\n---\n\n### 🛠 Windows\n\nInstall GTK+ libraries using one of these methods:\n\n- **MSYS2**: [Download MSYS2](https://www.msys2.org/), then run:\n\n  ```bash\n  pacman -S mingw-w64-x86_64-gtk3 mingw-w64-x86_64-libffi\n  ```\n\n- **GTK+ 64‑bit Installer**: [Download GTK+ Runtime](https://github.com/tschoonj/GTK-for-Windows-Runtime-Environment-Installer/releases) and run the installer.\n\nRestart your terminal after installation.\n\n---\n\n### ✅ Verify Installation\n\nAfter installing the system libraries, install the Python extra:\n\n```bash\npip install dns-benchmark-tool[pdf]\n```\n\nThen run:\n\n```bash\ndns-benchmark --use-defaults --formats pdf --output ./results\n```\n\n## Quick usage\n\n```bash\n# Run first benchmark\ndns-benchmark benchmark --use-defaults\n\n# Custom resolvers and domains\ndns-benchmark benchmark --resolvers data/resolvers.json --domains data/domains.txt\n\n# Results saved to ./benchmark_results/\n```\n\n---\n\n## 📖 Usage Examples\n\n### Basic Usage\n\n```bash\n# Basic test with progress bars\ndns-benchmark benchmark --use-defaults --formats csv,excel\n\n# Basic test without progress bars\ndns-benchmark benchmark --use-defaults --formats csv,excel --quiet\n\n# Test with custom resolvers and domains\ndns-benchmark benchmark --resolvers data/resolvers.json --domains data/domains.txt\n\n# Quick test with only CSV output\ndns-benchmark benchmark --use-defaults --formats csv\n```\n\n### Advanced Usage\n\n```bash\n# Export a machine-readable bundle\ndns-benchmark benchmark --use-defaults --json --output ./results\n\n# Test specific record types\ndns-benchmark benchmark --use-defaults --formats csv,excel --record-types A,AAAA,MX\n\n# Custom output location and formats\ndns-benchmark benchmark \\\n  --use-defaults \\\n  --output ./my-results \\\n  --formats csv,excel,pdf,json\n\n# Include detailed statistics\ndns-benchmark benchmark \\\n  --use-defaults \\\n  --record-type-stats \\\n  --error-breakdown\n\n# High concurrency with retries\ndns-benchmark benchmark \\\n  --use-defaults \\\n  --max-concurrent 200 \\\n  --timeout 3.0 \\\n  --retries 3\n\n# Website migration planning\ndns-benchmark benchmark \\\n  --resolvers data/global_resolvers.json \\\n  --domains data/migration_domains.txt \\\n  --formats excel,pdf \\\n  --output ./migration_analysis\n\n# DNS provider selection\ndns-benchmark benchmark \\\n  --resolvers data/provider_candidates.json \\\n  --domains data/business_domains.txt \\\n  --formats csv,excel \\\n  --output ./provider_selection\n\n# Network troubleshooting\ndns-benchmark benchmark \\\n  --resolvers \"192.168.1.1,1.1.1.1,8.8.8.8\" \\\n  --domains \"problematic-domain.com,working-domain.com\" \\\n  --timeout 10 \\\n  --retries 3 \\\n  --formats csv \\\n  --output ./troubleshooting\n\n# Security assessment\ndns-benchmark benchmark \\\n  --resolvers data/security_resolvers.json \\\n  --domains data/security_test_domains.txt \\\n  --formats pdf \\\n  --output ./security_assessment\n\n# Performance monitoring\ndns-benchmark benchmark \\\n  --use-defaults \\\n  --formats csv \\\n  --quiet \\\n  --output /var/log/dns_benchmark/$(date +%Y%m%d_%H%M%S)\n```\n\n### Utilities\n\n```bash\n# List default resolvers and domains\ndns-benchmark list-defaults\n\n# Browse available resolvers\ndns-benchmark list-resolvers\ndns-benchmark list-resolvers --category privacy\ndns-benchmark list-resolvers --format csv\n\n# Browse test domains\ndns-benchmark list-domains\ndns-benchmark list-domains --category tech\n\n# Generate sample config\ndns-benchmark generate-config --output my-config.yaml\ndns-benchmark generate-config --category security --output security.yaml\n```\n\n---\n\n## Real-World Use Cases\n\n**For Developers \u0026 DevOps/SRE:**\n\n```bash\n# Optimize API performance\ndns-benchmark benchmark \\\n  --domains api.myapp.com,cdn.myapp.com \\\n  --record-types A,AAAA \\\n  --iterations 10\n\n# CI/CD integration test\ndns-benchmark benchmark \\\n  --resolvers data/ci_resolvers.json \\\n  --domains data/ci_domains.txt \\\n  --timeout 2 \\\n  --formats csv \\\n  --quiet\n```\n\n**For Enterprise IT:**\n\n```bash\n# Corporate network assessment\ndns-benchmark benchmark \\\n  --resolvers data/enterprise_resolvers.json \\\n  --domains data/corporate_domains.txt \\\n  --record-types A,AAAA,MX,TXT,SRV \\\n  --timeout 10 \\\n  --max-concurrent 25 \\\n  --retries 2 \\\n  --formats csv,excel,pdf \\\n  --output ./enterprise_dns_audit\n\n# Multi-location testing\ndns-benchmark benchmark \\\n  --resolvers data/global_resolvers.json \\\n  --domains data/international_domains.txt \\\n  --formats excel \\\n  --output ./global_performance\n```\n\n**For Network Admins:**\n\n```bash\n# Monthly health check (crontab)\n0 0 1 * * dns-benchmark benchmark \\\n  --use-defaults \\\n  --formats pdf,csv \\\n  --output /var/reports/dns/\n```\n\n## Performance Tips\n\n| Mode | Flags | Purpose |\n|------|-------|---------|\n| **Quick** | `--iterations 1 --warmup-fast --timeout 1` | Fast feedback |\n| **Thorough** | `--iterations 3 --use-cache --warmup` | Accurate results |\n| **CI/CD** | `--quiet --formats csv --timeout 2` | Automated testing |\n| **Large Scale** | `--max-concurrent 200 --quiet` | 100+ resolvers |\n\n---\n\n## ⚡ CLI Commands\n\nThe DNS Benchmark Tool now includes three specialized commands for different workflows:\n\n### 🚀 Top\n\nQuickly rank resolvers by speed and reliability.\n\n```bash\n# Rank resolvers quickly\ndns-benchmark top\n\n# Use custom domain list\ndns-benchmark top -d domains.txt\n\n# Export results to JSON\ndns-benchmark top -o results.json\n```\n\n---\n\n### 📊 Compare\n\nBenchmark resolvers side‑by‑side with detailed statistics.\n\n```bash\n# Compare Cloudflare, Google, and Quad9\ndns-benchmark compare Cloudflare Google Quad9\n\n# Compare by IP addresses\ndns-benchmark compare 1.1.1.1 8.8.8.8 9.9.9.9\n\n# Show detailed per-domain breakdown\ndns-benchmark compare Cloudflare Google --show-details\n\n# Export results to CSV\ndns-benchmark compare Cloudflare Google -o results.csv\n```\n\n---\n\n### 🔄 Monitoring\n\nContinuously monitor resolver performance with alerts.\n\n```bash\n# Monitor default resolvers continuously (every 60s)\ndns-benchmark monitoring --use-defaults\n\n# Monitor with custom resolvers and domains\ndns-benchmark monitoring -r resolvers.json -d domains.txt\n\n# Run monitoring for 1 hour with alerts\ndns-benchmark monitoring --use-defaults --interval 30 --duration 3600 \\\n  --alert-latency 150 --alert-failure-rate 5 --output monitor.log\n```\n\n---\n\n### 🌟 Command Showcase\n\n| Command      | Purpose | Typical Use Case | Key Options | Output |\n|--------------|---------|------------------|-------------|--------|\n| **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 \u0026 success rate |\n| **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 |\n| **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 |\n\n---\n\n## 🌐 BuildTools Web Dashboard — Now Live\n\n**CLI stays free forever.** The web dashboard is now available at [buildtools.net](https://buildtools.net)\n\n### What's live now (Free + Pro)\n\n- 📊 **DNS Benchmark** — Visual results, history, powered by this CLI engine\n- 🔔 **DNS Monitoring** — Real-time alerts when your records change\n- 🆓 **Free tier** — Get started immediately, no credit card required\n- 💼 **Pro at €14/mo** — Extended retention and priority support\n\n### Coming Q2 2026\n\n- ⚡ **HTTP Benchmark** — Measure API response times and CDN performance\n- 🔒 **SSL Monitor** — Certificate expiry alerts before issues occur\n\n### Coming Q3 2026\n\n- 🌍 **Multi-region testing** — Test from multiple locations simultaneously\n\n[→ Sign up free at buildtools.net](https://buildtools.net)\n\n---\n\n## 🤝 Contributing\n\nWe love contributions! Here's how you can help:\n\n### Ways to Contribute\n\n- 🐛 **Report bugs** - [Open an issue](https://github.com/frankovo/dns-benchmark-tool/issues)\n- 💡 **Suggest features** - [Start a discussion](https://github.com/frankovo/dns-benchmark-tool/discussions)\n- 📝 **Improve docs** - README, examples, tutorials\n- 🔧 **Submit PRs** - Bug fixes, features, tests\n- ⭐ **Star the repo** - Help others discover the tool\n- 📢 **Spread the word** - Tweet, blog, share\n\n### Code Guidelines\n\n- Follow PEP 8 style guide\n- Add tests for new features\n- Update documentation\n- Keep PRs focused and atomic\n\n---\n\n## 🔗 Links \u0026 Support\n\n### Official\n\n- **Website**: [buildtools.net](https://buildtools.net)\n- **PyPI**: [dns-benchmark-tool](https://pypi.org/project/dns-benchmark-tool/)\n- **GitHub**: [frankovo/dns-benchmark-tool](https://github.com/frankovo/dns-benchmark-tool)\n\n### Community\n\n- **Documentation:** Full usage guide, advanced examples, and screenshots are available on [GitHub](https://github.com/frankovo/dns-benchmark-tool)\n- **Discussions**: [GitHub Discussions](https://github.com/frankovo/dns-benchmark-tool/discussions)\n- **Issues**: [Bug Reports](https://github.com/frankovo/dns-benchmark-tool/issues)\n\n---\n\n## License\n\nMIT License - see [LICENSE](https://github.com/frankovo/dns-benchmark-tool/blob/main/LICENSE) file for details.\n\n---\n\n\u003cdiv align=\"center\"\u003e\n\n**Built with ❤️ by [@frankovo](https://github.com/frankovo)**\n\nPart of [BuildTools](https://buildtools.net) - Network Performance Suite\n\n[⭐ Star on GitHub](https://github.com/frankovo/dns-benchmark-tool) • [📦 Install from PyPI](https://pypi.org/project/dns-benchmark-tool/)\n\u003c/div\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnet-benchmark%2Fdns-benchmark-tool","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnet-benchmark%2Fdns-benchmark-tool","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnet-benchmark%2Fdns-benchmark-tool/lists"}