Updated Jul 14, 2026

Recon

Resolve and filter DNS records from a host list

Multi-purpose DNS toolkit for resolution, record queries, and wordlist brute force.

Agent

overview

What dnsx does

Feed dnsx a subdomain or host list with -list and your own -resolver set. With -resp it prints each host next to its answer; with -resp-only it emits only the values for the next stage.

Query A (-a, default), CNAME (-cname), or every type with -recon. Filter by status with -rcode, annotate with -asn or -cdn, and strip wildcard noise with -wildcard-domain.

For brute force, pass -domain and -wordlist in one run. Trickest captures FILE and FOLDER output; add -json for JSONL. Resolve after discovery, then hand live names to httpx.

source github.com/projectdiscovery/dnsx

use cases

Where dnsx fits

Resolve a discovered subdomain set

Run a passive finder's output through dnsx with your own resolvers to keep only names that resolve, deduplicated and ready for probing.

Brute-force subdomains with a wordlist

Feed a domain and a wordlist so dnsx generates candidates and resolves them in one pass, with wildcard filtering to drop noise.

Pull specific DNS records at scale

Query MX, NS, TXT, or CNAME across a host list, or use recon mode for everything, emitting JSONL for downstream analysis.

Enrich hosts with ASN and CDN data

Add ASN and CDN annotations during resolution so later stages can route or scope by network and infrastructure provider.

reference

dnsx inputs and flags

40 inputs
NameTypeFlagDescription
listFILE-listList of subdomains or hosts to resolve (file or stdin).
respBOOLEAN-respDisplay each host alongside its DNS response.
resp-onlyBOOLEAN-resp-onlyDisplay only the DNS response value, without the host.
aBOOLEAN-aQuery the A record (the default query type).
cnameBOOLEAN-cnameQuery the CNAME record.
reconBOOLEAN-reconQuery every DNS record type in one pass.
resolverSTRING-resolverResolvers to use, comma-separated.
jsonBOOLEAN-jsonWrite output in JSONL format.

Showing key inputs. dnsx exposes 40 inputs in total.

Full flag reference (40 inputs)
NameTypeFlagDescription
aBOOLEAN-aquery A record (default)
mxBOOLEAN-mxquery MX record
nsBOOLEAN-nsquery NS record
anyBOOLEAN-anyquery ANY record
asnBOOLEAN-asndisplay host asn information
caaBOOLEAN-caaquery CAA record
cdnBOOLEAN-cdndisplay cdn name
ptrBOOLEAN-ptrquery PTR record
soaBOOLEAN-soaquery SOA record
srvBOOLEAN-srvquery SRV record
txtBOOLEAN-txtquery TXT record
aaaaBOOLEAN-aaaaquery AAAA record
axfrBOOLEAN-axfrquery AXFR
jsonBOOLEAN-jsonwrite output in JSONL(ines) format
listFILE-listlist of sub(domains)/hosts to resolve (file or stdin)
respBOOLEAN-respdisplay dns response
cnameBOOLEAN-cnamequery CNAME record
debugBOOLEAN-debugdisplay raw dns response
rcodeSTRING-rcodefilter result by dns status code (eg. -rcode noerror,servfail,refused)
reconBOOLEAN-reconquery all the dns records (a,aaaa,cname,ns,txt,srv,ptr,mx,soa,axfr,caa)
retrySTRING-retrynumber of dns attempts to make (must be at least 1) (default 2)
statsBOOLEAN-statsdisplay stats of the running scan
traceBOOLEAN-traceperform dns tracing
domainFILE-domainlist of domain to bruteforce (file or comma separated or stdin)
silentBOOLEAN-silentdisplay only results in the output
threadsSTRING-threadsnumber of concurrent threads to use (default 100)
verboseBOOLEAN-verbosedisplay verbose output
no-colorBOOLEAN-no-colordisable color in output
omit-rawBOOLEAN-omit-rawomit raw dns response from jsonl output
resolverSTRING-resolverlist of resolvers to use (comma separated)
wordlistFILE-wordlistlist of words to bruteforce (file or comma separated or stdin)
hostsfileBOOLEAN-hostsfileuse system host file
resp-onlyBOOLEAN-resp-onlydisplay dns response only
rate-limitSTRING-rate-limitnumber of dns request/second to make (disabled as default) (default -1)
exclude-typeSTRING-exclude-typedns query type to exclude (a,aaaa,cname,ns,txt,srv,ptr,mx,soa,axfr,caa) (default none)
health-checkBOOLEAN-health-checkrun diagnostic check up
resolver-fileFILE-resolverlist of resolvers to use (file)
wildcard-domainSTRING-wildcard-domaindomain name for wildcard filtering (other flags will be ignored - only json output is supported)
wildcard-thresholdSTRING-wildcard-thresholdwildcard filter threshold (default 5)
trace-max-recursionSTRING-trace-max-recursionMax recursion for dns trace (default 32767)

example

Run dnsx

dnsx · command
# resolve a host list and print each host with its DNS responsednsx -list hosts.txt -a -resp -silent -o resolved.txt
sample output
www.example.com [198.51.100.10]api.example.com [198.51.100.23]mail.example.com [198.51.100.24]app.example.com [198.51.100.42]vpn.example.com [198.51.100.57]dev.example.com [198.51.100.61]staging.example.com [198.51.100.61]cdn.example.com [198.51.100.78]

guidance

Choosing dnsx

Use dnsx to resolve, probe, and dedupe a host list, or to brute-force subdomains with your own resolvers and wildcard filtering. It works on DNS, not HTTP, so follow it with httpx for web probes. Curate the resolver list with dnsvalidator first.

shuffledns

massdns-backed resolver and brute-forcer. dnsx adds record-type queries, ASN and CDN data, and JSONL in one binary.

massdns

Raw bulk resolver. dnsx layers filtering, brute force, and enrichment on top.

dnsrecon

Broader DNS enumeration techniques. dnsx targets high-throughput resolution of a known list.

faq

dnsx questions

-resp appends the DNS response to each result, so you get the host plus its record value in brackets, e.g. www.example.com [198.51.100.10]. Pair -a -resp for IPs or -cname -resp for CNAME targets.

Run dnsx yourself

A subdomain list feeds dnsx, which resolves and dedupes the hosts, then passes the live names to httpx so only responding hosts land as output.

Facts on this page come from the live Trickest tool library.