Skip to content
SPECIFICTION
Get listed

cargo-fuzz vs Fuzzilli

cargo-fuzz

github.com

Fuzzilli

github.com

Side by side

Figurecargo-fuzzFuzzilli
Price fromFreeFree
Free planYesYes
Free trial——
Open source——
WindowsYes—
macOSYesYes
LinuxYesYes
Self-hosted—Yes
Plans published11
Spec score · Fuzz Testing Software8.5 (#5)8.4 (#6)
Purposecargo-fuzz is a cargo subcommand for fuzzing with libFuzzer.Fuzzilli is a coverage-guided fuzzer for dynamic language interpreters that mutates programs in FuzzIL and translates them to JavaScript.

Plans

cargo-fuzz

  • cargo-fuzzFree

cargo-fuzz pricing →

Fuzzilli

  • FuzzilliFree

Fuzzilli pricing →

In their own words

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

Fuzzilli

Fuzzilli is a free, open-source, coverage-guided fuzzer for dynamic language interpreters. It represents test programs in FuzzIL, mutates them, and translates them to JavaScript for execution. Its mutators can change data flow or operation parameters, generate or splice code, and combine corpus programs. Components include a mutation fuzzer, script runner, corpus, environment, minimizer, evaluator, and lifter. A target engine runs repeated scripts in a read-eval-print-reset loop, resetting between cases; multiple instances can synchronize within a process or across machines over TCP. Listed target directories include JavaScriptCore, JerryScript, QuickJS, QtJS, Serenity, SpiderMonkey, V8, XS, Duktape, and njs. Setup requires compiling a supported engine with coverage instrumentation using clang 4.0 or later, then building Fuzzilli with Swift Package Manager. Docker and Google Compute Engine tooling are provided. The project supports Linux, macOS, and self-hosted use and identifies its license as Apache-2.0. Its repository says it is not an officially supported Google product. Contributions require a Contributor License Agreement and are reviewed through GitHub pull requests.

Visit github.com