Skip to content
SPECIFICTION
Get listed

AFL++ vs cargo-fuzz

AFL++

github.com

cargo-fuzz

github.com

Side by side

FigureAFL++cargo-fuzz
Price from€1,666.67/moFree
Free planYesYes
Free trial——
Open source——
WindowsYesYes
macOSYesYes
LinuxYesYes
AndroidYes—
Self-hostedYes—
Plans published21
Spec score · Fuzz Testing Software8.9 (#1)8.5 (#5)
PurposeAFL++ is a coverage-guided fuzzer that mutates input and checks whether it reaches a new path in the target binary.cargo-fuzz is a cargo subcommand for fuzzing with libFuzzer.

Plans

AFL++

  • AGPL-3.0-or-laterFree
  • Commercial license€20,000 a year

AFL++ pricing →

cargo-fuzz

  • cargo-fuzzFree

cargo-fuzz pricing →

In their own words

AFL++

AFL++ is a coverage-guided fuzzer that changes input and checks whether a target binary reaches a new execution path. Its afl-cc compiler supports LTO, LLVM and GCC_PLUGIN instrumentation. The project also lists collision-free coverage, AFLfast++ power schedules, MOpt mutators, laf-intel and redqueen. Documentation covers source-available software, binary-only targets, network services and GUI programs, with build options for source-only, binary-only or combined distributions. A Docker image supports x86_64 and arm64; its example mounts target source at /src. On Linux, the installation guide recommends LLVM 18 or newer and gives LLVM 14 as the minimum. macOS build guidance covers x86_64 and arm64, but afl-clang-lto, afl-gcc-fast and qemu_mode do not work there. Fuzzing can strain hardware, consume substantial memory or disk, and create heavy filesystem activity. AFL++ is available free under AGPL terms; modified versions offered as network services must provide users the corresponding source. A commercial license is listed at €20,000 a year.

Visit github.com

cargo-fuzz

cargo-fuzz is a Cargo subcommand for fuzzing Rust code. It invokes libFuzzer through the libfuzzer-sys crate rather than acting as a fuzzer itself. Start a crate with `cargo fuzz init`, add a target with `cargo fuzz add `, then use `cargo fuzz run ` to search for bugs. The tool can reduce a failing input with `cargo fuzz tmin` or trim a corpus with `cargo fuzz cmin`; `cargo fuzz coverage` generates source-based coverage information in version 0.10.0 or newer. Documentation also covers structure-aware fuzzing and Cargo feature options, plus a GitHub Actions workflow for building and running targets in CI. It supports Linux, macOS and Windows, with documented systems including x86-64 Linux, x86-64 and Apple-Silicon macOS, and Windows with LLVM sanitizer support. Windows programs can also be fuzzed with MSVC AddressSanitizer. Installation is documented as `cargo install cargo-fuzz`. It requires nightly Rust and a C++11-capable compiler. The project is free and distributed under the MIT and Apache License 2.0.

Visit github.com