- 🔎 DNS Lookup for all major record types (
A,AAAA,CNAME,MX,TXT,NSandSRV) - 🚀 Subdomain Enumeration with concurrency for speed
- 🛡 Zone Transfer (
AXFR) checks to find misconfigurations - ↩️ Reverse DNS lookups (IPv4 + IPv6)
- 🧩 Custom DNS Resolver (e.g.,
8.8.8.8or8.8.8.8:53) - 🎨 JSON or Colorized output
- 💻 Cross-Platform (Windows, macOS, Linux)
Grab the latest ZIP/TAR for your OS/arch from the Releases page, extract it, and place the dnskit binary somewhere on your PATH so the dnskit command is available from a terminal.
Note
dnskitis a command-line application. Double-clicking the executable in a file explorer (for example, on Windows) will only show a message telling you to use a terminal.
- Windows: download
dnskit_*_windows_amd64.zip(orarm64), unzip, then rundnskit.exefrom cmd.exe or PowerShell. To invokednskitfrom any folder, add the directory that containsdnskit.exeto yourPATH. - macOS: download
dnskit_*_darwin_amd64.tar.gz(orarm64), extract, make it executable (chmod +x dnskitif needed) and move it to a directory on yourPATHsuch as/usr/local/bin. - Linux: download
dnskit_*_linux_amd64.tar.gz(orarm64), extract, make it executable (chmod +x dnskit) and move it to a directory on yourPATH.
git clone https://github.com/nicokempe/dnskit.git
cd dnskit
go build -o dnskit .
# or install to $GOBIN
go install ./...Official releases are built via GoReleaser and embed version/commit metadata. Local builds show
devunless you set-ldflags.
dnskit --helpGlobal Flags
--json- Output results in JSON format--resolver <ip[:port]>- Use a custom DNS resolver
-
lookup - Query a specific record type
dnskit lookup <hostname> --type A|AAAA|MX|TXT|NS|CNAME|SRV
-
enum - Enumerate subdomains with concurrency
dnskit enum <domain> --wordlist subdomains.txt --concurrency 10
-
transfer - Attempt DNS zone transfer (AXFR)
dnskit transfer <domain> --nameserver <ns.host>
-
reverse - Reverse DNS lookups (IPv4/IPv6)
dnskit reverse <ip>
Releases follow the format vYYYY.MM.VV:
YYYY- year (e.g.,2025)MM- month (01–12)VV- sequential release number within the month (resets each month)
Examples:
v2025.08.1→ first release in August 2025v2025.08.2→ second release in August 2025
-
Update Changelog
Run changelogen to update
CHANGELOG.md:npx changelogen@latest --output CHANGELOG.md
Commit the updated
CHANGELOG.md(e.g. as "docs(release): update changelog"". -
Create a new release tag
Use the provided script for your OS:
-
Windows (PowerShell)
./scripts/new-release.ps1 <version> (replace <version> with e.g. v2025.08.1)
-
Linux/macOS (Bash)
./scripts/new-release.sh <version> (replace <version> with e.g. v2025.08.1)
These scripts:
- Validate the version format
- Commit any pending changes
- Create a Git tag
- Push tag ➜ triggers GitHub Actions GoReleaser
-
-
GitHub Actions builds & publishes
Once the tag is pushed, the CI pipeline:
- Builds binaries for Linux, macOS, Windows (amd64 + arm64)
- Packages as
.tar.gz,.zip,.deb,.rpm - Publishes assets to GitHub Releases
- Updates Winget manifests
-
Requires Go 1.24+
-
Quick build:
go build -o dnskit . -
Cross-compile + package (local snapshot):
goreleaser release --snapshot --skip=publish --clean
See CHANGELOG.md. Generated automatically from Conventional Commits via changelogen.
This project is licensed under the MIT LICENSE.