Suggestions appear as you type. Use the up and down arrows to choose one and Enter to open it.

AFL++ review

A broad, free fuzzer for native code, binaries, libraries, and file-processing tools.

8.7/10Editor score
AFL++8.7 Visit AFL++

Reviewed by iTechGuides Editors · Editorial team · Updated Oct 2026

AFL++ is an open-source, coverage-guided fuzzer for developers and security researchers testing programs and libraries. It targets file-processing programs, command-line tools, native libraries, and selected binary targets. Supported target types include source-code targets, binary-only targets, file inputs, stdin inputs, Android native libraries, and Win32 PE binaries. AFL++ covers Linux, macOS, Android, and Windows, with language support for C, C++, Python, and Rust.

Its main strength is breadth within native and binary fuzzing. Source targets can use LLVM or GCC-plugin instrumentation, while QEMU, FRIDA, Unicorn, and related modes support binary-only targets. Persistent execution and in-memory test-case delivery can support faster target cycles, while custom mutators in C/C++ and Python extend input-generation workflows. User-supplied and automatically generated dictionaries add another way to shape mutation campaigns. Parallel fuzzing with corpus synchronization supports distributed work across fuzzing processes.

AFL++ also covers the operational parts of a fuzzing workflow: it collects crashes and hangs, supports crash exploration and test-case minimization, and provides a Docker image for installation and execution. Its CI/CD support fits teams that want fuzzing in development workflows, while local execution makes it a tool for environments where users manage the runtime themselves. Choose AFL++ for a free, open-source option with wide instrumentation and target coverage. An alternative may fit better when the priority is a hosted service, a managed interface, or testing approaches beyond mutation-focused native and binary targets.

AFL++ pros and cons

  • Where it wins
    • Supports source and binary-only fuzzing across four platforms
    • Combines persistent execution, custom mutators, and parallel fuzzing
    • Includes crash triage, minimization, dictionaries, and CI support
  • Where it doesn't
    • Local execution puts setup and operations on the user
    • Its primary focus is native programs and selected binary targets
    • Mutation-based input generation may not suit every testing strategy

AFL++ fact sheet, pricing and score →

Advertiser disclosure: iTechGuides is reader-supported. Vendors can pay for top positions in our rankings and for a place on other products' pages, and we may earn a commission when you click some links. Bought places stand at the number bought; this page and our disclosure say so. Paying vendors may get a fuller, more detailed review from our editors, and that review can change their score. How we rank.

Last updated · How we research and update