doggo — Network Analysis and Diagnostics
Latest Tool Guides / Network Analysis and Diagnostics / doggo.html
A modern DNS lookup client that replaces dig. Supports color output, JSON, and simultaneous lookup of multiple records.
Basic Information
| Program Name | doggo |
|---|---|
| One-line Introduction | A modern DNS lookup client that replaces dig. Supports color output, JSON, and simultaneous lookup of multiple records. |
| Development & Maintenance | Karan Rajeev (mr-karan) |
| Official Homepage | https://doggo.mrkaran.dev |
| Official Documentation | https://doggo.mrkaran.dev/docs/ |
| Official Download | https://doggo.mrkaran.dev/docs/getting-started/installation/ |
| Supported Operating Systems | Linux, macOS, Windows (Binary, Homebrew, Debian, RPM) |
| License | Apache-2.0 |
| Stable Version | 1.0.x — Verified on 2026-10-18 |
| GitHub Repository | https://github.com/mr-karan/doggo |
| Category | Network Analysis & Diagnostics (Tags: DNS, dig, lookup, CLI, Go) |
What is this program?
doggo is a modern DNS lookup tool designed to replace the standard dig command. It provides color-coded output, choice of JSON or table format, and the ability to query multiple records (A, AAAA, MX, TXT, etc.) at once.
Written in Go, it runs as a single binary anywhere and also supports DNS over HTTPS (DoH) and DNS over TLS (DoT). It can follow the default system DNS settings or specify any arbitrary nameserver.
What problem does it solve?
- When dig's default output is hard to read, it provides a color-coded, organized format.
- It is used to look up multiple records (MX, TXT, NS, etc.) of a domain at once.
- It is used for private lookups via DNS over HTTPS.
- It is used to parse DNS results into scripts in JSON format.
Key Features
Simultaneous Lookup of Multiple Records
Can query A, AAAA, MX, TXT, NS, CNAME, and others in one go.
- Use Case: When checking domain configuration, you don't have to query each record separately.
- Outcome: View all records on a single screen.
- Limitations: Some non-standard records may not be supported.
JSON Output
Outputs lookup results in JSON format for use in scripts and automation.
- Use Case: Used to automatically verify DNS configuration in CI/CD pipelines.
- Outcome: DNS results can be processed as structured data.
- Limitations: JSON output can become lengthy with large-scale queries.
DNS over HTTPS / TLS
Supports encrypted DNS lookups via DoH and DoT protocols.
- Use Case: Used when concerned about ISP DNS tampering or eavesdropping.
- Outcome: DNS queries can be sent over an encrypted channel.
- Limitations: DoH server responses might be slower than standard DNS.
Custom Nameserver
Allows specifying an arbitrary DNS server for lookups.
- Use Case: Used to check propagation status to specific nameservers (e.g., 8.8.8.8, 1.1.1.1).
- Outcome: Allows comparing DNS response differences between servers.
- Limitations: If the specified server is unresponsive, the lookup fails.
Installation and Execution
Script Installation (Linux/macOS)
Install easily using the official installation script.
curl -sSfL https://raw.githubusercontent.com/mr-karan/doggo/main/install.sh | sh -s -- -b /usr/local/bin
# Verify installation
doggo --version
cargo (Rust Binary)
Can also be installed via cargo.
cargo install doggo-cli
doggo --version
macOS / Homebrew
Install with Homebrew.
brew install doggo
Practical Usage Examples
Basic DNS Lookup (A Record)
Look up the IPv4 address of a domain.
# Basic A record lookup
doggo example.com
# Simultaneous lookup of multiple records
doggo example.com A,AAAA,MX,TXT
Lookup via Specific Nameserver
Query a desired DNS server.
# Lookup via Cloudflare DNS
doggo example.com @1.1.1.1
# Lookup via Google DNS
doggo example.com @8.8.8.8
Lookup with JSON Output
Receive results in JSON format for use in scripts.
# Output in JSON format
doggo example.com MX --json
# Parse with jq
doggo example.com A --json | jq '.[0].data'
Private Lookup via DoH
Send encrypted queries via DNS over HTTPS.
# Use DoH
doggo example.com --short --https https://cloudflare-dns.com/dns-query
# Use DoT
doggo example.com --tls --resolver 1.1.1.1:853