CheckOps
Fuzzilli
Fuzzilli is Google Project Zero's Apache-2.0 coverage-guided fuzzer for JavaScript engines, mutating a custom intermediate language, FuzzIL, that is lifted to JavaScript.
Latest public signals
Not refreshed yet. Refresh reads the public site and, when the entry has a GitHub repository, the latest release.
Introduction
Fuzzilli is a coverage-guided fuzzer for dynamic language interpreters based on a custom intermediate language, FuzzIL, which can be mutated and translated to JavaScript.
Targets include patched builds of major JavaScript engines listed in its Targets directory; you compile the engine with coverage instrumentation and run swift run FuzzilliCli --profile=<engine> /path/to/jsshell. Distributed fuzzing spreads work across machines. Tagged releases are old (2023), but the repository has commits as recent as November 2026.
In the quality loop Fuzzilli targets JIT and interpreter bugs.
The source code is at googleprojectzero/fuzzilli on GitHub under the Apache-2.0 licence, with about 2,400 stars; the most recent commit was on 11 November 2026.
Features
- FuzzIL: Semantic-aware mutations.
- Coverage guidance: Instrumented engines.
- Engine profiles: Several JS engines.
- Distributed mode: Scale across machines.
- Corpus import: Seed from JS samples.
- Swift implementation: Built with Swift.
Pros
- Specialised: Designed for JS engines.
- Free to use: Open source under the Apache-2.0 licence, so the core tool costs nothing to use.
- Actively maintained: The repository had commits as recent as 11 November 2026.
Cons
- Narrow scope: Only for interpreter developers.
- Patching required: Engines need patches.
- Old tagged releases: Use the main branch.
Usage and Links (Example)
swift run -c release FuzzilliCli --profile=v8 /path/to/d8
Resources:
Pricing
Fuzzilli is free and open source under the Apache-2.0 licence.
Recommended for?
- JavaScript engine and runtime teams.
Conclusion
Fuzzilli is the leading open fuzzer for JavaScript engines.
Use main-branch builds.
On CheckOps, Fuzzilli is filed under the Security testing stage. Related tools listed here include libFuzzer, AFL++, honggfuzz, LibAFL, OSS-Fuzz and ClusterFuzzLite. A short trial on a real project, with your own code, data and pipeline, is usually the fastest way to choose between them, because fit matters more than feature lists. Facts here come from the official site, documentation and repository, checked on 11 November 2026.
Alternatives
Other tools on CheckOps that cover similar ground. Open a page, or compare one with Fuzzilli side by side.
LlibFuzzerlibFuzzer is LLVM's in-process, coverage-guided, evolutionary fuzzing engine, built into Clang via -fsanitize=fuzzer and used with sanitizers to find memory-safety and logic bugs in C and C++.Compare with Fuzzilli
AAFL++AFL++ is the community-maintained successor to Google's AFL: a coverage-guided fuzzer with faster execution, better mutations and instrumentation, custom mutators and modes for binaries, licensed AGPL-3.0-or-later.Compare with Fuzzilli
Hhonggfuzzhonggfuzz is Google's Apache-2.0 security-oriented fuzzer with evolutionary, feedback-driven fuzzing based on software and hardware code coverage.Compare with Fuzzilli
LLibAFLLibAFL is a Rust library of reusable fuzzer components from the AFL++ team, for building fast, scalable, custom fuzzers across platforms and targets.Compare with Fuzzilli
OOSS-FuzzOSS-Fuzz is Google's free continuous fuzzing service for critical open-source projects, running libFuzzer, AFL++ and other engines at scale on ClusterFuzz.Compare with Fuzzilli
CClusterFuzzLiteClusterFuzzLite is Google's Apache-2.0 continuous fuzzing solution that runs in CI such as GitHub Actions, fuzzing pull requests and running batch fuzzing with coverage reports.Compare with Fuzzilli