PAGES
← all tools
◆ Web Application Security

dirsearch

v0.5.0 open-source

dirsearch is an advanced web path brute-forcer that discovers paths on web servers using wordlists.

Summary

dirsearch is an open-source, GPL-licensed command-line tool that brute-forces web paths and directories on a target URL using wordlists, filtering results by status, size, word count, or regex. It runs as a script or installed package on a laptop, cloning from GitHub or installing via pip, with prebuilt binaries and Docker images also available, and it now exposes a Python API for embeddingembeddingLists of numbers a model produces to represent the meaning of text, images or code, so similar items sit close together. They power semantic search and RAG. scans into other tooling. Its wordlist categories cover specific stacks like PHP, Python, Java, .NET, and Node, which points to penetration testers and red teamers doing web reconnaissance rather than continuous monitoring. It sits alongside other web-fuzzing tools such as ffuf and wfuzz, whose match/filter conventions its own release notes say it borrows. First committed in 2013, it has 121 contributors and 127 commits in the past year, with its latest release 84 days ago.

dirsearch is an advanced web path brute-forcer that discovers paths on web servers using wordlists.

How dirsearch helps

What hidden files and directories exist on this web server that nothing links to?

brute-forces the target URL against a wordlist and reports every path that returns a live response, revealing endpoints no crawler would find

Which of these discovered paths are actually worth investigating versus noise from a custom error page?

filters results by status code, response size, word count, or a regex pattern so near-identical junk responses can be excluded from the results

Is this target running PHP, Node, Java, or .NET, and what would I look for on each?

applies wordlist categories built for specific stacks, so the brute-force targets paths and file extensions typical of that framework instead of a generic list

Did a recent change on this server expose or remove any paths since the last time I scanned it?

writes results to a report file whose path and table names can carry variables, letting successive scans against the same target be compared

Are there whole subtrees on this server I'm missing by only checking the paths I thought of?

recurses into any directory it finds live, re-running the wordlist inside each discovered folder up to a configurable depth

Is a slow or unstable target hiding real findings behind connection errors and timeouts?

classifies SSL and network errors separately from genuine misses and can calibrate against wildcard responses so unstable hosts don't get reported as full of open paths

all 18 features, with the evidence for each →

Languages

Not documented

Features

18 capabilities · 4 backed by code, an API document or a real run

Built from dirsearch's releases, docs, README and our own runs. “Seen” marks the month we first spotted a release the vendor didn't date. Group names and tags are our labels.

Compare with peers →

  • dirsearch covers 1 of the 8 vulnerability assessment methods capabilities we track.

What dirsearch offers you

  • Command-line interface5
  • CSV data export2
  • Scripting language support2
  • Python scripting support1
  • Scripting API1
Web vulnerability scanning 4 features Vulnerability assessment methods since 2014
Web content and directory discovery verified Scans web targets to discover files, directories, and hidden paths by probing URLs and reporting HTTP response codes and redirects. 9 releases · 11 other sources · first seen Jul 2014

Shared capability: Web vulnerability scanning

release 9 total

  • --sync flag restores the legacy threaded scanning stack as an alternative to the new default async engine. v0.5.0 · Aug 2026 · source · release history
  • Adds --sync flag to fall back to the legacy threaded stack when async is not desired. v0.5.0 · Aug 2026 · source · release history
  • --request-backend native and --wordlist-backend native flags enable Rust-native backends for HTTP requests and wordlist generation. v0.5.0 · Aug 2026 · source · release history
  • Adds Nmap XML target import as a new scan input source. v0.5.0 · Aug 2026 · source · release history
  • Scanning defaults to async runtime; use --sync to revert to the legacy threaded stack. v0.5.0 · Aug 2026 · source · release history
  • Automatic detection of HTTP 429 Too Many Requests responses v0.4.1 · Dec 2020 · source · release history

docs

  • 89 lines (75 loc) · 2.48 KB 89 lines (75 loc) · 2.48 KB import sys from lib core api import ( DirsearchFuzzer FuzzerConfig FuzzerResult Wordlist WordlistState WordlistTemplate from lib core data import options from lib core exceptions import WordlistLimitError from lib core options import parse_options from lib core… docs update · Oct 2026 · source
  • 218 lines (159 loc) · 5 KB File metadata and controls 218 lines (159 loc) · 5 KB Raw Copy raw file Download raw file Outline Edit and raw actions Wordlists Summary A wordlist is a text file where each line is a path. In ordinary wordlists, dirsearch replaces the %EXT% keyword with extensions from the -e flag. docs update · Oct 2026 · source
  • Brute-forces web paths and directories against a target URL to discover hidden endpoints.

we ran it

  • The scan returned 19 findings: several 200 OK responses including exposed files such as .gitattributes, php.ini, CHANGELOG.md, README.md, and setup.php, plus three 301 redirects to directories… Aug 2026 · the full run
  • The scan returned 11 results: 10 HTTP 200 responses including /.gitattributes, /about.php, /README.md (32 KB), /robots.txt, /security.txt, /setup.php, /login.php, /php.ini, /favicon.ico, and… Aug 2026 · the full run
  • The scan returned 17 findings: files such as /.gitattributes, /php.ini, /robots.txt, and /README.md responded with 200 OK, while /index.php, /logout.php, and /phpinfo.php issued 302 redirects to… Aug 2026 · the full run

example

  • Run a scan using the Rust native backend for maximum throughput on a large wordlist. dirsearch -u https://target -e php,html,js --request-backend native --wordlist-backend native -w /path/to/wordlist v0.5.0 · Aug 2026 · source
  • Filter scan results to only include URLs with specific prefixes/suffixes and exclude certain file extensions. dirsearch -u https://example.com --prefix '/api/' --suffix '.json' --exclude-extensions php,aspx v0.4.0 · Sep 2020 · source
  • Basic scan against a target python3 dirsearch.py -u https://target
  • Scan with custom wordlist python3 dirsearch.py -u https://target -e php,html,js -w /path/to/wordlist
  • Scan for specific file extensions python3 dirsearch.py -u https://target -e php,html,js
Category-based wordlist selection shipped Enables the use of bundled wordlists filtered by specific web languages or frameworks (e.g., PHP, Node.js) to focus discovery efforts. 2 releases · 2 other sources · first seen Aug 2026

Shared capability: Web vulnerability scanning

Also counts toward: Command-line interface, Scripting language support

release

  • --wordlist-categories argument allows selecting bundled wordlists by language or framework category (PHP, Python, Java, .NET, Node, ColdFusion). v0.5.0 · Aug 2026 · source · release history
  • Adds --wordlist-categories flag to select category-based wordlists (PHP, Python, Java, .NET, Node, ColdFusion, and infrastructure). v0.5.0 · Aug 2026 · source · release history

example

  • Use category-based wordlists to target specific web frameworks during discovery. dirsearch -u https://example.com --wordlist-categories php,python,node v0.5.0 · Aug 2026 · source
  • Scan a target using category-based wordlists to focus on PHP and Node.js paths without maintaining a manual wordlist. dirsearch -u https://target -e php,js --wordlist-categories php,node v0.5.0 · Aug 2026 · source
Programmable API shipped Exposes a Python API (DirsearchFuzzer, FuzzerConfig, Wordlist, etc.) so developers can integrate dirsearch scanning into their own cyber toolchain. 2 releases · 2 other sources · first seen Dec 2020

Shared capability: Web vulnerability scanning

Also counts toward: CSV data export, Python scripting support, Scripting API, Scripting language support

release

  • Adds a Python API with FuzzerConfig, DirsearchFuzzer, structured results, wordlist helpers, and template wordlist support. v0.5.0 · Aug 2026 · source · release history
  • --output-format supports xml, markdown, and csv report formats v0.4.1 · Dec 2020 · source · release history

docs

  • It exposes two PyO3 functions and a class: NativeHttpEngine as the compatibility entrypoint backed by a cached engine. NativeHttpEngine keeps its Tokio runtime and HTTP clients alive across multiple batches and supports cooperative cancellation. Its scan(...) method seen Aug 2026 · source
  • import sys from lib.core.api import ( DirsearchFuzzer, FuzzerConfig, FuzzerResult, Wordlist, WordlistState, WordlistTemplate, from lib.core.data import options from lib.core.exceptions import WordlistLimitError from lib.core.options import parse_options __all__ = [ main, DirsearchFuzzer, FuzzerConfig,… docs update · Aug 2026 · source
Path traversal and injection probing verified Includes wordlist entries for path-traversal and injection payloads, reporting server responses for each probe. 1 release · 2 other sources · first seen Jul 2014

Shared capability: Web vulnerability scanning

release

  • --header argument added to inject custom HTTP headers into requests 0.2.4 · Jul 2014 · source · release history

we ran it

  • The scan returned 25 results: seven path-traversal probes for /etc/passwd variants all received HTTP 400 responses, while the remaining hits include HTTP 200 responses for files such as… Aug 2026 · the full run
  • The scan returned 17 findings: files such as /.gitattributes, /php.ini, /robots.txt, and /README.md responded with 200 OK, while /index.php, /logout.php, and /phpinfo.php issued 302 redirects to… Aug 2026 · the full run
Other / not yet classified 14 features Features we have not matched to a capability yet. A suggested match is marked.
Result filtering and post-processing shipped suggested Provides granular control over scan results by allowing users to filter based on HTTP status codes, response body content, response length/size, URL prefixes/suffixes, and file extensions. 9 releases · 2 other sources · first seen Sep 2020

Suggested capability: Web vulnerability scanning. This is our guess, not confirmed.

release 9 total

  • Sessions now use JSON controller state instead of pickle; legacy pickle sessions are no longer loaded directly and will trigger a warning. v0.5.0 · Aug 2026 · source · release history
  • Adds --list-sessions flag and session resume by ID; sessions now store JSON controller state instead of pickle. v0.5.0 · Aug 2026 · source · release history
  • Resumable sessions now use JSON controller state; legacy pickle sessions are no longer loaded directly and will produce a warning on upgrade. v0.5.0 · Aug 2026 · source · release history
  • Supports writing multiple output formats in a single run, with report paths and SQL table names accepting variables. v0.5.0 · Aug 2026 · source · release history
  • -s <code[,code...]> skips requests matching specified status codes during scanning v0.4.2 · Sep 2021 · source · release history
  • --status-codes-range flag allows filtering by status code ranges (e.g., 200-299) v0.4.1 · Dec 2020 · source · release history

docs

  • 125 lines (117 loc) · 3.44 KB 125 lines (117 loc) · 3.44 KB find-backup = False # Directory to save matched response bodies (up to 80 MiB each) #save-response = responses # JSONL file for matched responses; bodies are Base64 encoded #save-response-jsonl = responses.jsonl seen Sep 2026 · source

example

  • Scan a directory while only returning results with HTTP body content, filtering by status code 200 or 404. dirsearch -u https://example.com/admin --http-method POST -d 'key=value' --include-status-codes 200,404 v0.4.0 · Sep 2020 · source
Advanced output formatting and viewing shipped Offers cleaner console displays, color control, debug logging, full URL printing, and export to CSV, XML, or Markdown formats. 5 releases · 2 other sources · first seen Sep 2020

Also counts toward: Command-line interface, CSV data export

release

example

  • Export scan results to a local SQLite database for querying with SQL. dirsearch -u https://target.com -f sqlite --output-dir ./reports v0.4.3 · Oct 2022 · source
  • Use clean output view and filter responses by length to focus on specific content types. dirsearch -u https://example.com --clean-view --minimal-response-length 100 --maximal-response-length 500 v0.4.0 · Sep 2020 · source
Recursive directory scanning verified Automatically queues and scans discovered directories recursively to uncover nested content. 3 releases · 3 other sources · first seen Jul 2014

release

  • --recursive --recursion-status <codes> enables deep recursive scanning based on response status codes v0.4.2 · Sep 2021 · source · release history
  • --exclude-subdirs argument added to specify directories to skip during scans 0.2.4 · Jul 2014 · source · release history
  • --scan-subdirs argument added to control recursive directory scanning 0.2.4 · Jul 2014 · source · release history

docs

  • FROM python:3.14-slim LABEL maintainer="maurosoria@protonmail.com" ARG DIRSEARCH_STACK=async ENV DEBIAN_FRONTEND=noninteractive WORKDIR /opt/dirsearch COPY . seen Sep 2026 · source

we ran it

  • Exit status 0, discovering notable files including /.gitattributes, /config/config.inc.php, /php.ini, /robots.txt, and /security.txt, plus several directories (config/, database/, docs/, tests/,… Aug 2026 · the full run

example

  • Recursive scan with depth limit python3 dirsearch.py -u https://target -r --max-recursion-depth 3
Wordlist manipulation options verified Includes arguments to modify wordlists, such as adding capitalization variants or removing extensions. 4 releases · 1 other source · first seen Dec 2020

release

  • --wordlist-status, --wordlist-max-size, and --wordlist-backend auto|python|native arguments control wordlist discovery and loading behavior. v0.5.0 · Aug 2026 · source · release history
  • Adds template wordlist placeholders: %SUBJECT%, %CRUD_OP%, %AUTH_OP%, %DATE%, %API_VERSION%, %CATEGORY:name%, and %EXT%. v0.5.0 · Aug 2026 · source · release history
  • --remove-extensions flag removes all extensions from the wordlist v0.4.1 · Dec 2020 · source · release history
  • --capital-wordlist option enables capitalization in wordlists v0.4.1 · Dec 2020 · source · release history

command line

  • --wordlist-status — Show resolved wordlist files and generated entry v0.5.0 · Aug 2026 · command-line history
Proxy and network configuration shipped Supports routing traffic through local SOCKS5 or replay proxies and loading custom headers from files. 3 releases · 1 other source · first seen Dec 2020

Also counts toward: Command-line interface

release

  • --socks-proxy argument enables traffic through a SOCKS proxy v0.4.1 · Dec 2020 · source · release history
  • --replay-proxy flag forwards found paths to a replay proxy v0.4.1 · Dec 2020 · source · release history
  • --headers-file flag loads custom headers from a file v0.4.1 · Dec 2020 · source · release history

example

  • Route traffic through a local SOCKS5 proxy while loading headers from a file. dirsearch -u https://example.com --socks-proxy socks5://127.0.0.1:9050 --headers-file headers.txt v0.4.1 · Dec 2020 · source
Database-backed reporting shipped Supports exporting scan results directly to MySQL or PostgreSQL databases via optional extra dependencies. 3 releases · first seen Aug 2026

release

  • New MySQL and PostgreSQL report formats are supported via optional extras dirsearch[mysql], dirsearch[postgresql], and dirsearch[db]. v0.5.0 · Aug 2026 · source · release history
  • Optional DB dependencies (MySQL, PostgreSQL) are now explicit extras (dirsearch[mysql], dirsearch[postgresql], dirsearch[db]) rather than mandatory runtime dependencies — existing installs that relied on auto-installed DB drivers must reinstall with the appropriate extra. v0.5.0 · Aug 2026 · source · release history
  • Adds MySQL and PostgreSQL report backends, available as optional extras dirsearch[mysql], dirsearch[postgresql], and dirsearch[db]. v0.5.0 · Aug 2026 · source · release history
Session management and state persistence shipped Allows users to save scan states as JSON files, list existing sessions, and resume scans from specific IDs without restarting. 2 releases · 1 other source · first seen Aug 2026

Also counts toward: Command-line interface

release

  • Adds --list-sessions flag and session resume by ID; sessions now store JSON controller state instead of pickle. v0.5.0 · Aug 2026 · source · release history
  • --list-sessions flag and session resume by ID allow managing and resuming scan states directly from the CLI. v0.5.0 · Aug 2026 · source · release history

example

  • List existing scan sessions and resume a specific one by ID without restarting the scan. dirsearch --list-sessions (dirsearch -u https://example.com -s <session_id>) v0.5.0 · Aug 2026 · source
Cross-platform execution support shipped Supports execution on Windows operating systems in addition to the original platform. 2 releases · first seen Jul 2014

release

  • PyInstaller release builds now cover Windows x64, Linux x64, Linux ARM64, macOS Intel, and macOS Apple Silicon across async, threaded, and native-rust stack variants. v0.5.0 · Aug 2026 · source · release history
  • Added Windows OS support for execution 0.2.4 · Jul 2014 · source · release history
Enhanced result filtering criteria shipped Extends result filtering capabilities to include word count, line count, and elapsed time in addition to existing status and size filters. 1 release · 1 other source · first seen Aug 2026

release

  • Adds advanced match/filter controls for status, size, word count, line count, regex, and elapsed time. v0.5.0 · Aug 2026 · source · release history

docs

  • 9 Open 970 Closed 9 Open 970 Closed Stop HTML report parsing at EOF #1622 Aug 27, 2026 Bump quinn-proto from 0.11.14 to 0.11.17 in /native Mix and match filters to narrow down what you’re looking for. seen Aug 2026 · source
Default URL scheme configuration shipped suggested Allows setting a default HTTP or HTTPS scheme for targets that do not explicitly specify one. 2 releases · first seen Sep 2021

Suggested capability: Web vulnerability scanning. This is our guess, not confirmed.

release

  • --scheme auto automatically detects HTTP or HTTPS scheme v0.4.3 · Oct 2022 · source · release history
  • --scheme <http|https> configures the default URL scheme when none is provided in targets v0.4.2 · Sep 2021 · source · release history
CIDR subnet scanning shipped Enables scanning all hosts within a specified CIDR block (e.g., /24 subnet) rather than targeting a single IP or URL. 1 release · 1 other source · first seen Dec 2020

release

  • --cidr argument added to scan all hosts in a CIDR block instead of a single IP v0.4.1 · Dec 2020 · source · release history

example

  • Scan all IPs in a /24 subnet using a CIDR notation target. dirsearch -t '192.168.1.0/24' --cidr v0.4.1 · Dec 2020 · source
Web page crawling and content extraction shipped suggested Automatically discovers additional web paths by following links found within the HTML or other text responses of scanned pages, up to a specified depth. 1 release · first seen Oct 2022

Suggested capability: Web vulnerability scanning. This is our guess, not confirmed.

Also counts toward: Command-line interface

release

  • --crawl-depth <N> supports crawling web paths in responses (CRLD) v0.4.3 · Oct 2022 · source · release history
Scan duration control shipped Sets a maximum runtime limit for a scan session to prevent indefinite execution. 1 release · first seen Sep 2021

release

  • --max-duration <time> sets maximum runtime for a scan session v0.4.2 · Sep 2021 · source · release history
Scan rate limiting shipped suggested Caps the maximum number of requests per second to control network impact and avoid detection. 1 release · first seen Sep 2021

Suggested capability: Web vulnerability scanning. This is our guess, not confirmed.

release

  • --rate-limit <n> caps the maximum request rate per second v0.4.2 · Sep 2021 · source · release history

Lines in monospace are the tool's own words: help text parsed from its source, or an endpoint from its API document. Under release, a line is our summary of a dated release. Under docs, it is quoted from the tool's own documentation or website. Each links back to the source it came from.

Score card

  1. Shipping velocity releases a month, last 12 months
  2. Documentation quality release-notes rubric, 0–100
  3. Breaking-change discipline how rarely a release breaks users, and notice given
  4. Maintenance risk quiet time against its own cadence, maintainers
  5. Innovation & surface new capabilities, API and MCP surface
  6. Community health
  7. Contributor trend distinct committers, this year against last
  8. Maintainer concentration bus factor now against a year ago
  9. Issue backlog trend issues closed per issue opened, 12 months
  10. Responsiveness median time to a maintainer’s first reply

Nine scores for dirsearch, each built from the releases, notes and API history this site tracks — and, on Researcher and Business, where it stands among every measured tool in its category and how that has moved.

Score cards are part of every paid plan.

See plans →

Each score is 0–100 on a published rubric, derived from data this site already shows. A dimension we cannot measure says so — it is never scored 0 and never enters a rank.

How this is scored
  • Shipping velocity — releases a month over the last 12 months, on a log scale where 16 a month scores 100. Needs 3 releases in the window.
  • Documentation quality — the release-notes rubric published on the analytics page, unchanged.
  • Breaking-change discipline — the share of releases carrying a breaking change (none scores 100, half or more scores 0). Only projects that label breaking changes are measured: a clean record cannot be told from an unlabelled one.
  • Maintenance risk — quiet time measured against the tool's own release cadence (quiet longer than 90 days and three typical gaps scores 0), plus the number of active maintainers and whether contributors are growing, where known. Higher is lower risk.
  • Innovation & surface — new capabilities in the feature ledger this year, API and MCP operations added, and the share of commits that are features: the mean of whichever we hold.
  • Community health (open-source tools only) — each is a direction, not a size: contributors this year against last, the bus factor now against a year ago, and issues closed per issue opened, where steady scores 50, doubled 100 and halved 0; plus the median time to a maintainer's first reply (an hour scores about 100, a month or more 0). A commercial card has no repository and carries none of the four.
  • Documented delivery (commercial tools) — when a vendor's documented new capabilities have slowed against its own baseline, that counts against the overall standing as heavily as two low dimensions. Steady delivery, or too little history to judge, leaves the standing alone; it is never a sixth score.
  • Open-source tools are scored on repository signals; commercial tools on their published changelog. Ranks compare tools within one category and one profile and need at least five measured peers; the overall standing needs three ranked dimensions. Best-in-breed or consolidator is a shape, not a quality, and is never scored.

Release-note detail over time

See how much detail dirsearch puts in its release notes, quarter by quarter, and compare it with tracked tools in the same category. This history uses up to ten retained, reviewed notes per tool; sparse or blank older quarters may reflect that limit.

Checking release-note history…

Explore the full chart →

Releases

Show

20 entries

  1. October 20262
  2. August 202611
  3. July 20262
  4. October 20221
  5. September 20211
  6. December 20201
  7. September 20201
  8. July 20141
    Show

    20 entries

    Project health

    Issue, contributor and maintainer activity in maurosoria/dirsearch, 2023-10 – 2026-09, as of 2026-09-25. Twelve-month figures first; the trend lines run the whole window.

    1. Contributors 7 −1 vs prior 12 months
    2. Maintainers 1 +2 joined · −3 left, last 12 months
    3. Bus factor 1 committers behind half the commits
    4. Community-filed 68% of issues opened, last 12 months
    5. Median time to close 128 days first maintainer reply 37 hours
    6. Open backlog 14 of 600 issues ever filed
    1. Issues opened / month 1 · 0 communitymaintainers
    2. Open backlog 14
    3. Contributors / month 1
    4. Commits / month 106
    5. Stars 14,744
    Issue themes, last 12 months
    • bugs 24%
    • features 36%
    • questions 12%
    • other 28%

    Counts from the project's public repository and git history; no individuals are identified. Maintainers are the committers covering 80% of the last year's commits. how we measure this

    Articles

    2 articles · updated Nov 4, 2026

    Where dirsearch turns up in what others publish: how-tos, attack reports that name it, and incident write-ups. A row says why it is here and quotes where the article names it; the link goes to the publisher.

    Tutorials & guides 2

    • Comprehensive Guide on Dirsearch (Part 2) Hacking Articles
      This is the second instalment of our series comprehensive guide on dirsearch.
      2 more quotes
      In the first part of this series, we discussed some basic commands on dirsearch.
      In this part, we will try to explore some more options of this command-line tool, dirsearch.
    • Comprehensive Guide on Dirsearch Hacking Articles
      In this article, we will learn how we can use Dirsearch.
      2 more quotes
      Table of Content Introduction to Dirsearch Setup Target URL Save Output in Different Formats No Colour Quite mode Normal scan vs Recursive scan Post method Delay request Version scan Introduction to Dirsearch Dirsearch…
      Dirsearch is a strong competitor in the directory scanner arena, with features such as multi-threading, proxy support, request latency, user agent randomization, and support for multiple extensions.

    Libraries its release ships

    What its latest release locks, checked against known advisories.

    None of its release's images build from a lockfile we can read.

    Add the badge to your README

    Maintain this project? The badge links readers straight to this page, so they can follow every release here.

    Tracked by Cyber Toolchain Choose a badge style and copy the code →
    browse all tools → score card for your toolchain →