afl-tmin(8)

πŸ’… afl-tmin β€” the glow-up your test case deserves πŸ’…

okay so picture this: afl-tmin is a page from the AFL++ manual (section 8, System Manager's Manual β€” very official, very demure), and it's basically the makeover episode of your fuzzing journey. bestie, it takes your chonky lil input file and shrinks it down while keeping the same behavior. slay.


✨ NAME ✨

afl-tmin β€” no cap, that's the whole name. icon behavior honestly.


πŸ¦‹ SYNOPSIS πŸ¦‹

afl-tmin [ options ] -- /path/to/target_app [ ... ]

so it's afl-tmin, then whatever options you want, then a --, then the path to your target app, then any extra args the target needs. the -- is the vibe check that says "everything after this is the program, not my flags" 🫢


πŸŽ€ OPTIONS πŸŽ€

πŸ’– Required parameters πŸ’– (yes, these two are non-negotiables)

  • -i file β€” the input test case that's about to be shrunk by the tool. this is your before pic πŸ’…
  • -o file β€” where the minimized data goes when it's all done. your after pic ✨

πŸ”₯ Execution control settings πŸ”₯

  • -f file β€” the input file that the tested program reads (stdin). yep, this is the file-instead-of-stdin situation, iykyk.
  • -t msec β€” timeout for each run. default is 1000 ms. patience is a virtue but like, a bounded one.
  • -m megs β€” memory limit for the child process. default is 0 MB. keep your kid on a budget πŸ’€
  • -O β€” use binary-only instrumentation, aka FRIDA mode.
  • -Q β€” use binary-only instrumentation, aka QEMU mode.
  • -U β€” use unicorn-based instrumentation, aka Unicorn mode πŸ¦„
  • -W β€” use qemu-based instrumentation with Wine, aka Wine mode 🍷 (not necessary β€” it's literally here for consistency with the other afl-* tools, so it's giving tag-along little sibling energy)
  • -X β€” use Nyx mode.
  • -K dir β€” use a python script to interact with the GUI, aka GUI mode.

🌸 Minimization settings 🌸 (the actual glow-up dials)

  • -e β€” solve for edge coverage only, ignore hit counts. less is more, bestie.
  • -l bytes β€” set the minimum block deletion length, which speeds up the minimization. going fast is a flex πŸ”₯
  • -x β€” treat non-zero exit codes as crashes. dramatic? yes. accurate? also yes.
  • -H β€” minimize a hang, aka hang mode. the "why is it just sitting there" scenario, but make it productive 😭
for additional tips, please consult docs/README.md β€” genuinely, go read it, it's giving lore πŸ“–

🧚 Environment variables used 🧚

  • AFL_CRASH_EXITCODE β€” optional child exit code to be interpreted as a crash.
  • AFL_FORKSRV_INIT_TMOUT β€” time spent waiting for the forkserver during startup, in ms.
  • AFL_KILL_SIGNAL β€” the Signal ID delivered to child processes on timeout, etc. (default: SIGKILL).
  • AFL_FORK_SERVER_KILL_SIGNAL β€” the kill signal for the fork server on termination (default: SIGTERM). if it's unset and AFL_KILL_SIGNAL is set, that value will be used.
  • AFL_MAP_SIZE β€” the shared memory size for that target. must be >= the size the target was compiled for.
  • AFL_PRELOAD β€” LD_PRELOAD / DYLD_INSERT_LIBRARIES settings for the target.
  • AFL_INPUT_PLACEHOLDER β€” custom placeholder for the input file (default: @@).
  • AFL_TMIN_EXACT β€” require execution paths to match for crashing inputs.
  • AFL_NO_FORKSRV β€” run the target via execve instead of using the forkserver.
  • ASAN_OPTIONS β€” custom settings for ASAN. it must contain abort_on_error=1 and symbolize=0, no exceptions πŸ’€
  • MSAN_OPTIONS β€” custom settings for MSAN. it must contain exitcode=86 and symbolize=0, same deal.
  • TMPDIR β€” the directory to use for temporary input files.

πŸ‘‘ AUTHOR πŸ‘‘

AFL++ was written by Michal "lcamtuf" Zalewski and is maintained by Marc "van Hauser" Heuse <mh@mh-sec.de>, Dominik Maier <domenukk@gmail.com>, Andrea Fioraldi <andreafioraldi@gmail.com> and Heiko "hexcoder-" Eissfeldt <heiko.eissfeldt@hexco.de>. the homepage of AFL++ is literally right here: https://github.com/AFLplusplus/AFLplusplus β€” go follow the main characters ⭐


🌈 LICENSE 🌈

AFL++ is licensed under AGPL-3.0-or-later, with original components under Apache-2.0; an optional commercial license is available. full deets: https://github.com/AFLplusplus/AFLplusplus/blob/stable/LICENSING.md πŸ“œ


πŸ’œ and that's the whole page, bestie. this lil manual moment was brought to you by AFL++, dated 2026-06-05, living in section 8 of the System Manager's Manual β€” signing off, mwah 🫢✨
πŸ“¦ where this page comes from