projectdiscovery

dnsx: Run DNS Queries and Brute-Force Subdomains

dnsx is a Go command-line DNS toolkit built on ProjectDiscovery’s retryabledns library. It resolves and probes domains with custom resolvers, supports DNS record queries and subdomain brute-forcing, and filters wildcard results.

Stars
2.9k
Forks
327
Last commit
today
Contributors
34
Releases, 12 months
3

Our take

Activeregular commits and releases

Health score

62/100

How it is scored
Activity
55
Community
58
Issues
65
Pull requests
69

dnsx is an actively maintained, focused DNS toolkit with a clear fit in command-line reconnaissance pipelines and a healthy recent release and contribution cadence.

Good fit if

  • You need DNS resolution, record queries, or subdomain brute-forcing in a Go CLI or shell pipeline.
  • Wildcard filtering and configurable resolvers are important to your DNS workflow.
  • You want an MIT-licensed tool with recent releases and contributions from a broad contributor group.

Look elsewhere if

  • You need a graphical interface or a service-oriented DNS platform rather than a command-line tool and Go library.
  • You cannot use the Go version required by the current project configuration.
  • Your network blocks or degrades high-volume DNS/UDP traffic and you cannot adjust your resolver or network setup.
All health signals
Last commit2026-10-26 (today)
Commits, last 90 days33
Releases, last 12 months3 (latest v1.3.1, 2026-08-31)
Contributors34 (top contributor: 60% of commits)
Issues closed, last 90 days12 (typically closed in 3 days)
Pull requests merged, last 90 days22 (typically merged in 0 days)
Project age5 years

Checked on 2026-10-26 with the GitHub API.

Overview

dnsx is a fast, multi-purpose DNS toolkit built on ProjectDiscovery’s retryabledns library. It runs DNS queries against supplied hosts or domains, using default or user-provided resolvers, and helps reduce noisy results with wildcard filtering.

The Go CLI is aimed at security practitioners and developers working with domain discovery and DNS reconnaissance. It accepts input from files or standard input, so it can fit into shell pipelines and larger ProjectDiscovery workflows.

Key Features

  • Query common DNS record types, including A, AAAA, CNAME, MX, TXT, PTR, and SOA.
  • Resolve host lists or brute-force subdomains from domain and wordlist inputs.
  • Use custom resolvers over supported TCP, UDP, DNS-over-HTTPS, and DNS-over-TLS formats.
  • Filter wildcard DNS responses manually for a domain or automatically across mixed-domain input.
  • Emit JSONL, raw responses, response-only output, or fields formatted with a custom template.
  • Probe DNS status codes and optionally retrieve CDN and ASN information.
  • Use dnsx from Go programs through its library package.

Use Cases

  • Security teams can resolve passive subdomain lists to identify active hosts before further assessment.
  • Reconnaissance workflows can brute-force likely subdomains for one or more target domains using wordlists or targeted keywords.
  • Operators can query selected record types or status codes to investigate DNS configuration and response behavior.
  • Teams processing mixed-domain lists can apply automatic wildcard filtering to reduce false positives.
  • Go developers can integrate DNS lookup and query operations into their own tools through the library.

What you need

Detected in the repository

  • Go 1.26.10 or newer (from go.mod)
  • A Dockerfile, so it can run in a container
  • Automated checks on GitHub Actions

License in plain words

MITpermissive

  • Commercial use: yes
  • Modify and redistribute: yes
  • You must keep: the copyright and license notice
  • Share your changes: no

A summary, not legal advice: the LICENSE file is what applies.

Getting Started

Install the latest version with Go:

go install -v github.com/projectdiscovery/dnsx/cmd/dnsx@latest

Then try dnsx -h to see available options. See the README for usage examples and configuration details.

Considerations

The project configuration requires Go 1.26.10 to install. The README also warns that VPN operators may filter high DNS/UDP traffic, which can cause packet loss. DNS brute-forcing and resolution are separate input modes and cannot be combined in one run; manual wildcard filtering also has constraints, including its single-domain input flow.

Found this useful?

Share it with someone who would like dnsx.