Freedom251 › Reverse Engineering Tools
CFR

What CFR is
CFR is a Java decompiler that converts Java class files into Java source. It can work on named class files, classes found on a classpath, or an entire JAR provided by path. The command-line tool can write output to a chosen directory with `--outputdir`, and users can adjust decompilation through command-line options or an options file. Its maker says it handles modern Java features, including much of Java 9, 12, and 14.
CFR can also attempt to decompile class files from other JVM languages, but the resulting code is Java rather than the original language. It is written in Java 6 and is described as running anywhere Java 6 runs. Distribution options include a downloadable JAR, Maven, and the GitHub repository. The FAQ says an API is available as of version 0.135, and the repository identifies the license as MIT. CFR is free, with no paid plans or usage limits stated. It handles bytecode rather than native code, and its maker notes that some edge cases can yield poor results.
Who it suits
CFR suits developers who need to inspect Java bytecode by decompiling class files or JARs. It may also help with class files from other JVM languages when Java output is acceptable.
What it does well
- Handles class files, classpaths, and JARs
- Output can be directed to a chosen directory
- Supports command-line options and an options file
- Free, with an API available as of version 0.135
What to know first
- Does not decompile native code
- Other JVM languages are output as Java
- Some edge cases can produce poor results
Plans
| Plan | Billed and limits | Price |
|---|---|---|
| Free | No paid plans or usage limits stated | Free |
As benf.org lists them, read 8 Oct 2026. The maker's own page has the final word.
Getting started
- Download the JAR, obtain CFR through Maven, or get it from the GitHub repository.
- Run CFR on named class files, classes on a classpath, or provide a JAR path.
- Use `--outputdir` to choose where decompiled files are written.
- Adjust the decompilation with command-line options or an options file.
CFR is a focused Java bytecode decompiler for developers, analysts, and teams that need local, scriptable inspection of class files and JARs. It suits workflows where free distribution, broad Java-version support, and automation matter more than a graphical reverse-engineering suite. The main trade-off is that difficult inputs can produce poor results, and non-Java JVM code is reconstructed as Java rather than its original language.
Overview
CFR converts Java class files back into Java source and accepts several practical input forms: named class files, classes found on a classpath, or an entire JAR supplied by path. Its command-line interface can write decompiled files to a chosen directory with --outputdir, making repeatable batch processing straightforward for build, analysis, and maintenance workflows.
The maker says CFR can decompile modern Java features, including much of Java 9, 12, and 14. It can also attempt class files produced by other JVM languages. That broadens its usefulness when a JVM project’s original source is unavailable, but the output is always Java, so it will not preserve Kotlin, Scala, or another language’s syntax and idioms. CFR also has edge cases in which the generated source may be poor; it is therefore a tool for understanding and investigation, not a guarantee of faithful source recovery.
Key features
Configurable command-line processing
Command-line options and an options file let users tailor decompilation and keep recurring jobs consistent. This is valuable for scripts and team workflows that need the same settings applied across many files, while users seeking visual navigation will find the command-line focus less convenient.
Java integration
An API has been available since version 0.135, so Java applications can invoke CFR as part of their own processing rather than launching a separate manual operation. The downloadable JAR, Maven distribution, and GitHub repository provide practical installation and integration routes.
Broad runtime compatibility
CFR is written in Java 6 and the maker says it works anywhere Java 6 runs. That can simplify deployment across older or mixed environments, although the decompiler’s output quality still depends on the input and its edge cases.
Pricing
| Plan | Price | What it includes |
|---|---|---|
| Free | free | Free use with no paid plans or usage limits stated |
There is no free trial because the product is free rather than trial-based, and there are no paid tiers, seat charges, or stated usage quotas to weigh. That makes CFR a straightforward choice for individuals and teams that can operate a command-line Java tool and do not need commercial licensing terms. The project’s repository identifies the license as MIT. For support, the maker invites problem reports by email and directs bug reports to GitHub; it also asks users not to submit class files whose copyright they do not own.
Platforms
CFR is listed for API use, Linux, macOS, self-hosted deployment, and Windows. Its Java 6 runtime basis and downloadable JAR make local or server-side execution the natural fit, while Maven and the repository support developer-managed installations.
Who it's for
CFR is best for developers inspecting third-party or legacy Java binaries, analysts processing class files in scripts, and teams that need to decompile complete JARs without licensing fees. It is less suitable for investigators who require consistently accurate recovery from every input, for users who need native-code decompilation, or for anyone expecting the original source language when analyzing non-Java JVM bytecode.
Pros and cons
- Pro: Free distribution with an MIT-identified license removes purchase and seat-cost barriers.
- Pro: It handles individual classes, classpaths, and whole JARs, with output directed to a selected directory for automation.
- Pro: Command-line options, option files, and a Java API support repeatable and embedded workflows.
- Pro: The maker targets substantial portions of Java 9, 12, and 14 while retaining Java 6 runtime compatibility.
- Con: Edge cases can yield poor decompilation, so results need review before being treated as source.
- Con: Other JVM languages are emitted as Java, which limits fidelity for language-specific maintenance.
- Con: It does not decompile native code and offers no graphical interface in the described workflow.
Alternatives
For a broader reverse-engineering environment with a free evaluation and education tier covering five decompilation architectures, consider Binary Ninja; its free plan omits API and plugin access, while Personal costs 199.00 USD once.
Boomerang is a free, open-source, BSD-licensed alternative when native-code decompilation is the priority.
Choose IDA Pro when you need professional disassembly and cloud decompilers: IDA Free includes x86-32 and x86-64 disassembly plus two cloud-based decompilers, while IDA Pro Essential costs 1099.00 USD.
JEB fits researchers, students, hobbyists, and nonprofit reverse engineers who want a free Community Edition with x86 and x86-64 decompilation; a free trial is also offered.
rev.ng is worth considering for an open-source decompilation pipeline, with commercial cloud and standalone UI versions planned.
Bytecode Viewer suits users wanting a 100% free, GPL v3 open-source option on desktop platforms.
Ghidra is a free choice for extension-based, cross-platform reverse-engineering work.
ILSpy is another free, open-source option under the MIT License.
Verdict
Choose CFR if you need a free Java decompiler that can process classes and JARs from scripts, integrate through an API, and run across common Java-capable platforms. Look elsewhere when dependable recovery from difficult binaries, original-language output, native-code analysis, or a graphical reverse-engineering suite matters more than CFR’s lightweight command-line and Java focus.
Verdict
CFR offers command-line decompilation for Java class files and JARs, with configurable output and an API. Keep in mind that non-Java JVM input becomes Java output and that some cases may not decompile well.
Questions
Is CFR free?
Yes. Its listed plan is free, and no paid plans or usage limits are stated.
What does CFR decompile?
It converts Java class files into Java source and can attempt to process class files from other JVM languages. It does not decompile native code.
Which platforms are supported?
The listed platforms are API, Linux, macOS, self-hosted, and Windows. CFR is written in Java 6 and is described as working anywhere Java 6 runs.
Can CFR process a JAR file?
Yes. Provide the JAR’s path to process it. The command-line tool can write decompiled files to a specified directory with `--outputdir`.
Is CFR open source, and what is its license?
The project repository identifies its license as MIT. CFR is available from its GitHub repository.
How can I report a problem?
The maker invites problem reports by email and directs bug reports to the GitHub issue tracker. It asks users not to submit class files whose copyright they do not own.
Facts from CFR's own pages
- API
- The FAQ states that CFR has an API as of version 0.135. · benf.org, 8 Oct 2026
- Configuration
- Decompilation can be customized with command-line options or an options file. · github.com, 8 Oct 2026
- Distribution
- CFR is available as a downloadable JAR, through Maven, and from the GitHub repository. · benf.org, 8 Oct 2026
- Java support
- The maker says CFR can decompile modern Java features, including much of Java 9, 12, and 14. · benf.org, 8 Oct 2026
- JVM languages
- CFR can also attempt to turn class files from other JVM languages back into Java. · benf.org, 8 Oct 2026
- Known limitation
- The maker says CFR has edge cases and may produce poor results for some inputs. · benf.org, 8 Oct 2026
- License
- The maker’s FAQ directs users to the project README for its license; the project repository identifies the license as MIT. · github.com, 8 Oct 2026
- Output
- The command-line tool can emit decompiled files to a specified output directory using --outputdir. · benf.org, 8 Oct 2026
- Output language
- For class files from other JVM languages, CFR generates Java output rather than the original language. · benf.org, 8 Oct 2026
- Purpose
- CFR is a Java decompiler that converts Java class files back into Java source. · benf.org, 8 Oct 2026
- Runtime
- CFR is written in Java 6 and the maker says it will work anywhere Java 6 runs. · benf.org, 8 Oct 2026
- Support
- The maker invites users to email reports of problems and directs bug reports to the GitHub issue tracker. · benf.org, 8 Oct 2026
- Support limitation
- The maker asks users not to submit class files they do not own the copyright to. · benf.org, 8 Oct 2026
- Usage
- CFR can decompile named class files or classes on a classpath, and can process an entire JAR by providing its path. · benf.org, 8 Oct 2026
Where CFR stands on Freedom251
- Reverse Engineering Tools#8 of 73
- Decompiler Software#4 of 24