DNS-over-QUIC (DoQ) is the newest encrypted DNS protocol, standardized in RFC 9250 in 2022. It combines the privacy benefits of DNS encryption with the performance advantages of the QUIC transport protocol — delivering faster, more reliable DNS resolution than traditional DNS-over-TLS (DoT) or DNS-over-HTTPS (DoH).
In this guide, we compare four leading open-source tools that support DNS-over-QUIC for self-hosted deployments: Knot Resolver, Blocky, DNSCrypt-Proxy, and Stubby. Whether you’re running a home lab or a production DNS infrastructure, you’ll find the right DoQ solution here.
For related reading, see our DNS-over-TLS resolver comparison and complete DNS privacy guide.
Why DNS-over-QUIC Matters for Self-Hosted DNS
Traditional DNS queries travel in plaintext, making them vulnerable to eavesdropping, manipulation, and censorship. Encrypted DNS protocols solve this problem:
| Protocol | Transport | Port | RFC | Key Advantage |
|---|---|---|---|---|
| DNS (plain) | UDP/TCP | 53 | N/A | Universal compatibility |
| DNS-over-TLS (DoT) | TLS over TCP | 853 | 7858 | Simple encryption |
| DNS-over-HTTPS (DoH) | HTTPS | 443 | 8484 | Blends with web traffic |
| DNS-over-QUIC (DoQ) | QUIC/UDP | 853/443 | 9250 | Best latency + encryption |
DoQ’s advantages over DoT and DoH:
- Faster connection establishment — QUIC eliminates the TCP+TLS handshake round trips, reducing DNS query latency by 20-40%
- No head-of-line blocking — Unlike TCP-based protocols, a lost packet doesn’t stall all subsequent queries
- Connection migration — QUIC connections survive IP changes (useful for mobile and roaming clients)
- Built-in encryption — TLS 1.3 is mandatory in QUIC, no unencrypted fallback
- UDP-based — Avoids TCP connection overhead and middlebox interference
For self-hosted setups, DoQ means your DNS infrastructure gets the fastest encrypted transport available while maintaining full control over your resolver configuration and privacy.
Tool Comparison Overview
| Feature | Knot Resolver | Blocky | DNSCrypt-Proxy | Stubby |
|---|---|---|---|---|
| Type | Full caching resolver | DNS proxy/blocker | DNS proxy/stub | DNS stub resolver |
| DoQ Client | Yes | Yes | Yes | Yes |
| DoQ Server | Yes | Yes | No | No |
| DoH Support | Yes | Yes | Yes | Yes |
| DoT Support | Yes | Yes | Yes | Yes |
| Ad Blocking | Via policy | Built-in | Via block lists | No |
| Web UI | No | Yes | No | No |
| Language | C/Lua | Go | Go | C |
| Stars | 432 | 6,553 | 13,221 | 483 (getdns) |
| Last Updated | Apr 2026 | Apr 2026 | Apr 2026 | Nov 2023 |
| Docker Image | cznic/knot-resolver | ghcr.io/0xerr0r/blocky | ghcr.io/dnscrypt/dnscrypt-proxy | ghcr.io/getdnsapi/stubby |
Quick recommendation:
- Knot Resolver — Best for running a full authoritative/caching DNS resolver with native DoQ server support
- Blocky — Best lightweight DNS proxy with ad blocking, web UI, and easy DoQ upstream configuration
- DNSCrypt-Proxy — Best for maximum privacy with diverse encrypted DNS sources and automatic server selection
- Stubby — Best minimal stub resolver for routing system DNS through DoQ upstreams
Knot Resolver: Full DNS Resolver with Native DoQ
Knot Resolver by CZ.NIC is a full-featured caching DNS resolver with native support for DNS-over-QUIC as both client and server. It’s built on the same foundation as Knot DNS (authoritative server), giving it enterprise-grade performance and correctness.
Key Features
- Full recursive resolver with DNSSEC validation
- Native DoQ server and client support
- DNS-over-TLS and DNS-over-HTTPS server support
- Lua scripting for custom policies
- Modular architecture with plugin system
- Built-in cache with persistent storage
- Management API via
kresctl
Docker Deployment
| |
DoQ Configuration
| |
When to Use Knot Resolver
Choose Knot Resolver when you need a full recursive resolver that can also serve DoQ queries to your network. It’s ideal for organizations or home labs that want to operate their own DNS infrastructure with complete control over caching, forwarding policies, and DNSSEC validation.
Blocky: Lightweight DNS Proxy with Ad Blocking and DoQ
Blocky is a fast, lightweight DNS proxy written in Go. It’s designed as an ad-blocking DNS server (like Pi-hole or AdGuard Home) but with a focus on performance, modern protocols, and a clean configuration format.
Key Features
- Built-in ad and tracker blocking via blocklists
- DNS-over-QUIC upstream support (
quic://prefix) - DNS-over-QUIC server support for client queries
- Web UI for query logs and statistics
- Prometheus metrics endpoint
- Client-specific DNS configuration
- Conditional forwarding per domain
- Fast startup with parallel upstream checks
Docker Deployment
| |
DoQ Configuration
| |
When to Use Blocky
Choose Blocky when you want an ad-blocking DNS proxy with DoQ support and a web UI. It’s the best choice for home networks that want content filtering, query logging, and encrypted upstream DNS in a single lightweight package. With over 6,500 GitHub stars and active development, it’s one of the most popular self-hosted DNS proxies.
DNSCrypt-Proxy: Maximum Privacy DNS Proxy
DNSCrypt-Proxy is the most established encrypted DNS proxy, supporting DNSCrypt, DoH, DoT, and DNS-over-QUIC (via HTTP/3). It automatically selects the fastest working resolver from a public server list, providing maximum privacy and reliability.
Key Features
- Automatic server selection and fallback
- DNSCrypt protocol support (unique to this tool)
- DoH, DoT, and HTTP/3 (QUIC) support
- Local caching for faster repeated queries
- Cloaking rules (redirect domains to specific IPs)
- Query logging with anonymization
- Parental control filters
- Load balancing across multiple resolvers
- Dynamic server list updates
Docker Deployment
| |
DoQ Configuration
| |
When to Use DNSCrypt-Proxy
Choose DNSCrypt-Proxy when you want automatic server selection with maximum privacy. It’s the only tool that supports the DNSCrypt protocol in addition to DoH/DoT/DoQ, giving you access to the widest range of encrypted DNS servers. With over 13,000 GitHub stars, it’s the most popular encrypted DNS proxy.
Stubby: Minimal DNS-over-QUIC Stub Resolver
Stubby is a lightweight DNS stub resolver built on the getdns API. It routes all system DNS queries through encrypted transports (DoT, DoH, DoQ) with automatic failover. It’s the simplest option for adding encrypted DNS to a Linux system.
Key Features
- Minimal resource footprint
- DNS-over-TLS, DoH, and DoQ support
- Automatic upstream failover
- Strict authentication (pins certificates)
- systemd integration
- Round-robin and randomized query distribution
- Compatible with system-resolved
Docker Deployment
| |
DoQ Configuration
| |
When to Use Stubby
Choose Stubby when you need a minimal stub resolver to encrypt all system DNS queries. It’s perfect for individual machines that want to use DoQ upstreams without running a full recursive resolver. Its small footprint makes it ideal for resource-constrained environments like Raspberry Pi or containers.
Performance Comparison
Based on published benchmarks and protocol characteristics:
| Metric | Knot Resolver | Blocky | DNSCrypt-Proxy | Stubby |
|---|---|---|---|---|
| Cold Start Latency | ~50ms | ~10ms | ~20ms | ~15ms |
| Cached Query | <1ms | <1ms | <1ms | <1ms |
| DoQ First Query | ~40ms | ~35ms | ~45ms | ~40ms |
| Memory Usage | ~100MB | ~30MB | ~50MB | ~15MB |
| Throughput | 500K+ qps | 200K+ qps | 100K+ qps | 50K+ qps |
| Startup Time | 2-3s | <1s | 1-2s | <1s |
DoQ latency advantage: Across all tools, DoQ queries are typically 20-40% faster than DoT for cold queries (no existing connection) because QUIC combines transport and TLS handshake into a single round trip, whereas DoT requires TCP handshake + TLS handshake (2 RTTs).
Choosing the Right DoQ Tool
For a home network with ad blocking: Use Blocky. It combines DoQ upstream support with built-in ad blocking, a web UI, and client-specific policies. The YAML configuration is straightforward and Docker deployment is simple. If you’re migrating from Pi-hole or AdGuard Home, check out our DNS filtering and content blocking guide for additional context.
For enterprise DNS infrastructure: Use Knot Resolver. It’s a full recursive resolver with DNSSEC, Lua scripting, and the ability to serve DoQ queries to your entire network. The investment in configuration complexity pays off in features and control.
For maximum privacy and redundancy: Use DNSCrypt-Proxy. Its automatic server selection, DNSCrypt support, and dynamic server list make it the most resilient option. If one resolver goes down, it seamlessly switches to another.
For individual machine encryption: Use Stubby. It’s the lightest option and integrates cleanly with systemd-resolved. Perfect for laptops, servers, or any single machine that needs encrypted DNS without the overhead of a full resolver.
Frequently Asked Questions
What is DNS-over-QUIC and how does it differ from DNS-over-TLS?
DNS-over-QUIC (DoQ) is an encrypted DNS protocol that uses the QUIC transport protocol (RFC 9250). Unlike DNS-over-TLS (DoT), which runs over TCP with a separate TLS handshake, DoQ uses UDP-based QUIC that combines transport and encryption in a single handshake. This reduces connection latency by eliminating the TCP handshake round trip, and QUIC’s multiplexing prevents head-of-line blocking that can affect TCP-based DNS.
Which public DNS resolvers support DNS-over-QUIC?
Several major public DNS providers support DoQ:
- AdGuard DNS:
quic://dns.adguard.com(port 853) - Quad9:
quic://dns.quad9.net(port 853) - Cloudflare:
quic://one.one.one.one(port 443) - Google Public DNS:
quic://dns.google(port 443)
Can I run a DoQ server for my local network?
Yes. Both Knot Resolver and Blocky can act as DoQ servers, meaning they accept DoQ queries from clients on your network. Knot Resolver supports DoQ on port 853 with its kind: doq configuration. Blocky can serve DoQ queries when configured with the appropriate TLS certificates. This lets your devices use encrypted DNS internally, not just for upstream queries.
Is DNS-over-QUIC stable enough for production use?
Yes. DoQ was standardized as RFC 9250 in August 2022 and has seen widespread adoption. All four tools covered in this guide have production-ready DoQ implementations. The QUIC protocol itself is mature, being the foundation of HTTP/3. Major DNS providers including Cloudflare, Google, and Quad9 all operate production DoQ endpoints.
Do I need special firewall rules for DNS-over-QUIC?
DoQ uses UDP (unlike DoT which uses TCP). The standard ports are 853 and 443. You need to allow outbound UDP traffic on these ports from your resolver to the upstream DoQ servers. If you’re running a DoQ server, you need to allow inbound UDP on your chosen port. Some corporate firewalls may block non-standard UDP ports, so port 443 is often the safest choice for upstream connections.
Can I use DNS-over-QUIC with Pi-hole or AdGuard Home?
Pi-hole does not natively support DoQ as an upstream resolver. However, you can place a DoQ-capable stub resolver (like Stubby or DNSCrypt-Proxy) between Pi-hole and the internet: Pi-hole → Stubby (DoQ) → Internet. AdGuard Home has experimental DoQ support in recent versions. Blocky, which is similar to AdGuard Home, has full DoQ support built in.