Introduction
doggo is a modern DNS client for the command line that replaces dig with a more readable and user-friendly interface. It supports DNS-over-HTTPS, DNS-over-TLS, and DNS-over-QUIC, and outputs results in colorized tabular format that is easy to scan.
What doggo Does
- Performs DNS queries with colorized, human-readable tabular output
- Supports DNS-over-HTTPS (DoH), DNS-over-TLS (DoT), and DNS-over-QUIC (DoQ)
- Queries any record type: A, AAAA, MX, TXT, CNAME, NS, SOA, SRV, and more
- Supports reverse DNS lookups and multiple query targets in a single command
- Outputs results in JSON format for scripting and automation
Architecture Overview
doggo is written in Go and uses the miekg/dns library for DNS protocol handling. It builds queries from command-line arguments, sends them over the selected transport (UDP, TCP, DoH, DoT, or DoQ), and formats responses into a colored table. The JSON output mode makes it composable with tools like jq.
Self-Hosting & Configuration
- Install via Homebrew:
brew install doggo - Or download a binary from GitHub releases for Linux, macOS, and Windows
- Specify a DNS server with
@prefix:doggo example.com @8.8.8.8 - Use DoH with
doggo example.com @https://dns.google/dns-query - Use DoT with
doggo example.com @tls://dns.google
Key Features
- Clean colorized output that is easier to read than dig
- Native support for encrypted DNS protocols (DoH, DoT, DoQ)
- JSON output mode for scripting:
doggo example.com --json | jq . - Multiple queries in a single command:
doggo A example.com MX example.com - Lightweight single binary with no external dependencies
Comparison with Similar Tools
- dig — The classic DNS tool; doggo provides better formatting and encrypted DNS support
- dog — Another modern DNS client; doggo adds DoQ support and JSON output
- drill — Part of ldns; less user-friendly output than doggo
- nslookup — Basic DNS lookup; lacks DoH/DoT and structured output
FAQ
Q: How is doggo different from dig? A: doggo provides colorized tabular output, built-in DoH/DoT/DoQ support, and JSON output mode.
Q: Can I use it with encrypted DNS?
A: Yes. Prefix the server with https://, tls://, or quic:// for DoH, DoT, or DoQ.
Q: Does it support scripting?
A: Yes. Use --json to get structured JSON output suitable for piping to jq or other tools.
Q: What platforms are supported? A: Linux, macOS, and Windows via pre-built binaries or Go install.