A DNS performance testing IPv4, IPv6, DNS over HTTPS (DoH), DNS over TLS (DoT), and DNS over QUIC (DoQ).
Public Instance:
- https://yadnsb.altendorfme.com (Thanks Shiper.app for free upgrade!)
docker run -d \
--name yadnsb \
-p 3000:3000 \
--restart unless-stopped \
ghcr.io/altendorfme/yadnsb:latest
services:
yadnsb:
image: ghcr.io/altendorfme/yadnsb:latest
container_name: yadnsb
restart: always
mem_limit: 256m
security_opt:
- no-new-privileges:true
healthcheck:
test: wget --no-verbose --tries=1 --spider http://localhost:3000/ || exit 1
interval: 15s
timeout: 5s
retries: 3
start_period: 15s
ports:
- 3000:3000
- Node.js 22 or higher
- npm or yarn package manager
- Clone or download the project files
- Install dependencies:
npm install
- Start the server:
npm start
- Open your browser and navigate to:
http://localhost:3000
- Select DNS Providers: Choose from the list of pre-configured DNS providers
- Configure Protocols: Select which DNS protocols to test (IPv4, IPv6, DoH, DoT, DoQ)
- Set Test Domains: Use preset domains or add custom ones
- Configure Test Parameters:
- Interval between requests (seconds)
- Number of tests per provider
- Start Benchmark: Click "Start Benchmark" to begin testing
Enter custom domains in the text area, one per line:
example.com
mysite.org
test.net
Filter providers by supported protocols:
- IPv4: Traditional DNS over UDP/TCP
- IPv6: IPv6 DNS resolution
- DoH: DNS over HTTPS (RFC 8484)
- DoT: DNS over TLS (RFC 7858)
- DoQ: DNS over QUIC (RFC 9250) - Note: Limited implementation
Filter by provider type:
- Public: General-purpose DNS servers
- Security: Security-focused with threat blocking
- Family: Family-safe with content filtering
- Privacy: Privacy-focused DNS services
The results table shows:
- Rank: Performance ranking
- Provider: DNS provider name and protocol
- Min/Median/Average/Max: Response time statistics
- Success Rate: Percentage of successful queries
- Tests: Number of successful/total tests
Export test results in two formats:
- JSON: Complete data including raw results and statistics
- CSV: Tabular format suitable for spreadsheet analysis
GET /
- Main application interfacePOST /api/test
- Perform single DNS testGET /api/providers
- Get DNS providers listGET /api/health
- Health check endpointGET /locales/:lang.json
- Language files
/ws
- Real-time test updates and progress
Edit public/data/dns-providers.json
:
{
"name": "Provider Name",
"servers": [
{"type": "IPv4", "address": "1.2.3.4", "port": 53},
{"type": "DoH", "address": "https://dns.example.com/dns-query", "port": 443}
]
}
Run with auto-restart on file changes:
npm run dev
- DoQ Support: Limited implementation due to QUIC protocol complexity
- IPv6 Testing: Requires IPv6 network connectivity
Made with ❤️! If you have questions or suggestions, open an issue and we'll help! 😉