DNS resolution and enumeration
MassDNS
High-performance DNS stub resolver in C for resolving millions of names, often used for subdomain brute forcing.
3.7k stars · last push September 27, 2026 · v1.1.0 · GPL-3.0
What it finds
MassDNS resolves very large name lists through a resolver file, and the README claims over 350,000 names per second with public resolvers. Bundled scripts generate brute-force candidates, pull names from crt.sh, build PTR queries, or query authoritative name servers directly.
- DNS records
- live subdomains
- PTR names
Does it touch the target?
Sends traffic to the target's systems. Use only with the owner's permission.
Sends DNS queries for every input name. README: "Perform reconnaissance scans responsibly and adjust the -s parameter to not overwhelm authoritative name servers" and usage "may cause a significant load on the used resolvers and result in abuse complaints being sent to your ISP."
API keys: The README documents only a resolver list (-r) as input; no API keys are mentioned.
Install
makeFrom the project's documentation
How to run it
Examples use reserved documentation hosts such as example.com. Replace them with a domain you own or are authorised to test.
./bin/massdns -r lists/resolvers.txt -t AAAA domains.txt > results.txtFrom the project's documentation
./scripts/subbrute.py example.com lists/names.txt | ./bin/massdns -r lists/resolvers.txt -t A -o S -w results.txtFrom the project's documentation
./scripts/ct.py example.com | ./bin/massdns -r lists/resolvers.txt -t A -o S -w results.txtFrom the project's documentation
./bin/massdns -r <(./scripts/auth-addrs.sh example.com) --norecurse -o Je example-com-subdomains.txt > results.txtFrom the project's documentation
Output formats: domain list, simple text, full text, binary, ndjson
Limits the project documents
- The bundled resolver list is outdated, with a large share of dysfunctional resolvers, and is not guaranteed trustworthy.
- No built-in wildcard detection (listed under Todo).
- The custom DNS implementation supports only the most common record types.
- recon.py handles zone delegation only up to the delegation point.
- Build from source: run make, or make nolinux on non-Linux systems; Windows needs Cygwin.
Deepak's take
Analysis, not documentation
- Use it when
- Use it when raw resolution throughput is the bottleneck, such as multi-million-name wordlists against your domain from a high-bandwidth server.
- Skip it when
- Skip it when you want wildcard filtering and simple output; shuffledns wraps it for that, and dnsx covers smaller jobs.
- What it will miss
- It reports wildcard matches as real names, so results need a separate wildcard check.
Facts read from the project's README and docs on November 10, 2026. Repository data as of November 11, 2026. Listed under GitHub's reconnaissance topic. Licence: GPL-3.0. MassDNS is a trademark or project name of its owners; this library is not affiliated with it.