Skip to content
SPECIFICTION
Get listed

CFR

benf.org

Free plan WindowsmacOSLinuxAPISelf-hosted
Visit benf.org
Spec score 8.2 #10 of 73 in Reverse Engineering Tools

What it is

CFR is a free Java decompiler that reconstructs Java source from Java class files. It can process individual named classes, classes found on a classpath, or a whole JAR, and the command-line tool can place output in a chosen directory with the --outputdir option. Decompilation behavior can be adjusted through command-line options or an options file. The maker says CFR handles many features from Java 9, 12, and 14, and it can attempt class files from other JVM languages; those are rendered as Java rather than their original language. CFR is written in Java 6 and is said to run wherever Java 6 does. It is available as a downloadable JAR, through Maven, and from GitHub. The FAQ notes an API from version 0.135, and the project repository identifies the license as MIT. CFR handles bytecode rather than native code. Its maker also notes that some inputs fall into edge cases where output may be poor. There are no paid plans or usage limits stated.

Spec sheet

Purpose
CFR is a Java decompiler that converts Java class files back into Java source.Read 8 Oct 2026 · benf.org
API
The FAQ states that CFR has an API as of version 0.135.Read 8 Oct 2026 · benf.org
Support
The maker invites users to email reports of problems and directs bug reports to the GitHub issue tracker.Read 8 Oct 2026 · benf.org
License
The maker’s FAQ directs users to the project README for its license; the project repository identifies the license as MIT.Read 8 Oct 2026 · github.com
Configuration
Decompilation can be customized with command-line options or an options file.Read 8 Oct 2026 · github.com
Distribution
CFR is available as a downloadable JAR, through Maven, and from the GitHub repository.Read 8 Oct 2026 · benf.org
Java support
The maker says CFR can decompile modern Java features, including much of Java 9, 12, and 14.Read 8 Oct 2026 · benf.org
JVM languages
CFR can also attempt to turn class files from other JVM languages back into Java.Read 8 Oct 2026 · benf.org
Known limitation
The maker says CFR has edge cases and may produce poor results for some inputs.Read 8 Oct 2026 · benf.org
Output
The command-line tool can emit decompiled files to a specified output directory using --outputdir.Read 8 Oct 2026 · benf.org
Output language
For class files from other JVM languages, CFR generates Java output rather than the original language.Read 8 Oct 2026 · benf.org
Runtime
CFR is written in Java 6 and the maker says it will work anywhere Java 6 runs.Read 8 Oct 2026 · benf.org
Support limitation
The maker asks users not to submit class files they do not own the copyright to.Read 8 Oct 2026 · benf.org
Usage
CFR can decompile named class files or classes on a classpath, and can process an entire JAR by providing its path.Read 8 Oct 2026 · benf.org

Plans and prices

Free Free No paid plans or usage limits stated Read 8 Oct 2026 · benf.org

Every CFR plan and price →

Strong points and limits

Strong points

  • Free, with no usage limits stated
  • Processes class files, classpaths, and JARs
  • Offers command-line and options-file customization
  • Provides an API as of version 0.135

Limits

  • Does not decompile native code
  • Other JVM languages produce Java output
  • Some edge cases may yield poor results

Who it suits

CFR suits developers who need to inspect or recover Java source from class files or JARs. It may also suit users working with other JVM-language bytecode who can use Java output.

Verdict

CFR offers a focused command-line route from Java bytecode to Java source, with JAR processing and adjustable options. It is free, but results can be imperfect for some inputs and it does not handle native code.

Where Specifiction places it

Alternatives to CFRAll alternatives →

JEB From $100/mo · Free plan 9.0 Visit