FREEDOM251

Freedom251 › Privacy Policy Generator Software

AFL++

by AFL++

Free plan AndroidLinuxMacSelf-hostedWindows

Visit AFL++ Alternatives Pricing

AFL++'s own site

What AFL++ is

AFL++ is a free, coverage-guided fuzzer for finding new execution paths in target programs. It mutates inputs and checks whether they lead to a path not previously reached in the target binary. Its afl-cc compiler supports LTO, LLVM, and GCC_PLUGIN instrumentation. Other listed techniques include collision-free coverage, AFLfast++ power schedules, MOpt mutators, laf-intel, and redqueen. Documentation covers source-available programs, binary-only targets, network services, and GUI programs, with build options for source-only, binary-only, or combined distributions. A Docker image is available for x86_64 and arm64. For Linux installation, the guide recommends LLVM 18 or newer and sets LLVM 14 as the minimum. macOS builds are documented for x86_64 and arm64, but afl-clang-lto, afl-gcc-fast, and qemu_mode do not work there. Fuzzing may strain hardware, consume substantial memory or disk, and generate heavy filesystem I/O. The stable branch is the stability-focused default; dev is bleeding edge and may fail to compile or contain bugs. The combined afl-fuzz program is AGPL-licensed, with source-offer requirements for modified versions offered as network services.

Who it suits

AFL++ is suited to developers and security practitioners fuzzing source-available or binary-only programs, network services, and GUI applications. It expects familiarity with build and instrumentation choices.

What it does well

  • Supports source-available and binary-only targets.
  • Documents fuzzing for network services and GUI programs.
  • Docker image supports x86_64 and arm64.
  • Coverage-guided mutation checks for new execution paths.

What to know first

  • Fuzzing can consume substantial memory or disk.
  • Some listed modes do not work on macOS.
  • Linux installation recommends LLVM 18 or newer.
  • Modified network services have AGPL source-offer obligations.

Limits

The free AGPL-3.0-or-later plan requires modified versions of the combined afl-fuzz program offered as network services to provide users the corresponding source. macOS does not support afl-clang-lto, afl-gcc-fast, or qemu_mode.

Plans

PlanBilled and limitsPrice
AGPL-3.0-or-laterUse, study, modify, and distribute under AGPL terms · modified network services must offer corresponding sourceFree
Commercial licenseDonation to EFF or CCC; license lasts one year and can be renewed by donating again · For organizations that cannot or do not want to comply with AGPL · proof of donation must be emailed€20,000 a year

As github.com lists them, read 28 Sept 2026. The maker's own page has the final word.

Getting started

  1. Open the AFL++ project page on GitHub.
  2. Choose the stable branch for the stability-focused default, or dev for the bleeding-edge channel.
  3. On Linux, install LLVM 18 or newer; LLVM 14 is the documented minimum.
  4. Choose source-only, binary-only, or combined distribution build targets for the target program.
  5. Alternatively, use the Docker image for x86_64 or arm64 and mount target source at /src as in the example command.

Overview

AFL++ is a local, coverage-guided fuzzer for developers and security teams looking to expose paths their ordinary tests may miss. Its range of instrumentation and target types is a strong fit for teams prepared to manage the runtime environment; it is less suitable when resource use or AGPL obligations are hard constraints.

It mutates inputs and checks whether execution reaches a new path in the target binary. Documentation covers source-available programs, binary-only targets, network services, and GUI programs, with build targets for source-only fuzzing, binary-only fuzzing, or both.

Key features

Instrumentation and mutation

The central afl-cc compiler supports LTO, LLVM, and GCC_PLUGIN instrumentation. AFL++ also includes collision-free coverage, AFLfast++ power schedules, MOpt mutators, laf-intel, and redqueen. This breadth gives teams options for instrumentation and mutation rather than locking them into one mode. Coverage guidance, crash triage, and CI/CD support are also included.

Targets and deployment

A Docker image supports x86_64 and arm64; the example command mounts target source at /src. That offers a container-based route for local fuzzing, not a managed execution service. Fuzzing can strain hardware, consume substantial memory or disk, and generate heavy filesystem I/O, so sustained runs need an environment able to absorb those costs.

Release channels and support

The stable branch is the stability-focused default. The dev branch is bleeding edge and may fail to compile or contain bugs, making it a riskier choice for workflows that depend on predictable builds. For defects, maintainers direct users to GitHub issues, with the FAQ, best practices, and Fuzzing Zulip server as additional support resources.

Pricing

AFL++ is free to use, study, modify, and distribute under the AGPL-3.0-or-later plan at no cost. The important trade-off is licensing: modified versions offered as network services must provide users the corresponding source. The combined afl-fuzz program is AGPL as a whole. Individual source files marked Apache-2.0 may be reused under that license, while bundled third-party components retain their own licenses.

Organizations that cannot or do not want to comply with AGPL can choose the Commercial license for €20,000 a year. It lasts one year and can be renewed by donating again; the donation is billed to EFF or CCC, and proof of donation must be emailed. This is a substantial annual commitment, but it addresses the stated licensing constraint.

Platforms

AFL++ supports Linux, macOS, Windows, Android, and self-hosted use. On Linux, the installation guide recommends LLVM 18 or newer and sets LLVM 14 as the minimum. macOS builds are documented for x86_64 and arm64, but afl-clang-lto, afl-gcc-fast, and qemu_mode do not work there. That makes macOS a more limited option for workflows relying on those modes.

Who it's for

AFL++ suits teams working with C, C++, Python, or Rust targets that want local mutation-based fuzzing and can configure and provision their own execution environment. Its range of documented target types is valuable for mixed estates. Teams should look elsewhere if they need a hosted fuzzing service, cannot accommodate high memory, disk, or I/O demands, or cannot accept the AGPL terms or commercial-license cost.

Pros and cons

  • Pros: Multiple compiler instrumentation modes and mutation features give teams flexibility in how they pursue coverage.
  • Pros: Documentation covers source, binary-only, network, and GUI targets, with build options for source-only, binary-only, or combined distributions.
  • Pros: Free use under AGPL includes study, modification, and distribution rights.
  • Cons: Fuzzing can place heavy demands on hardware, memory, disk, and filesystem I/O.
  • Cons: Three named modes do not work on macOS, narrowing the choices for Mac-based workflows.
  • Cons: Modified network services must offer corresponding source under the AGPL; the commercial license costs €20,000 a year.

Alternatives

For stream-processing work rather than fuzz testing, Apache Beam offers an open-source programming model, with execution costs depending on the chosen runner and infrastructure. Apache NiFi is a free download under Apache License 2.0. Apache Storm is free and open source under Apache License 2.0. Arroyo is a self-hosted, single-binary engine under Apache 2.0. Feldera offers an open-source edition with a single node and container, full SQL support, all connectors, datasets larger than memory, and community support. Kafka Streams is free to download and has no formal or commercial support. Timeplus offers Proton as an open-source streaming SQL engine in a single binary under 500MB. Apache Spark is an open-source distributed data analytics engine with download, PyPI, Maven Central, and Docker options. These are stream-processing or data-analytics choices, not direct substitutes for AFL++'s fuzzing workflow.

Browse Stream Processing Software, Fuzz Testing Software, or Game Mod Managers to explore related categories.

Verdict

Choose AFL++ if you need a flexible local fuzzer for varied target types and can handle its resource demands and licensing terms. Its instrumentation and mutation breadth is the main reason to choose it; macOS mode gaps, substantial system load, and AGPL obligations are sound reasons to look elsewhere.

Verdict

AFL++ offers multiple instrumentation modes and target types, with free use under AGPL terms. Consider its hardware demands, macOS limitations, and license obligations before choosing a workflow.

Questions

Is AFL++ free?

Yes. The AGPL-3.0-or-later plan is free. A commercial license is also listed at €20,000 a year, with a one-year term that can be renewed by donating again.

What does the AGPL license require for network services?

Modified versions of the combined afl-fuzz program offered as network services must offer users the corresponding source. Individual files marked Apache-2.0 may be reused under that license, and bundled third-party components keep their own licenses.

Which platforms are listed?

AFL++ lists Android, Linux, macOS, self-hosted, and Windows. Its macOS guide covers x86_64 and arm64 builds, but says afl-clang-lto, afl-gcc-fast, and qemu_mode do not work there.

What LLVM version does AFL++ require?

The Linux installation guide recommends LLVM 18 or newer and gives LLVM 14 as the minimum.

What kinds of programs can it fuzz?

Its documentation covers source-available programs, binary-only targets, network services, and GUI programs. Build targets include source-only, binary-only, and combined distribution builds.

Where can users get help?

The maintainers direct users to GitHub issues for defects, the FAQ and best practices, and the Fuzzing Zulip server.

Facts from AFL++'s own pages

Build modes
Build targets include source-only fuzzing, binary-only fuzzing, or a distribution build with both. · github.com, 28 Sept 2026
Compiler instrumentation
Its central afl-cc compiler supports LTO, LLVM, and GCC_PLUGIN instrumentation modes. · github.com, 28 Sept 2026
Container image
The project provides a Docker image for x86_64 and arm64, with the target source mounted at /src in its example command. · github.com, 28 Sept 2026
Founded
2019 · github.com, 28 Sept 2026
Free plan
Yes · github.com, 20 Sept 2026
Hardware and storage limits
The project warns that fuzzing can strain hardware, consume large amounts of memory or disk, and generate heavy filesystem I/O. · github.com, 28 Sept 2026
License exceptions
Individual source files marked Apache-2.0 may be reused under that license, while bundled third-party components retain their own licenses. · github.com, 28 Sept 2026
License obligations
The combined afl-fuzz program is AGPL as a whole, and modified versions offered as network services must offer users the corresponding source. · github.com, 28 Sept 2026
Linux requirements
The installation guide recommends LLVM 18 or newer and gives LLVM 14 as the minimum. · github.com, 28 Sept 2026
macOS support
The guide documents building on macOS x86_64 and arm64, but says afl-clang-lto, afl-gcc-fast, and qemu_mode do not work there. · github.com, 28 Sept 2026
Mutation and coverage
The project lists collision-free coverage, AFLfast++ power schedules, MOpt mutators, laf-intel, and redqueen among its features. · github.com, 28 Sept 2026
Purpose
AFL++ is a coverage-guided fuzzer that mutates input and checks whether it reaches a new path in the target binary. · github.com, 28 Sept 2026
Release channels
The stable branch is described as the stability-focused default, while dev is bleeding edge and may fail to compile or contain bugs. · github.com, 28 Sept 2026
Support
The maintainers direct users to GitHub issues for AFL++ defects, the FAQ and best practices, and the Fuzzing Zulip server. · github.com, 28 Sept 2026
Target types
The documentation covers fuzzing source-available programs, binary-only targets, network services, and GUI programs. · github.com, 28 Sept 2026

Where AFL++ stands on Freedom251

Look at these too