PAGES
← all tools
◆ Web Application Security

ffuf

v2.3.0 open-source

ffuf is a fast web fuzzer written in Go for directory, vhost, and parameter discovery using a FUZZ keyword in URLs, headers, or POST data.

Summary

ffuf is an open-source command-line web fuzzer, free to use, written in Go and run from a terminal by replacing a FUZZ keyword in a URL, header, or POST body with entries from a wordlist. It handles directory and file brute-forcing, virtual host and subdomain discovery, and parameter fuzzing, with clusterbomb and sniper modes for combining or targeting multiple wordlists, and its flags deliberately mirror curl's so anyone comfortable with curl can pick it up quickly. It's aimed at penetration testers and bug bounty hunters doing content discovery and recon rather than teams wanting a managed scanning platform. It sits in the same space as tools like gobuster and dirsearch, though its README doesn't name them directly. First committed in 2018, it remains active with 57 contributors and a release cut just 39 days ago.

ffuf is a fast web fuzzer written in Go for directory, vhost, and parameter discovery using a FUZZ keyword in URLs, headers, or POST data.

How ffuf helps

Which hidden directories and files exist on this web server that aren't linked anywhere?

runs a wordlist against the target path and reports every response that comes back with a status worth looking at, such as 200s, letting the reader filter out noise like 404s

Is this server quietly hosting other sites or environments under a different name?

substitutes candidate names into the Host header and compares response sizes across virtual hosts, surfacing the ones that differ from the default site even without DNS records

Did a set of test cases that failed with authentication last time start succeeding after a change?

filters results by response code, such as isolating 401s, so a rerun against the same wordlist shows whether previously blocked paths now return differently

Can I chase every subdirectory a scan turns up without babysitting it manually?

recursive fuzzing re-runs the wordlist against newly discovered directories automatically, with a per-job time limit so any one branch doesn't run indefinitely

How do I test combinations of two variables, like every subdomain against every path, in one pass?

clusterbomb mode pairs every entry from one wordlist against every entry from another, while pitchfork mode instead steps through both lists in lockstep for matched pairs like credential lists

all 16 features, with the evidence for each →

Languages

Not documented

Features

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

Built from ffuf'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 →

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

What ffuf offers you

  • Command-line interface7
  • JSON data export2
  • CI/CD pipeline integration1
  • CSV data export1
Web vulnerability scanning 8 features Vulnerability assessment methods since 2018
Wordlist-based fuzzing verified Replaces a keyword placeholder in requests with entries from a wordlist to discover files, directories, subdomains, or parameter values. 9 releases · 13 other sources · first seen Apr 2019

Shared capability: Web vulnerability scanning

release 9 total

  • Adds new --recursive-strategy options (full, parent, root) to control recursive fuzzing depth in interactive mode. v1.3.0 · Apr 2021 · source · release history
  • Adds support for comma-separated values in multiple -w flags v1.2.0 · Jan 2021 · source · release history
  • Added ignore comment option for fuzzing input v1.0 · Jan 2020 · source · release history
  • Add Multiple wordlist support, enabling the use of several dictionaries in a single fuzzing session v0.11 · Nov 2019 · source · release history
  • Match both lowercase %ext% and uppercase %EXT% placeholders in DirSearch compatibility mode v0.11 · Nov 2019 · source · release history
  • Adds --input-cmd flag to drive fuzzing input via an external command output v0.10 · Jun 2019 · source · release history

we ran it

  • The tool fuzzed all 19 wordlist entries and returned 8 HTTP 200 matches: setup.php, login.php, robots.txt, favicon.ico, CHANGELOG.md, README.md, about.php, and instructions.php. Aug 2026 · the full run

example 12 total

  • Configure preflight/postflight logic and rate limits in a reusable configuration file preflight: enabled: true requests: - url: 'https://example.com/login' method: POST body: 'username=admin&password=pass' postflight: enabled: false limits: snapshot.size: 1000 header_size.max: 5000 v2.3.0 · Sep 2026 · source
  • Enable recursive fuzzing starting from the root directory during an interactive session. ffuf -u https://example.com/FUZZ/FUZZ2 -w wordlist.txt --interactive --recursive-strategy root v1.3.0 · Apr 2021 · source
  • Use dynamic input from a script to generate unique payloads for each request ffuf -u https://example.com/FUZZ -w - --input-cmd 'echo "payload1\npayload2"' v0.10 · Jun 2019 · source
  • Pipe a generated wordlist directly into ffuf without creating a temporary file cat /tmp/my_wordlist.txt | ffuf -u https://example.com/FUZZ -w - v0.10 · Jun 2019 · source
  • Automatically append .php extensions to all words in the wordlist during a scan ffuf -w wordlist.txt -u https://example.com/FUZZ -e php v0.9 · Apr 2019 · source
  • Fuzz a parameter, match 200 responses ffuf -u https://site/api?id=FUZZ -w ids.txt -mc 200
Response filtering and matching shipped Filters or matches responses by criteria such as HTTP status code to surface relevant results. 10 releases · 5 other sources · first seen Nov 2018

Shared capability: Web vulnerability scanning

release 10 total

  • Adds response time logging and filtering capabilities v1.4.0 · Mar 2022 · source · release history
  • Adds 405 Method Not Allowed to the list of status codes matched by default with -mc v1.2.0 · Jan 2021 · source · release history
  • Adds the -v / --verbose flag to display progress updates during fuzzing runs v0.12 · Nov 2019 · source · release history
  • Allow range expressions (e.g., 10-20) for size, word count, or status code filtering/matching v0.11 · Nov 2019 · source · release history
  • Support custom autocalibration strings for dynamic filtering adjustments v0.11 · Nov 2019 · source · release history
  • Adds -s flag to stop fuzzing on spurious 403 responses v0.8 · Mar 2019 · source · release history

example

  • Scan for both 200 OK and 405 Method Not Allowed responses in a single pass ffuf -u https://example.com/FUZZ -w wordlist.txt -mc 200,405 v1.2.0 · Jan 2021 · source
  • Filter requests that don't match a specific regex pattern in the response body to narrow down interesting findings. ffuf -u https://target.com/FUZZ -w wordlist.txt --regexp '^[0-9]{4}-[0-9]{2}-[0-9]{2}$' v0.4 · Nov 2018 · source
  • Fuzz a parameter, match 200 responses ffuf -u https://site/api?id=FUZZ -w ids.txt -mc 200
  • Virtual host discovery filtering by size ffuf -w /path/to/vhost/wordlist -u https://target -H "Host: FUZZ" -fs 4242
  • Filter out 404 responses ffuf -u https://site/FUZZ -w wl.txt -fc 404
Request customization shipped Customizes HTTP requests via flags for methods, cookies, data, and timeouts. 7 releases · 3 other sources · first seen Jun 2019

Shared capability: Web vulnerability scanning

Also counts toward: Command-line interface

release 7 total

  • Adds support for preflight and postflight request blocks to execute steps before or after fuzzing v2.3.0 · Sep 2026 · source · release history
  • Adds preflight and postflight requests with variable extraction, enabling multi-step request chains where values captured from an earlier response can be injected into subsequent fuzz requests.⁠︀︄︇︀︅︉︀︅︀︀︃︀︀︅︅︀︅︊︀︄︆︀︃︄⁠ v2.3.0 · Sep 2026 · source · release history
  • Adds HTTP/2 protocol support v1.4.0 · Mar 2022 · source · release history
  • -maxtime flag to limit the running time of ffuf v1.0 · Jan 2020 · source · release history
  • Replay matches using a chosen proxy v1.0 · Jan 2020 · source · release history
  • Support additional curl options (-i, --data-ascii/-binary, -b/--cookie) via CLI flags v0.11 · Nov 2019 · source · release history

example

  • Limit fuzzing duration to prevent long-running jobs in automated pipelines. ffuf -w wordlist.txt -u https://example.com/FUZZ -maxtime 60 v1.0 · Jan 2020 · source
  • Replay matched requests through a proxy like Burp Suite for further inspection. ffuf -w wordlist.txt -u https://example.com/FUZZ -replay-proxy http://127.0.0.1:8080 v1.0 · Jan 2020 · source
  • Recursive fuzzing with per-job time limit ffuf -w /path/to/wordlist -u https://target/FUZZ -maxtime-job 60 -recursion -recursion-depth 2
Advanced payload input shipped Supports diverse input methods including stdin piping, external commands, and dynamic script generation for fuzzing payloads. 3 releases · 2 other sources · first seen Jun 2019

Shared capability: Web vulnerability scanning

Also counts toward: Command-line interface

release

  • Added raw request parsing option v1.0 · Jan 2020 · source · release history
  • Adds --input-cmd flag to drive fuzzing input via an external command output v0.10 · Jun 2019 · source · release history
  • Adds support for feeding the wordlist from standard input (stdin) when the file argument is - v0.10 · Jun 2019 · source · release history

example

  • Use dynamic input from a script to generate unique payloads for each request ffuf -u https://example.com/FUZZ -w - --input-cmd 'echo "payload1\npayload2"' v0.10 · Jun 2019 · source
  • Pipe a generated wordlist directly into ffuf without creating a temporary file cat /tmp/my_wordlist.txt | ffuf -u https://example.com/FUZZ -w - v0.10 · Jun 2019 · source
Payload encoding verified Applies one or more encoding schemes (e.g. URL encoding, base64) to fuzzing keywords before they are sent in requests. 1 release · 2 other sources · first seen Sep 2023

Shared capability: Web vulnerability scanning

Also counts toward: Command-line interface

release

  • Adds Pencode support via -p <config> flag allowing use of custom encoding/decoding layers defined in Pencode-compatible scripts v2.1.0 · Sep 2023 · source · release history

command line

Interactive execution mode shipped Allows pausing fuzzing execution to interactively adjust filters, manage recursion queues, and save snapshots of matches. 2 releases · 1 other source · first seen Apr 2021

Shared capability: Web vulnerability scanning

release

  • Enables interactive mode via ENTER key during execution to change filters, manage recursion queue, and save snapshot of matches to a file. 1.3.0 · Apr 2021 · source · release history
  • Adds --interactive flag to enable interactive mode where results are presented for review before the next request is sent. v1.3.0 · Apr 2021 · source · release history

example

  • Run ffuf interactively to manually approve or skip fuzzing branches based on real-time results. ffuf -u https://example.com/FUZZ -w wordlist.txt --interactive v1.3.0 · Apr 2021 · source
Payload strategy configuration shipped Supports specific fuzzing strategies, such as Sniper Mode, to automate parameter handling during testing. 1 release · 1 other source · first seen Mar 2022

Shared capability: Web vulnerability scanning

release

  • Adds Sniper Mode for automated parameter fuzzing strategies v1.4.0 · Mar 2022 · source · release history

docs

  • Jul 14, 2026 9 revisions Having a wordlist, or a command that provides different inputs Sniper mode Sniper is the odd one out. Instead of multiple wordlists, it takes a single wordlist and a set of marked positions, and fuzzes one position at a time. seen Jul 2026 · source
Blind payload correlation shipped Maps responses from blind payloads back to their originating requests for analysis. 1 release · first seen Feb 2023

Shared capability: Web vulnerability scanning

release

  • Adds capability to map fired blind payloads back to the initial request for correlation v2.0.0 · Feb 2023 · source · release history
Other / not yet classified 8 features Features we have not matched to a capability yet. A suggested match is marked.
Mutual TLS authentication verified Authenticates requests using a client certificate and key pair for targets that require mutual TLS. 18 releases · 7 other sources · first seen Mar 2019

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

release 18 total

  • Enables certificate authentication for crawler endpoints by adding cert_file and key_file fields to the Crawler section in .ffuf.yml v2.1.0 · Sep 2023 · source · release history
  • Adds TLS SNI (Server Name Indication) support v1.4.0 · Mar 2022 · source · release history
  • Write requests and responses to filesystem if requested v1.0 · Jan 2020 · source · release history
  • fuzzing input in result v1.0 · Jan 2020 · source · release history
  • Enables HTML output export with DataTables JavaScript library for interactive filtering and sorting v0.12 · Nov 2019 · source · release history
  • Adds RedirectLocation and full URL fields to all output formats to capture redirect chains v0.12 · Nov 2019 · source · release history

command line

  • -ck — Client key for authentication. Client certificate needs to be defined as well for this to work v2.1.0 · Sep 2023 · command-line history
  • -cc — Client cert for authentication. Client key needs to be defined as well for this to work v2.1.0 · Sep 2023 · command-line history

example

  • Fuzz HTTP methods and filter by status code ranges. ffuf -u https://target.com/ -X GET,POST,PUT -fc 404 -fs 10-20 v0.11 · Nov 2019 · source
  • Fuzz with multiple wordlists and output results in HTML format for easy reporting. ffuf -w wordlist1.txt:W1,wordlist2.txt:W2 -u https://target.com/FUZZ -of html -o report.html v0.11 · Nov 2019 · source
  • Debug logging for troubleshooting fuzzing behavior. ffuf -u https://target.com/FUZZ -w wordlist.txt -debug-log debug.log v0.11 · Nov 2019 · source
  • Prevent hanging on slow targets by setting a 30-second request timeout ffuf -u https://example.com/FUZZ -w wordlist.txt -timeout 30s v0.10 · Jun 2019 · source
  • Save ffuf scan results to a CSV file for external analysis ffuf -w wordlist.txt -u https://example.com/FUZZ -of csv -o results.csv v0.9 · Apr 2019 · source
Enhanced output formats shipped Exports results in structured formats including JSON, CSV, HTML, and Markdown for reporting and analysis. 9 releases · 2 other sources · first seen Mar 2019

Also counts toward: CSV data export, JSON data export

release 9 total

  • All output file formats now include the Content-Type field. 1.3.0 · Apr 2021 · source · release history
  • Includes Content-Type header in all output formats (JSON, CSV, etc.) v1.3.0 · Apr 2021 · source · release history
  • Adds --config flag to load settings from a configuration file v1.2.0 · Jan 2021 · source · release history
  • Adds Host field to the json output format (and by extension to .hjson) to include the target host in the output file v1.1.0 · Jul 2020 · source · release history
  • Enables writing to multiple output formats simultaneously using the existing -of flag, allowing concurrent export of results to all supported formats v1.1.0 · Jul 2020 · source · release history
  • Enables HTML output export with DataTables JavaScript library for interactive filtering and sorting v0.12 · Nov 2019 · source · release history

example

  • Fuzz with multiple wordlists and output results in HTML format for easy reporting. ffuf -w wordlist1.txt:W1,wordlist2.txt:W2 -u https://target.com/FUZZ -of html -o report.html v0.11 · Nov 2019 · source
  • Save ffuf scan results to a CSV file for external analysis ffuf -w wordlist.txt -u https://example.com/FUZZ -of csv -o results.csv v0.9 · Apr 2019 · source
Audit logging verified suggested Records all requests, responses, and configuration from a fuzzing session to a log file for compliance, review, and reporting. 5 releases · 2 other sources · first seen Apr 2021

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

Also counts toward: Command-line interface

release

  • Bounds the -od/-audit-log response snapshot and response header size to cap on-disk and in-memory growth during large fuzzing runs. v2.3.0 · Sep 2026 · source · release history
  • Binds -od and -audit-log response snapshot and header size limits via new config fields snapshot.size and header_size.max v2.3.0 · Sep 2026 · source · release history
  • Adds audit logging functionality to record fuzzing sessions for compliance, review, and reporting purposes. v2.2.0 · Jul 2026 · source · release history
  • Adds audit logging functionality to record fuzzing sessions for compliance and forensic review. v2.2.0 · Jul 2026 · source · release history
  • Adds the --noninteractive flag to disable interactive mode v1.3.1 · Apr 2021 · source · release history

command line

  • --audit-log — Write audit log containing all requests, responses and config v2.2.0 · Jul 2026 · command-line history

example

  • Run ffuf in a CI/CD pipeline without interactive prompts blocking execution. ffuf -w wordlist.txt -u http://example.com/FUZZ --noninteractive v1.3.1 · Apr 2021 · source
Terminal interface and output shipped Provides visual feedback, progress tracking, and output routing options for the command-line interface. 3 releases · first seen Nov 2018

Also counts toward: Command-line interface

release

CI/CD non-interactive mode shipped suggested Disables interactive prompts to allow the tool to run unattended in automated pipelines. 1 release · 1 other source · first seen Apr 2021

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

Also counts toward: CI/CD pipeline integration, Command-line interface

release

  • Adds the --noninteractive flag to disable interactive mode v1.3.1 · Apr 2021 · source · release history

example

  • Run ffuf in a CI/CD pipeline without interactive prompts blocking execution. ffuf -w wordlist.txt -u http://example.com/FUZZ --noninteractive v1.3.1 · Apr 2021 · source
Passive data gathering shipped Enables the collection of passive information during fuzzing campaigns without active probing. 1 release · first seen Feb 2023

release

  • Adds scraper functionality to enable passive data gathering during fuzzing campaigns v2.0.0 · Feb 2023 · source · release history
Advanced matcher logic shipped Allows the user to define how response matches are combined using logical operators such as AND or OR. 1 release · first seen May 2022

release

Autocalibration control shipped Provides flags to configure an automatic calibration process for the fuzzing session. 1 release · first seen May 2022

release

  • Adds -ach, -ack, and -acs flags to control the new autocalibration process 1.5.0 · May 2022 · 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 ffuf, 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 ffuf 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. September 20261
  2. July 20262
  3. September 20231
  4. February 20231
  5. May 20221
  6. March 20221
  7. April 20212
  8. January 20211
  9. July 20201
  10. January 20201
  11. November 20192
  12. June 20191
  13. April 20191
  14. March 20191
  15. November 20183
    Show

    20 entries

    Project health

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

    1. Contributors 6 +4 vs prior 12 months
    2. Maintainers 1 +1 joined · −0 left, last 12 months
    3. Bus factor 1 committers behind half the commits
    4. Community-filed 100% of issues opened, last 12 months
    5. Median time to close 539 days first maintainer reply 3.9 days
    6. Open backlog 165 of 554 issues ever filed
    1. Issues opened / month 0 · 0 communitymaintainers
    2. Open backlog 165
    3. Contributors / month 3
    4. Commits / month 8
    5. Stars 16,682
    Issue themes, last 12 months
    • bugs 6%
    • features 11%
    • other 83%

    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

    1 article · updated Nov 4, 2026

    Where ffuf 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 1

    • Comprehensive Guide on ffuf Hacking Articles
      In this article, we will learn how we can use ffuf, which states for “Fuzz Faster U Fool”, which is an interesting open-source web fuzzing tool.
      2 more quotes
      Since its release, many people have gravitated towards ffuf, particularly in the bug bounty scenario.
      Many people have gravitated towards ffuf since its release, especially in the bug bounty scene.

    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 →