Updated Jul 14, 2026

Recon

Enumerate a domain's subdomains from passive sources

A subdomain discovery tool that finds valid subdomains using passive online sources.

Agent

overview

What subfinder does

subfinder enumerates a domain's subdomains by querying passive sources such as certificate transparency logs, DNS aggregators, and threat-intelligence feeds, rather than brute forcing names. That makes it fast and quiet: it builds a broad map of an organization's footprint without sending traffic to the targets themselves.

Its modular architecture is built for one job and does it well. Pull from all sources for maximum coverage or a chosen few for speed, set per-provider rate limits, and emit JSONL so every result is a structured record. Active mode resolves the names and reports only the subdomains that are live.

On Trickest, subfinder is a Recon node that takes a domain or a list of domains and writes a file and a folder of names. It is the usual first node in an attack-surface workflow; pass its output to httpx to find which subdomains respond, and schedule it for continuous monitoring.

source github.com/projectdiscovery/subfinder

use cases

Where subfinder fits

Map an organization's footprint

Enumerate every subdomain of a domain from passive sources to scope an engagement or build an asset inventory.

Feed a probing and scanning pipeline

Hand discovered subdomains to httpx and a scanner so the rest of the workflow runs against the full surface.

Monitor for new subdomains

Run subfinder on a schedule and diff results to catch newly exposed assets as they go live.

Enumerate many domains at once

Supply a file of domains for bulk discovery and write the combined name list for downstream nodes.

reference

subfinder inputs and flags

30 inputs
NameTypeFlagDescription
domainSTRING-domainDomains to find subdomains for (comma-separated).
listFILE-listFile containing a list of domains for bulk discovery.
jsonBOOLEAN-jsonWrite output in JSONL format.
allBOOLEAN-allUse all sources for enumeration (slow).
activeBOOLEAN-activeDisplay active subdomains only.
matchSTRING-matchSubdomain or list of subdomains to match (comma-separated).
rate-limitSTRING-rate-limitMaximum HTTP requests to send per second (global).
sourcesSTRING-sourcesSpecific sources to use for discovery (-s crtsh,github).

Showing key inputs. subfinder exposes 30 inputs in total.

Full flag reference (30 inputs)
NameTypeFlagDescription
ipBOOLEAN-ipinclude host IP in output (-active only)
allBOOLEAN-alluse all sources for enumeration (slow)
jsonBOOLEAN-jsonwrite output in JSONL(ines) format
listFILE-listfile containing list of domains for subdomain discovery
matchSTRING-matchsubdomain or list of subdomain to match (comma separated)
proxySTRING-proxyhttp proxy to use with subfinder
statsBOOLEAN-statsreport source statistics
activeBOOLEAN-activedisplay active subdomains only
configFILE-configflag config file
domainSTRING-domaindomains to find subdomains for (comma separated)
filterSTRING-filtersubdomain or list of subdomain to filter (comma separated)
silentBOOLEAN-silentshow only subdomains in output
sourcesSTRING-sourcesspecific sources to use for discovery (-s crtsh,github).
threadsSTRING-tnumber of concurrent goroutines for resolving (-active only) (default 10)
timeoutSTRING-timeoutseconds to wait before timing out (default 30)
verboseBOOLEAN-vshow verbose output
max-timeSTRING-max-timeminutes to wait for enumeration results (default 10)
no-colorBOOLEAN-no-colordisable color in output
recursiveBOOLEAN-recursiveuse only sources that can handle subdomains recursively (e.g. subdomain.domain.tld vs domain.tld)
resolversSTRING-rcomma separated list of resolvers to use
exclude-ipBOOLEAN-exclude-ipexclude IPs from the list of domains
match-fileFILE-matchsubdomain or list of subdomain to match
rate-limitSTRING-rate-limitmaximum number of http requests to send per second (global)
filter-fileFILE-filtersubdomain or list of subdomain to filter
rate-limitsSTRING-rate-limitsmaximum number of http requests to send per second four providers in key=value format (-rls hackertarget=10/m) (default ["github=30/m", "fullhunt=60/m", "robtex=18446744073709551615/ms", "securitytrails=1/s", "shodan=1/s", "virustotal=4/m", "hackertarget=2/s", "waybackarchive=15/m", "whoisxmlapi=50/s"])
resolvers-listFILE-rlistfile containing list of resolvers to use
collect-sourcesBOOLEAN-collect-sourcesinclude all sources in the output (-json only)
exclude-sourcesSTRING-exclude-sourcessources to exclude from enumeration (-es alienvault,zoomeyeapi)
provider-configFILE-provider-configprovider config file
disable-update-checkBOOLEAN-disable-update-checkdisable automatic subfinder update check

example

Run subfinder

subfinder · command
# passive enumeration across all sources, quiet outputsubfinder -d example.com -all -silent -o subdomains.txt
sample output
api.example.comapp.example.comstaging.example.comdev.example.commail.example.comvpn.example.comgitlab.example.comgrafana.example.comhive-api.dev.example.comwww.staging.example.com…  (53 hosts found for the real run behind this page)

guidance

Choosing subfinder

Use subfinder for fast, passive subdomain discovery at the start of a workflow. For active DNS brute forcing of a wordlist, pair it with subbrute. It finds names, it does not test them, so follow it with httpx to learn which subdomains are live.

amass

Deeper, slower OSINT with active options. subfinder is quicker for a passive first pass.

assetfinder

Lighter passive finder. subfinder queries more sources for broader coverage.

workflows

Workflows using subfinder

17 workflows
  1. Audit SSH algorithms on port 22

    Enumerate a domain and flag weak SSH host keys, key exchange, ciphers, and MACs from an unauthenticated banner. The check does not log in.

  2. Audit TLS certificates on port 443

    Enumerate a domain and classify expired, mismatched, self-signed, and untrusted certificates on port 443. The check reads the handshake only.

  3. Check Email Spoofing (DMARC SPF DKIM)

    Check whether an attacker can send mail as your domain by querying SPF, DKIM, DMARC, MTA-STS and BIMI across every subdomain.

  4. Domain OSINT & Footprinting

    Profile a domain without sending it a packet: subdomains, DNS, WHOIS and certificate history, plus which hosts are live and what they run.

  5. Exposed MCP Server Scanner

    Scan a target domain with subfinder and httpx for MCP servers, then write authentication, capability, and poisoning-risk findings to JSONL.

  6. Find exposed admin and management panels

    Enumerate a domain and confirm admin panels such as Tomcat Manager, Jenkins, and phpMyAdmin from page markers or auth realms.

  7. Find exposed API and debug surfaces

    Enumerate a domain and confirm exposed OpenAPI specs, Spring Actuator endpoints, and debug paths from response content, not from a bare HTTP 200.

  8. Find exposed DevOps config files

    Enumerate a domain and confirm web-exposed Terraform state, Docker config, npmrc, and netrc files from their content, not from a bare HTTP 200.

  9. Find exposed Docker Engine APIs

    Enumerate a domain and probe ports 2375 and 2376 for a Docker Engine API that returns version JSON. The check does not run containers.

  10. Find exposed SAP Commerce surfaces

    Enumerate a domain and fingerprint SAP Commerce HAC, Backoffice, and Data Hub from public pages. The check does not sign in.

  11. Find Origin IPs Behind Cloudflare

    Find the origin server behind Cloudflare or another WAF by resolving subdomains, filtering CDN ranges, and confirming which IP serves the site.

  12. Find Subdomain Takeovers

    Find dangling CNAMEs an attacker could claim on your subdomains, with the service behind each record named so you know who to ask.

  13. Fingerprint front-end JS library versions

    Enumerate a domain and read public pages for JavaScript library names and versions, including jQuery, AngularJS, Bootstrap, and Lodash.

  14. Multi-Cloud Dangling DNS

    Bind AWS, GCP, Azure, and Cloudflare vault config into findmytakeover; emit dangling-DNS findings and an evidence report.

  15. PQ Crypto Surface Scanner

    Enumerate live hosts from a domain, fingerprint TLS and post-quantum readiness with AC Scanner, and emit CBOM-style evidence plus remediation.

  16. Subdomain Enumeration

    Find every subdomain of a domain from passive sources and certificate transparency, then resolve and probe the hosts that answer.

  17. Website Screenshot & Visual Recon

    Screenshot every live web server across a domain's subdomains, ordered so the forgotten dashboard and the staging copy of production surface first.

faq

subfinder questions

Pass the domain with -domain, for example `subfinder -domain example.com`. Add -silent to print only the subdomains. On Trickest, set the node's domain input instead of the flag.

Run subfinder yourself

A domain feeds subfinder, which enumerates subdomains passively and passes them to httpx so only live names land as output.

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