Updated Jul 15, 2026

Utilities

Shape URL path lists before content discovery

URL path lists from a wordlist for content discovery.

Go · MIT license

Agent

overview

What mkpath does

mkpath turns a wordlist into URL path candidates so fuzzers start from a shaped list instead of raw tokens.

Control depth with -l, lowercase with -lower, filter with -r, and choose -only-dirs or -only-files. Pass a host with -d or many hosts with -df.

Trickest provides mkpath as a managed Utilities node ahead of ffuf or feroxbuster. It writes paths; it does not send requests.

source github.com/trickest/mkpath

use cases

Where mkpath fits

Seed a content-discovery fuzzer

Generate a path list from a curated wordlist, then hand it to ffuf or feroxbuster so the fuzzing run hits paths tuned to the target rather than a generic dictionary.

Build deep nested paths

Raise the level flag to produce multi-segment paths so directory brute forcing reaches nested routes that a single-segment list would never test.

Split directory and file candidates

Use only-dirs or only-files to separate folder probing from filename guessing, keeping each fuzzing pass focused and faster to triage.

Filter a noisy wordlist

Apply a regex and lowercasing to strip unwanted entries and collapse duplicates before the paths ever reach a fuzzer.

reference

mkpath inputs and flags

8 inputs
NameTypeFlagDescription
levelSTRING-lPath depth to generate (default 1)
lowerBOOLEAN-lowerConvert wordlist file content to lowercase
regexSTRING-rRegex to filter words from wordlist file
domainSTRING-dInput domain
wordlistFILE-wWordlist file
only-dirsBOOLEAN-only-dirsGenerate directories only, files are filtered out
only-filesBOOLEAN-only-filesGenerate files only, file names are appended to given domains

Showing key inputs. mkpath exposes 8 inputs in total.

Full flag reference (8 inputs)
NameTypeFlagDescription
levelSTRING-lPath depth to generate (default 1)
lowerBOOLEAN-lowerConvert wordlist file content to lowercase
regexSTRING-rRegex to filter words from wordlist file
domainSTRING-dInput domain
wordlistFILE-wWordlist file
only-dirsBOOLEAN-only-dirsGenerate directories only, files are filtered out
only-filesBOOLEAN-only-filesGenerate files only, file names are appended to given domains
domain-fileFILE-dfInput domain file, one domain per line

example

Run mkpath

mkpath · command
# mkpath: build paths from a wordlist for fuzzing
mkpath -w paths.txt -l -only-dirs > url-paths.txt
sample output
/admin
/api
/api/v1
/backup
/dashboard
/login
/static
/uploads

guidance

Choosing mkpath

Reach for mkpath when you want to shape a path list before fuzzing, not run the fuzz itself. It generates candidate paths; ffuf or feroxbuster send the requests. For subdomain candidates instead, use mksub.

mksub

Sibling generator for subdomains instead of URL paths. Same wordlist-permutation idea at the DNS layer.

ffuf

Sends the requests. mkpath builds the path list that ffuf consumes; they pair rather than compete.

feroxbuster

Recursive content discovery. Feed it mkpath output to start from a target-shaped list.

faq

mkpath questions

No. It only generates URL paths from a wordlist and writes them to a file. Pass that file to a fuzzer such as ffuf or feroxbuster to probe the target.

Raise -l. Level 1 produces single-segment paths; higher levels nest segments so brute forcing reaches deeper routes.

Yes. Use -df with one domain per line to build path lists for every host in one pass.

Use -only-dirs to keep folder probes. Use -only-files when you want filenames appended for file guessing. Split passes when triage is noisy.

mkpath builds URL paths for HTTP fuzzing. mksub builds subdomain hostnames for DNS resolution.

Run mkpath yourself

A wordlist feeds mkpath, which builds candidate URL paths and hands them to ffuf for content discovery before the hits land as a queryable output.

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