GO KALI FREE

FFUF

Web Application

Beginnermedium risk

FFUF (Fuzz Faster U Fool) is an extremely fast, open-source web fuzzer written in the Go programming language. Penetration testers and bug bounty hunters use the FFUF tool for directory brute forcing, file discovery, parameter fuzzing, virtual host discovery, and REST API fuzzing by injecting wordlist entries into any part of an HTTP request using the FUZZ keyword.

Installation

sudo apt install ffuf

Basic Syntax

ffuf -w <wordlist> -u <url/FUZZ>

Quick Facts

Full Name
FFUF (Fuzz Faster U Fool)
License
MIT License
Written In
Go
Platforms
Linux, Windows, macOS
Category
Web Fuzzer
Speed
Very Fast (10K+ req/s)
First Release
2019
Author
Joel Henrikkson

Tool Overview

FFUF (short for Fuzz Faster U Fool) is an extremely fast web fuzzer written in the Go programming language. The FFUF tool uses the FUZZ keyword placeholder to inject wordlist entries into any part of an HTTP request — including the URL path, query parameters, HTTP headers, cookies, and POST data — to discover hidden content that is not linked anywhere on a website.

Because Go compiles to native code and handles concurrency efficiently, FFUF can send tens of thousands of requests per second, which is why it is widely described as one of the fastest web fuzzers available. It was created in 2019 by security researcher Joel Henrikkson and is released as free, open-source software under the permissive MIT License.

The FFUF tool supports advanced response filtering by HTTP status code, response size, word count, line count, and regular expression patterns. This combination of raw speed and precise filtering makes FFUF the go-to choice for directory brute forcing, hidden file discovery, REST API endpoint enumeration, virtual host discovery, and parameter fuzzing during penetration testing and bug bounty reconnaissance.

Common Commands

ffuf -w /usr/share/wordlists/dirb/common.txt -u http://192.168.1.1/FUZZDirectory fuzzing - Perform fast directory discovery mapping input over the FUZZ keyword position
ffuf -w wordlist.txt -u http://192.168.1.1/FUZZ -e .php,.htmlFuzz with extensions - Discover distinct application files by appending targeted file format extensions
ffuf -w wordlist.txt -u http://192.168.1.1 -H "Host: FUZZ.target.com"Virtual host discovery - Enumerate valid subdomains sitting behind a single reverse proxy or gateway IP
ffuf -w wordlist.txt -u http://192.168.1.1/api?param=FUZZParameter fuzzing - Enumerate hidden variables or parameters within active application APIs
ffuf -w wordlist.txt -u http://192.168.1.1/FUZZ -mc 200,301,302Filter by status codes - Isolate and print responses matching specific HTTP status code flags
ffuf -w /usr/share/wordlists/dirb/common.txt -u http://target/FUZZDirectory fuzzing
ffuf -w wordlist.txt -u http://target/FUZZ -e .php,.htmlFuzz with extensions
ffuf -w wordlist.txt -u http://target -H "Host: FUZZ.target.com"Virtual host discovery
ffuf -w wordlist.txt -u http://target/api?param=FUZZParameter fuzzing
ffuf -w wordlist.txt -u http://target/FUZZ -mc 200,301,302Filter by status codes
ffuf -w wordlist.txt -u http://target/FUZZ -fs 4242Filter size — hide responses of a fixed byte size to cut noise
ffuf -w wordlist.txt -u http://target/FUZZ -recursion -recursion-depth 2Recursion — automatically fuzz inside discovered directories
ffuf -w wordlist.txt -u http://target/FUZZ -o out.json -of jsonOutput — save machine-readable JSON results
ffuf -w wordlist.txt -u https://target/FUZZ -t 100 -rate 200Speed — set thread count and cap requests per second
ffuf -w u.txt:UW -w p.txt:PW -u http://target/login -d 'user=UW&pass=PW' -X POSTClustered — brute-force credential pairs with named wordlists

Step-by-Step Guide

  1. 1Locate the dictionary file you intend to use
  2. 2Mark the exact injection point in the URL using the placeholder 'FUZZ'
  3. 3Execute the tool adding any necessary flags for speed or extensions
  4. 4Implement filtering to hide responses that are unhelpful
  5. 5Review the resulting output for actionable endpoints

Warnings

Use Cases

Directory Fuzzing

Discover hidden directories and folders by fuzzing URL paths with wordlists — the core of directory brute forcing.

File Discovery

Find backup files, config files, and forgotten pages by appending extensions like .php, .bak, .zip, and .txt.

REST API Fuzzing

Enumerate hidden REST API endpoints, versioned routes (/v1, /v2), and undocumented actions on JSON APIs.

Parameter Fuzzing

Enumerate hidden GET and POST parameters by injecting payloads into query strings and request bodies.

Virtual Host Discovery

Find virtual hosts and hidden subdomains behind one IP by fuzzing the HTTP Host header.

Bug Bounty Recon

Rapidly map the attack surface of a target during bug bounty reconnaissance to find admin panels and endpoints.

Key Features

Best Practices

Common Errors

connection refused
Verify the URL and port are correct and the host is reachable (curl or ping). Confirm the web service is actually running.
429 Too Many Requests / IP blocked
Slow down with -rate 50 and add a delay with -p 0.1. Reduce threads with -t 20 to stay under the limit.
permission denied
Run 'chmod +x ffuf' on the binary, and make sure output paths are writable. Avoid needing root — fuzzing does not require it.
x509 / TLS certificate errors
Add the -k flag to skip TLS certificate verification: 'ffuf -k -w list.txt -u https://target/FUZZ'.
timeout / context deadline exceeded
Increase the timeout with '-timeout 15' and lower concurrency with '-t 20' so the server can keep up.
could not resolve host (DNS)
Add the host to /etc/hosts, or fuzz by IP and set the Host header manually with -H 'Host: name'.
ffuf: command not found (after go install)
Add 'export PATH=$PATH:$(go env GOPATH)/bin' to your shell profile, then reload it and retry 'ffuf -V'.

People Also Ask

What is FFUF used for?

FFUF is used for directory brute forcing, hidden file discovery, parameter fuzzing, virtual host discovery, and REST API endpoint enumeration. Security professionals and bug bounty hunters use it to quickly map a target's hidden attack surface.

Is FFUF faster than Gobuster?

Yes, FFUF is generally faster than Gobuster because it is written in Go with highly optimized concurrency. FFUF can routinely achieve 10,000+ requests per second, while Gobuster is also fast but FFUF's filtering engine gives it an edge in precision.

How do I install FFUF on Kali Linux?

Run 'sudo apt update && sudo apt install ffuf' to install FFUF from the default Kali repositories. FFUF is often pre-installed on Kali Linux; if not, the APT command handles everything automatically.

Can I use FFUF for API fuzzing?

Yes, FFUF is excellent for REST API fuzzing. Place the FUZZ keyword after your API base path (e.g., 'http://target/api/FUZZ') and match on 200, 401, and 403 status codes to discover undocumented endpoints, versioned routes, and hidden parameters.

What is the FUZZ keyword in FFUF?

The FUZZ keyword is a special placeholder you put anywhere in the HTTP request where you want wordlist entries injected. FFUF replaces FUZZ with each line of your wordlist, allowing you to fuzz URL paths, query parameters, HTTP headers, cookies, and POST data.

Is FFUF free to use?

Yes, FFUF is 100% free and open source under the MIT License. You can download, use, inspect, and modify it at no cost from the official GitHub repository at github.com/ffuf/ffuf.

Related Tools

Gobuster

Web Application

Simpler Go-based directory brute forcer with dedicated dir, dns, and vhost modes.

Feroxbuster

Web Application

Fast Rust-based content-discovery tool built around automatic recursive scanning.

Wfuzz

Web Application

Flexible Python fuzzer with strong payload processing and encoding.

HTTPX

Information Gathering

Fast HTTP probe for validating and fingerprinting discovered hosts and endpoints.

WhatWeb

Information Gathering

Web technology fingerprinter that identifies frameworks, CMSs, and servers.

Nikto

Web Application

Web server scanner for misconfigurations, outdated software, and dangerous files.

Nmap

Information Gathering

Network scanner for discovering open web ports and services before fuzzing.

Subfinder

Information Gathering

Fast passive subdomain enumeration tool for mapping a target's domains.

Amass

Information Gathering

In-depth attack-surface mapping and subdomain enumeration framework.

Frequently Asked Questions

What is the FFUF tool?

The FFUF tool (Fuzz Faster U Fool) is an extremely fast, open-source web fuzzer written in the Go programming language. It uses the FUZZ keyword to inject wordlist entries into HTTP requests, making it ideal for directory brute forcing, file discovery, parameter fuzzing, virtual host discovery, and REST API fuzzing.

What is FFUF used for?

FFUF is used for directory brute forcing, hidden file discovery, parameter fuzzing, virtual host discovery, and REST API fuzzing. Security professionals use it during penetration testing and bug bounty recon to find hidden endpoints, admin panels, and undocumented API routes.

How does FFUF work?

FFUF works by taking a wordlist (-w) and a target URL (-u) containing the FUZZ keyword. It sends one HTTP request per word, replacing FUZZ each time, and records the status code, response size, word count, and line count. Filters like -mc and -fs then hide the noise so only real discoveries remain.

What programming language is FFUF written in?

FFUF is written in Go (also called Golang). Go compiles to a fast, self-contained native binary and has excellent built-in concurrency, which is exactly why FFUF is one of the fastest web fuzzers available.

Is FFUF free?

Yes. FFUF is 100% free and open source, released under the permissive MIT License. You can download, use, inspect, and modify it at no cost from the official GitHub repository.

Is FFUF legal to use?

FFUF itself is legal software. However, fuzzing a website or server without the owner's explicit written permission may be illegal under laws like the CFAA. Always obtain authorization, and practice on your own labs, DVWA, HackTheBox, or TryHackMe.

Can beginners use FFUF?

Yes. Although FFUF is powerful, the core concept is simple: put FUZZ where you want to test and give it a wordlist. Beginners can run a full directory scan with a single command. Start with our beginner-friendly FFUF guide and practice in the Terminal Sandbox.

Is FFUF good for bug bounty?

Yes, FFUF is one of the most popular tools in bug bounty hunting. Its speed and flexibility make it perfect for reconnaissance — quickly mapping a target's hidden directories, files, and API endpoints to expand the attack surface.

What is the difference between FFUF and Gobuster?

Both are Go-based content-discovery tools. Gobuster uses simple dedicated modes (dir, dns, vhost) and is beginner-friendly. FFUF is a general-purpose fuzzer with far richer filtering (size, words, lines, regex) and can fuzz headers, cookies, and POST data — not just URL paths. Use Gobuster for quick scans, FFUF for complex fuzzing.

What is the difference between FFUF and Dirsearch?

Dirsearch is a Python-based directory brute forcer with sensible defaults and tidy output, but it is generally slower than FFUF. FFUF is written in Go, is much faster, and is more flexible because it can fuzz any part of a request. Choose Dirsearch for simple directory scans, FFUF when you need speed and versatility.

What is the difference between FFUF and Feroxbuster?

Feroxbuster is a fast Rust-based tool focused on automatic recursive directory discovery. FFUF can also recurse but is broader — it handles parameters, headers, vhosts, and APIs in addition to directories. Use Feroxbuster for aggressive recursion, FFUF as an all-round fuzzer.

Can FFUF scan APIs?

Yes. FFUF is excellent for REST API fuzzing. Point FUZZ at an API path (e.g. /api/FUZZ), match on 200, 401, and 403 codes to reveal protected endpoints, fuzz version prefixes like /v1 and /v2, and inject FUZZ into query parameters to find hidden API inputs.

Can FFUF find hidden directories?

Yes, finding hidden directories is FFUF's primary use case. By fuzzing the URL path (http://target/FUZZ) with a directory wordlist, FFUF discovers folders and files that are not linked anywhere on the site, including admin panels and backups.

How do I install FFUF?

On Kali Linux, Ubuntu, or Debian run 'sudo apt install ffuf'. For the latest version install Go and run 'go install github.com/ffuf/ffuf/v2@latest'. On Windows and macOS, download a pre-built binary from the official GitHub releases page, or use the official Docker image. Verify with 'ffuf -V'.

How fast is FFUF compared to other tools?

FFUF is one of the fastest web fuzzers available, capable of tens of thousands of requests per second. Its Go-based, multi-threaded design typically outperforms Python-based alternatives like Dirsearch and Wfuzz.

What is the FUZZ keyword in FFUF?

FUZZ is a placeholder keyword. Wherever you write FUZZ — in the URL, a header, a cookie, or POST data — FFUF replaces it with each entry from your wordlist. You can even use multiple keywords (FUZZ, FUZ2Z) to fuzz several positions at once.

What wordlists work best with FFUF?

FFUF works with any plain-text wordlist. The community standard is SecLists, along with the built-in dirb and dirbuster lists on Kali. Use directory lists for paths, parameter lists for query fuzzing, and DNS/subdomain lists for virtual host discovery.

How do I filter FFUF results?

Use matchers and filters: -mc matches status codes (e.g. -mc 200,301), -fs filters by response size, -fc filters out status codes, -fw filters by word count, and -fr filters by regex. Good filtering is the key to clean, readable output.

How do I fix '429 Too Many Requests' in FFUF?

A 429 means you are fuzzing too fast and hitting rate limits or a WAF. Slow down with '-rate 50', add a delay with '-p 0.1', and reduce threads with '-t 20'. Responsible pacing also prevents accidental denial of service.

How do I ignore SSL/TLS errors in FFUF?

Add the -k flag to skip TLS certificate verification, which is useful for targets with self-signed or invalid certificates in authorized test environments: 'ffuf -k -w list.txt -u https://target/FUZZ'.

How do I save FFUF results to a file?

Use -o with -of to choose a format: '-o results.json -of json' for JSON, or -of csv / html for other formats. Saving output is essential for automation and for keeping an audit trail during engagements.

Does FFUF work on Windows and macOS?

Yes. FFUF is cross-platform. On Windows, download ffuf.exe from GitHub releases and run it from PowerShell. On macOS, use the Go install method or a Homebrew formula. The same commands and flags work across Linux, Windows, and macOS.

What is the difference between FFUF and Wfuzz?

Wfuzz is a flexible Python-based fuzzer with strong payload processing and encoding features, but it is slower. FFUF is Go-based and much faster with cleaner output. Use Wfuzz for complex payload transformations, FFUF for speed and everyday fuzzing.

Who created FFUF and when?

FFUF was created in 2019 by security researcher Joel Henrikkson. It is actively maintained, community-driven, and has become an industry standard for web fuzzing on Kali Linux and beyond.

Tags

#web-application#fuzzing#content-discovery#directory-bruteforce#vhost-discovery#api-fuzzing#bug-bounty#kali-linux

Output Explanation

The console prints each successful match, detailing the full path, HTTP status code, response size, and line count. Distinctive colors help separate successful finds from noise.

Ethical Usage Notice

This tool is designed for authorized security testing, educational purposes, and legitimate network administration only. Unauthorized access to computer systems is illegal.