Subdomain discovery
subfinder
Finds subdomains of a domain by querying passive online sources such as certificate logs and DNS datasets.
15k stars · last push November 9, 2026 · v2.17.0 · MIT
What it finds
subfinder collects subdomains for a domain from a curated set of passive online sources and never needs to touch the domain's own hosts. It can filter results by match lists or regular expressions, and an optional flag resolves names to keep only live ones.
- subdomains
- host IP addresses (with -active)
Does it touch the target?
Reads third-party sources only. Sends no traffic to the target's systems.
README: "subfinder is a subdomain discovery tool that returns valid subdomains for websites, using passive online sources... built for doing one thing only - passive subdomain enumeration." The optional -nW/-active flag ("display active subdomains only") adds DNS resolution of found names through resolvers.
API keys: Docs: "Subfinder is available immediately after installation, however the following services require the configuration of API keys to work", stored in $HOME/.config/subfinder/provider-config.yaml.
Install
go install -v github.com/projectdiscovery/subfinder/v2/cmd/subfinder@latestFrom the project's documentation
brew install subfinderFrom the project's documentation
docker pull projectdiscovery/subfinder:latestFrom 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.
subfinder -d example.comFrom the project's documentation
echo example.com | subfinder -silent | httpx -silentFrom the project's documentation
subfinder -d example.com -match-regex '^(api|web)[0-9]{1,3}\.' -filter-regex '(^|\.)dev\.'From the project's documentation
docker run projectdiscovery/subfinder:latest -d example.comFrom the project's documentation
Output formats: jsonl, txt, stdout
Limits the project documents
- Many sources need API keys before they return results (docs, post install configuration).
- -all uses every source and the help text marks it as slow.
- Enumeration stops after -max-time minutes (default 10).
Deepak's take
Analysis, not documentation
- Use it when
- Reach for it first when you need a quick subdomain list for your domain without sending traffic to its hosts. It pipes cleanly into dnsx or httpx.
- Skip it when
- Skip it when you need names that never appear in public data. Use a resolver-based brute force with shuffledns or dnsx instead.
- What it will miss
- It will not find subdomains that no certificate log, archive, or passive DNS source has ever recorded.
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: MIT. subfinder is a trademark or project name of its owners; this library is not affiliated with it.