Update February 2016:

www.javadecompilers.com lists JAD as being:

the most popular Java decompiler, but primarily of this age only. Written in C++, so very fast.
Outdated, unsupported and does not decompile correctly Java 5 and later

So your mileage may vary with recent jdk (7, 8).

The same site list other tools.

And javadecompiler, as noted by Salvador Valencia in the comments (Sept 2017), offers a SaaS where you upload the .class file to the cloud and it returns you the decompiled code.


Original answer: Oct. 2008

  • The final release of JSR 176, defining the major features of J2SE 5.0 (Java SE 5), has been published on September 30, 2004.
  • The lastest Java version supported by JAD, the famous Java decompiler written by Mr. Pavel Kouznetsov, is JDK 1.3.
  • Most of the Java decompilers downloadable today from the Internet, such as “DJ Java Decompiler” or “Cavaj Java Decompiler”, are powered by JAD: they can not display Java 5 sources.

Java Decompiler (Yet another Fast Java decompiler) has:

  • Explicit support for decompiling and analyzing Java 5+ “.class” files.
  • A nice GUI:

It works with compilers from JDK 1.1.8 up to JDK 1.7.0, and others (Jikes, JRockit, etc.).

It features an online live demo version that is actually fully functional! You can just drop a jar file on the page and see the decompiled source code without installing anything.

Answer from VonC on Stack Overflow
🌐
Homebrew
formulae.brew.sh › formula › cfr-decompiler
cfr-decompiler — Homebrew Formulae
brew install cfr-decompiler · Yet Another Java Decompiler · https://www.benf.org/other/cfr/ License: MIT · Formula JSON API: /api/formula/cfr-decompiler.json · Formula code: cfr-decompiler.rb on GitHub ·
🌐
GitHub
github.com › leibnitz27 › cfr
GitHub - leibnitz27/cfr: This is the public repository for the CFR Java decompiler
MyClass.options An optional options file customizing decompilation. MyClass.expected.summary Contains the expected summary reported by the CFR API.
Starred by 2.3K users
Forked by 302 users
Languages   Java
🌐
eikendev
eiken.dev › blog › 2021 › 02 › how-to-break-your-jar-in-2021-decompilation-guide-for-jars-and-apks
How to Break Your JAR in 2021 - Decompilation Guide for JARs and APKs | eikendev
February 26, 2021 - The invocation of Fernflower is similar to that of CFR. Among the decompilers described here, this is the only one that outputs the generated .java files in a JAR file. You can easily extract the source files using unzip. Remember Enjarify from above? The very same author is also the developer of a decompiler named Krakatau. In contrast to the other projects, this one is written in Python...
🌐
Benf
benf.org › other › cfr
CFR - yet another java decompiler.
CFR is a JVM bytecode decompiler - it will decompile modern Java features (including Java 13) but is written entirely in Java 6, so will work anywhere! - It'll even make a decent go of turning class files from other JVM languages (eg Kotlin, Scala, Groovy) back into Java!
🌐
AlternativeTo
alternativeto.net › software › cfr
CFR Alternatives: Top 10 Decompilers & Similar Apps | AlternativeTo
JavaDecompilers.com is the most popular Web-based alternative to CFR. JavaDecompilers.com is Free and ProprietaryCFR is Free and Open Source ... Decompiler.com is online Java, Android, C# and Python decompiler.
🌐
Macuyiko
blog.macuyiko.com › post › 2015 › a-quick-look-at-java-decompilers.html
A Quick Look At Java Decompilers
This one is my favorite modern decompiler at the moment. Krakatau is interesting because it has been written in Python.
Top answer
1 of 16
588

Update February 2016:

www.javadecompilers.com lists JAD as being:

the most popular Java decompiler, but primarily of this age only. Written in C++, so very fast.
Outdated, unsupported and does not decompile correctly Java 5 and later

So your mileage may vary with recent jdk (7, 8).

The same site list other tools.

And javadecompiler, as noted by Salvador Valencia in the comments (Sept 2017), offers a SaaS where you upload the .class file to the cloud and it returns you the decompiled code.


Original answer: Oct. 2008

  • The final release of JSR 176, defining the major features of J2SE 5.0 (Java SE 5), has been published on September 30, 2004.
  • The lastest Java version supported by JAD, the famous Java decompiler written by Mr. Pavel Kouznetsov, is JDK 1.3.
  • Most of the Java decompilers downloadable today from the Internet, such as “DJ Java Decompiler” or “Cavaj Java Decompiler”, are powered by JAD: they can not display Java 5 sources.

Java Decompiler (Yet another Fast Java decompiler) has:

  • Explicit support for decompiling and analyzing Java 5+ “.class” files.
  • A nice GUI:

It works with compilers from JDK 1.1.8 up to JDK 1.7.0, and others (Jikes, JRockit, etc.).

It features an online live demo version that is actually fully functional! You can just drop a jar file on the page and see the decompiled source code without installing anything.

2 of 16
101

There are a few decompilers out there... A quick search yields:

  1. Procyon: open-source (Apache 2) and actively developed
  2. Krakatau: open-source (GPLv3) and actively developed
  3. CFR: open-source (MIT) and actively developed
  4. JAD
  5. DJ Java Decompiler
  6. Mocha

And many more.

These produce Java code. Java comes with something that lets you see JVM byte code (javap).

🌐
FreshPorts
freshports.org › devel › cfr
FreshPorts -- devel/cfr: Class File Reader (CFR) Java decompiler
CFR will decompile modern Java features - up to and including much of Java 9, 10, 12 and beyond, but is written entirely in Java 6, so will work anywhere! It'll even make a decent go of turning class files from other JVM langauges (like Kotlin) back into Java!
Find elsewhere
🌐
aldeid
aldeid.com › wiki › CFR-java-decompiler
CFR-java-decompiler - aldeid
CFR will decompile modern Java features - Java 8 lambdas (pre and post Java beta 103 changes), Java 7 String switches etc, but is written entirely in Java 6.
🌐
Bytecode
the.bytecode.club › showthread.php
CFR Java Decompiler
CFR is a modern CLI Java Decompiler, you can download it at http://www.benf.org/other/cfr/ If you're looking for GUI CFR, check out Bytecode Viewer - https://github.com/Konloch/bytecode-viewer/releases To run it, simply use: · Depends what you mean - it has multiple normalisation passes to ...
🌐
Git Piper
gitpiper.com › resources › android-security › reverseengineering › cfr-java-decompiler
Repository of CFR - yet another java decompiler in December 2025
Online decompiler for java android python and c · View · Subscribe to get resources directly to your inbox. You won't receive any spam! ✌️ · © 2025 GitPiper. All rights reservedRackpiper Technology Inc · About UsBlogContact · InstagramYoutubeTwitterRedditFacebookLinkedIn ·
🌐
Maven Repository
mvnrepository.com › artifact › org.benf › cfr
Maven Repository: org.benf » cfr
CFR Java decompiler · Central (18) INRIA (1) Helios Decompiler (4) Central · Atlassian External · Atlassian · WSO2 Releases · WSO2 Public · Hortonworks · Mulesoft · JCenter · KtorEAP · Sonatype · 🌐 · DNS Gurus · Free DNS Tools & Analysis ·
🌐
GitHub
github.com › rocky › python-decompile3
GitHub - rocky/python-decompile3: Python decompiler for 3.7-3.8 Stripped down from uncompyle6 so we can refactor and start to fix up some long-standing problems
A native Python cross-version decompiler and fragment decompiler.
Starred by 1.2K users
Forked by 163 users
Languages   Python 97.5% | Shell 1.8%
🌐
Stack Overflow
stackoverflow.com › questions › 56352983 › decompile-using-dependencies
java - Decompile using dependencies - Stack Overflow
I know/have this API, is there any way to give it to a decompiler so objects from the API are used? Example (using CFR decompiler): Player sender = cmd.getSender(); Player target = cmd.getTarget(); World world = cmd.getWorld(); world.teleport(sender, target); turns into: Object obj1 = cmd.getSender(); Object obj2= cmd.getTarget(); Object obj3 = cmd.getWorld(); // cast must be added manually or error (World) obj3.teleport(obj1, obj2); Which is incredibly annoying considering the declaration and usage of a variable can be a hundred lines apart, and a method might use up to 20 different variables.
🌐
JanBask Training
janbasktraining.com › community › java › what-is-a-good-java-deobfuscation
What is a good java deobfuscation | JanBask Training Community
October 12, 2022 - A Java Bytecode editor and reverse engineering tool aimed at being intuitive to use. It can present bytecode through multiple decompilers (CFR, FernFlower, Procyon) or in a table layout to allow displaying class elements that are indecipherable ...
🌐
Benf
benf.org › other › cfr › faq.html
CFR - FAQ - yet another java decompiler.
Not for decompilation. I've written everything from scratch - partly because I'm doing this for fun, partly because I'm half tempted to port it to C++ at some point, so I don't want dependencies. There is a small reflective use of NIO, to allow the code to (still) require only Java6. ... CFR is very (very) deliberately java 6 only.
🌐
Eclipse Marketplace
marketplace.eclipse.org › free-tagging › cfr
cfr | Eclipse Plugins, Bundles and Products - Eclipse Marketplace | Eclipse Foundation
Enhanced Class Decompiler integrates CFR, FernFlower, JD, Procyon, Vineflower seamlessly with Eclipse and allows Java developers to debug class files without source code directly...
🌐
Programmersought
programmersought.com › article › 9037163798
Java Decompiler Tool CFR, Introduction to Procyon - Programmer Sought
Like cfr, procyon decompile explicitly closes resources in finally. Procyon decompiles java 7 syntax sugar to display raw data types. It can be seen that procyon is the most direct decompilation result of the Switch String. Procyon decompile Jar is also supported. The decompilation tool also has Krakatau, compiled with Python 2.7, and the personal computer is Python 3.3.
🌐
Programmersought
programmersought.com › article › 73502415238
CFR Java Decompiler decompile - Programmer Sought
Decompile CFR to open the .class file · Java decompiler JD-GUI and Eclipse plug-ins decompile · Java Decompiler Java Decompiler · android java decompiler decompiler · Popular Posts · MySQL (fourteen) function · Xray installation and use · Python About informaries ·