Updated Jul 15, 2026

Discovery

Map a site content tree with recursive path brute-force

feroxbuster is a recursive content discovery tool written in Rust that brute-forces hidden directories and files with auto-tuned wildcard handling, rich response filtering, and link extraction that feeds newly discovered paths back into the scan.

installapt install -y feroxbusterbrew install feroxbuster

Rust · MIT license

Agent

overview

What feroxbuster does

After an HTTP prober marks a host live, feed feroxbuster a url-list and --wordlist. It brute-forces paths and recurses into discoveries down to --depth (default 4), so one run maps a content tree instead of a single level.

--smart turns on link extraction, auto-tune, word collection, and backup detection together. --thorough adds directory-listing scans and extension collection. Filter by --status-codes, size, lines, words, or regex to cut soft-404 noise.

Prefer ffuf when you need FUZZ in parameters or Host headers. Prefer katana when the job is link crawling, not wordlist brute-force. Enable --json on the managed node for structured paths in a file and folder output.

source github.com/epi052/feroxbuster

use cases

Where feroxbuster fits

Map a site's full content tree

Brute-force from a wordlist and let recursion walk into every directory it finds, so one run surfaces the whole reachable structure, not only the top level.

Discover more with smart mode

Turn on --smart to extract links, auto-tune the rate, collect words, and find backups in one flag, widening coverage without hand-tuning options.

Keep wide scans stable

Use auto-tune and auto-bail so the scan lowers its rate or stops when a target starts erroring, instead of hammering a struggling server.

Filter responses to cut noise

Filter out responses by status, size, line, word count, or regex so the output holds real hits rather than uniform soft-404 pages.

reference

feroxbuster inputs and flags

56 inputs
NameTypeFlagDescription
url-listFILE·List of target URLs to scan.
wordlistFILE--wordlistWordlist of paths and files to brute-force.
extensionsSTRING--extensionsFile extension(s) to search for (ex: php pdf js).
depthSTRING--depthMaximum recursion depth; 0 is infinite (default 4).
smartBOOLEAN--smartEnable extract-links, auto-tune, collect-words, and collect-backups.
threadsSTRING--threadsNumber of concurrent threads (default 50).
status-codesSTRING--status-codesStatus codes to include (default 200 204 301 302 307 308 401 403 405).
jsonBOOLEAN--jsonEmit JSON logs instead of normal text.

Showing key inputs. feroxbuster exposes 56 inputs in total.

Full flag reference (56 inputs)
NameTypeFlagDescription
dataFILE--dataRequest's Body - The file name starts with an `@` (ex: @post.bin)
jsonBOOLEAN--jsonEmit JSON logs to output instead of normal text
depthSTRING--depthMaximum recursion depth, a depth of 0 is infinite recursion (default: 4)
proxySTRING--proxyProxy to use for requests (ex: http(s)://host:port, socks5(h)://host:port)
querySTRING--queryRequest's URL query parameters (ex: token=stuff)
quietBOOLEAN--quietHide progress bars and banner
smartBOOLEAN--smartSet --extract-links, --auto-tune, --collect-words, and --collect-backups to true
silentBOOLEAN--silentOnly print URLs
cookiesSTRING--cookiesSpecify HTTP cookies to be used in each request (ex: stuff=things)
headersSTRING--headersSpecify HTTP headers to be used in each request (ex: Header:val)
methodsSTRING--methodsWhich HTTP request method(s) should be sent (default: GET)
threadsSTRING--threadsNumber of concurrent threads (default: 50)
timeoutSTRING--timeoutNumber of seconds before a client's request times out (default: 7)
insecureBOOLEAN--insecureDisables TLS certificate validation in the client
no-stateBOOLEAN--no-stateDisable state output file (*.state)
parallelSTRING--parallelRun parallel feroxbuster instances
protocolSTRING--protocolSpecify the protocol to use when targeting via --request-file or --url with domain only (default: https)
thoroughBOOLEAN--thoroughUse the same settings as --smart and set --collect-extensions and --scan-dir-listings to true
url-listFILE·List of target URLs
wordlistFILE--wordlistWordlist
add-slashBOOLEAN--add-slashAppend / to each request's URL
auto-bailBOOLEAN--auto-bailAutomatically stop scanning when an excessive amount of errors are encountered
auto-tuneBOOLEAN--auto-tuneAutomatically lower scan rate when an excessive amount of errors are encountered
dont-scanSTRING--dont-scanURL(s) or Regex Pattern(s) to exclude from recursion/scans
redirectsBOOLEAN--redirectsAllow client to follow redirects
verbositySTRING·Increase verbosity level (use -vv or more for greater effect. [CAUTION] 4 v's is probably too much)
client-keyFILE--client-keyAdd a PEM encoded private key for mutual authentication (mTLS)
extensionsSTRING--extensionsFile extension(s) to search for (ex: php pdf js)
limit-barsSTRING--limit-barsNumber of directory scan bars to show at any given time (default: no limit)
rate-limitBOOLEAN--rate-limitLimit number of requests per second (per directory) (default: 0, i.e. no limit)
scan-limitSTRING--scan-limitLimit total number of concurrent scans (default: 0, i.e. no limit)
time-limitSTRING--time-limitLimit total run time of all scans (ex: --time-limit 10m)
user-agentSTRING--user-agentSets the User-Agent (default: feroxbuster/2.7.1)
client-certFILE--client-certAdd a PEM encoded certificate for mutual authentication (mTLS)
dont-filterBOOLEAN--dont-filterDon't auto-filter wildcard responses
filter-sizeSTRING--filter-sizeFilter out messages of a particular size (ex: 4927,1970)
resume-fromFILE--resume-fromState file from which to resume a partially complete scan (ex. --resume-from ferox-1606586780.state)
dont-collectSTRING--dont-collectFile extension(s) to Ignore while collecting extensions (only used with `collect-extensions`)
filter-linesSTRING--filter-linesFilter out messages of a particular line count (ex: 31,30)
filter-regexSTRING--filter-regexFilter out messages via regular expression matching on the response's body/headers (ex: -X '^ignore me$')
filter-wordsSTRING--filter-wordsFilter out messages of a particular word count (ex: 91,82)
no-recursionBOOLEAN--no-recursionDo not scan recursively
random-agentBOOLEAN--random-agentUse a random User-Agent
replay-codesSTRING--replay-codesStatus Codes to send through a Replay Proxy when found (default: --status-codes value)
replay-proxySTRING--replay-proxySend only unfiltered requests through a Replay Proxy, instead of all requests
request-fileFILE--request-fileRaw HTTP request file to use as a template for all requests
server-certsFILE--server-certsAdd custom root certificate(s) for servers with unknown certificates
status-codesSTRING--status-codesStatus Codes to include (allow list) (default: 200 204 301 302 307 308 401 403 405)
collect-wordsBOOLEAN--collect-wordsAutomatically discover important words from within responses and add them to the wordlist
filter-statusSTRING--filter-statusFilter out status codes (deny list) (ex: 401)
collect-backupsSTRING--collect-backupsAutomatically request likely backup extensions for "found" urls (default: ~, .bak, .bak2, .old, .1)
force-recursionBOOLEAN--force-recursionForce recursion attempts on all 'found' endpoints (still respects recursion depth)
filter-similar-toSTRING--filter-similar-toFilter out pages that are similar to the given page (ex: http://site.xyz/soft404)
scan-dir-listingsBOOLEAN--scan-dir-listingsForce scans to recurse into directory listings (default: false)
collect-extensionsBOOLEAN--collect-extensionsAutomatically discover extensions and add them to --extensions (unless they're in `dont-collect`)
dont-extract-linksBOOLEAN--dont-extract-linksDon't extract links from response body (html, javascript, etc...

example

Run feroxbuster

feroxbuster · command
# feroxbuster against example.com (url-list input on Trickest)
feroxbuster --wordlist raft-small-directories.txt --smart --depth 3 --threads 50 --json
sample output
200      GET        48l      210w     4820c https://example.com/admin/
301      GET         7l       32w      178c https://example.com/login -> /login/
200      GET       120l      890w    22140c https://example.com/api/
403      GET        10l       40w      564c https://example.com/backup/
200      GET        33l      150w     3102c https://example.com/static/
200      GET        15l       60w     1240c https://staging.example.com/config/
# feroxbuster found 6 paths under example.com

guidance

Choosing feroxbuster

Use feroxbuster for recursive directory and file discovery on a live host, especially when --smart defaults help. For parameter or vhost fuzzing use ffuf; for link crawling use katana.

ffuf

General FUZZ engine for paths, parameters, and vhosts. feroxbuster is more opinionated and recurses by default.

gobuster

Simple directory brute-forcing. feroxbuster adds recursion, auto-tuning, and richer filtering.

dirsearch

Python content scanner with built-in wordlists. Same discovery step; feroxbuster is the Rust implementation with --smart defaults.

faq

feroxbuster questions

Yes. It walks into directories it discovers down to --depth (default 4), turning one run into a content-tree scan.

--smart turns on link extraction, auto-tuning, word collection, and backup detection at once. --thorough also collects extensions and scans directory listings.

Auto-tune lowers the request rate when errors rise and auto-bail stops a run that is clearly failing.

Provide a url-list file of targets and a --wordlist of paths. Optionally set --extensions, --threads, and --status-codes to tune coverage and noise.

Yes. Enable --json to emit JSON logs instead of text, which is easier for downstream nodes to parse.

When you need FUZZ placed in query strings, POST bodies, or Host headers. feroxbuster is opinionated for recursive path discovery.

Run feroxbuster yourself

A target and a wordlist feed feroxbuster, which recursively brute-forces paths and writes the discovered content as a queryable output.

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