2023: splashout suggests in the comments the Vineflower/vineflower decompiler (releases), renaming from Quiltflower to Vineflower.

java -jar vineflower.jar -dgs=1 c:\Temp\binary\library.jar c:\Temp\souce

2022 update: QuiltMC/quiltflower is the latest most advanced Java decompiler:

Quiltflower is a modern, general purpose decompiler focused on improving code quality, speed, and usability.
Quiltflower is a fork of Fernflower and Forgeflower.

Changes include:

  • New language features (Try with resources, switch expressions, pattern matching, and more)
  • Better control flow generation (loops, try-catch, and switch, etc.)
  • More configurability
  • Better error messages
  • Javadoc application
  • Multithreading
  • Optimization
  • Many other miscellaneous features and fixes

Originally intended just for use with the QuiltMC toolchain with Minecraft, Quiltflower quickly expanded to be a general purpose java decompiler aiming to create code that is as accurate and clean as possible.

If the name sounds familiar it's because Quiltflower is a fork of Fernflower, the (in)famous decompiler that was developed by Stiver, maintained by Jetbrains, and became the default decompiler in Intellij IDEA.
Fernflower also quickly found its way into many other tools.

Over the past year, Quiltflower has added support for features such as modern string concatenation, a code formatter, sealed classes, pattern matching, switch expressions, try-with-resources, and more. Quiltflower also focuses on the code quality of the decompiled output, and takes readability very seriously.

See output examples.

Runs nice with jbang

https://github.com/QuiltMC/quiltflower/releases/download/1.8.1/quiltflower-1.8.1.jar

Or:

java -jar quiltflower.jar -dgs=1 c:\Temp\binary\library.jar c:\Temp\binary\Boot.class c:\Temp\source\

2009: JavaDecompiler can do a good job with a jar: since 0.2.5, All files, in JAR files, are displayed.

See also the question "How do I “decompile” Java class files?".

The JD-Eclipse doesn't seem to have changed since late 2009 though (see Changes).
So its integration with latest Eclipse (3.8, 4.2+) might be problematic.

JD-Core is actively maintained.

Both are the result of the fantastic work of (SO user) Emmanuel Dupuy.


2018: A more modern option, mentioned in the comments by David Kennedy Araujo:

JetBrains/intellij-community/plugins/java-decompiler/engine

Fernflower is the first actually working analytical decompiler for Java and probably for a high-level programming language in general.

java -jar fernflower.jar [-<option>=<value>]* [<source>]+ <destination>

java -jar fernflower.jar -hes=0 -hdc=0 c:\Temp\binary\ -e=c:\Java\rt.jar c:\Temp\source\

See also How to decompile to java files intellij idea for a command working with recent IntelliJ IDEA.


2022 update: Florian Wendelborn suggests in the comments

this one works well: jdec.app from Leonardo Santos.

Answer from VonC on Stack Overflow
🌐
Java Decompiler
java-decompiler.github.io
Java Decompiler
A warning dialog windows appear because "org.jd.ide.eclipse.plugin_x.y.z.jar" is not signed.
🌐
Java Decompilers
javadecompilers.com
Java decompiler online
Java decompilers online: *JAD, *JDCore, *Procyon, *Fernflower, *CFR. ✓ A user interface to extract source code from .class and .jar ‘binary’ files.
Top answer
1 of 8
401

2023: splashout suggests in the comments the Vineflower/vineflower decompiler (releases), renaming from Quiltflower to Vineflower.

java -jar vineflower.jar -dgs=1 c:\Temp\binary\library.jar c:\Temp\souce

2022 update: QuiltMC/quiltflower is the latest most advanced Java decompiler:

Quiltflower is a modern, general purpose decompiler focused on improving code quality, speed, and usability.
Quiltflower is a fork of Fernflower and Forgeflower.

Changes include:

  • New language features (Try with resources, switch expressions, pattern matching, and more)
  • Better control flow generation (loops, try-catch, and switch, etc.)
  • More configurability
  • Better error messages
  • Javadoc application
  • Multithreading
  • Optimization
  • Many other miscellaneous features and fixes

Originally intended just for use with the QuiltMC toolchain with Minecraft, Quiltflower quickly expanded to be a general purpose java decompiler aiming to create code that is as accurate and clean as possible.

If the name sounds familiar it's because Quiltflower is a fork of Fernflower, the (in)famous decompiler that was developed by Stiver, maintained by Jetbrains, and became the default decompiler in Intellij IDEA.
Fernflower also quickly found its way into many other tools.

Over the past year, Quiltflower has added support for features such as modern string concatenation, a code formatter, sealed classes, pattern matching, switch expressions, try-with-resources, and more. Quiltflower also focuses on the code quality of the decompiled output, and takes readability very seriously.

See output examples.

Runs nice with jbang

https://github.com/QuiltMC/quiltflower/releases/download/1.8.1/quiltflower-1.8.1.jar

Or:

java -jar quiltflower.jar -dgs=1 c:\Temp\binary\library.jar c:\Temp\binary\Boot.class c:\Temp\source\

2009: JavaDecompiler can do a good job with a jar: since 0.2.5, All files, in JAR files, are displayed.

See also the question "How do I “decompile” Java class files?".

The JD-Eclipse doesn't seem to have changed since late 2009 though (see Changes).
So its integration with latest Eclipse (3.8, 4.2+) might be problematic.

JD-Core is actively maintained.

Both are the result of the fantastic work of (SO user) Emmanuel Dupuy.


2018: A more modern option, mentioned in the comments by David Kennedy Araujo:

JetBrains/intellij-community/plugins/java-decompiler/engine

Fernflower is the first actually working analytical decompiler for Java and probably for a high-level programming language in general.

java -jar fernflower.jar [-<option>=<value>]* [<source>]+ <destination>

java -jar fernflower.jar -hes=0 -hdc=0 c:\Temp\binary\ -e=c:\Java\rt.jar c:\Temp\source\

See also How to decompile to java files intellij idea for a command working with recent IntelliJ IDEA.


2022 update: Florian Wendelborn suggests in the comments

this one works well: jdec.app from Leonardo Santos.

2 of 8
43

First of all, it's worth remembering that all Java archive files (.jar/.war/etc...) are all basically just fancy.zip files, with a few added manifests and metadata.

Second, to tackle this problem I personally use several tools which handle this problem on all levels:

  • Jad + Jadclipse while working in IDE for decompiling .class files
  • WinRAR, my favorite compression tool natively supports Java archives (again, see first paragraph).
  • Beyond Compare, my favorite diff tool, when configured correctly can do on-the-fly comparisons between any archive file, including jars. Well worth a try.

The advantage of all the aforementioned, is that I do not need to hold any other external tool which clutters my work environment. Everything I will ever need from one of those files can be handled inside my IDE or diffed with other files natively.

🌐
JetBrains
intellij-support.jetbrains.com › hc › en-us › community › posts › 6061217524626-How-to-decompile-and-debug-a-jar-file
How to decompile and debug a .jar file? – IDEs Support (IntelliJ Platform) | JetBrains
Go to the Project tool window shown on the left. Search for jar name that you added in the previous step. Navigate to the desired class or package. You will be able to see the decompiled java files for that jar.
🌐
Decompiler.com
decompiler.com
Java decompiler online / APK decompiler - Decompiler.com
.exe and .dll .NET decompilation back to C# project. .jar and .class decompilation back to Java source code.
🌐
Jdec
jdec.app
JDec - Java Decompiler Online
Click to select a file, or drag and drop it here (.class or .jar) Decompiling...
🌐
GitHub
github.com › java-decompiler › jd-gui
GitHub - java-decompiler/jd-gui: A standalone Java Decompiler GUI
> git clone https://github.com/java-decompiler/jd-gui.git > cd jd-gui > ./gradlew build · generate : "build/libs/jd-gui-x.y.z.jar" "build/libs/jd-gui-x.y.z-min.jar" "build/distributions/jd-gui-windows-x.y.z.zip" "build/distributions/jd-gui-osx-x.y.z.tar" "build/distributions/jd-gui-x.y.z.deb" "build/distributions/jd-gui-x.y.z.rpm" Double-click on "jd-gui-x.y.z.jar" Double-click on "jd-gui.exe" application from Windows ·
Starred by 14.9K users
Forked by 2.5K users
Languages   Java 96.3% | ANTLR 2.3% | Shell 1.4%
🌐
Benf
benf.org › other › cfr
CFR - yet another java decompiler.
CFR will decompile modern Java features - up to and including much of Java 9, 12 & 14, but is written entirely in Java 6, so will work anywhere! (FAQ) - It'll even make a decent go of turning class files from other JVM languages back into java! To use, simply run the specific version jar, with ...
Find elsewhere
🌐
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 - Enjarify outputs—as the name suggests—a JAR file. From there, several popular tools can be used to reconstruct Java source code. To sum up, the following figure illustrates both options we have. We can either use jadx to directly decompile the APK, or we can use Enjarify which enables us to make use of more classical Java decompilers.
🌐
Uprootsecurity
uprootsecurity.com › blog › decompile-jar-files-java-guide
How to Decompile JAR Files: Guide for Java Developers
Learn to decompile JAR files with CFR, JD-GUI, and FernFlower. Explore IDE & CLI methods, real-world fixes, and legal tips for Java developers.
🌐
Baeldung
baeldung.com › home › java › decompiling classes in java
Decompiling Classes in Java | Baeldung
August 14, 2025 - java -jar JDCommandLine.jar ${TARGET_JAR_NAME}.jar ./classes · Don’t leave off the ./classes parameter. It defines the output directory. After successful decompilation, we can access the source files contained in the output directory.
🌐
Reddit
reddit.com › r/java › looking for a java decompiler
r/java on Reddit: Looking for a Java decompiler
June 13, 2017 -

I have a couple of .jar games on my disk. I want to decompile the bytecode back to the readable .java format.

What are my options? Google wasn't very helpful, throwing old sites at me with broken download links.

I just want to learn - I played the game lots of times so I know what it does, now I want to know how it does it.

EDIT: Thanks to everyone who replied, the post stays so that others can use. I decided to use jd-gui, but it's good to know many Java IDEs have plugins to do this too (I use Netbeans and I couldn't find a decompiler plugin for it)

🌐
DEV Community
dev.to › dhanushkadev › decompile-all-the-jar-files-in-given-directory-1j99
Decompile all the jar files in given directory - DEV Community
January 12, 2023 - You can use Procyon decompiler and have a recursive look into folders with the following command. find <jar_files_directory> -name "*.jar" -exec java -jar <procyon_decompiler_location> -jar {} -o <output_directory> \;
🌐
Visual Studio Marketplace
marketplace.visualstudio.com › items
JAR Viewer and Decompiler - Visual Studio Marketplace
Extension for Visual Studio Code - Browse and display decompiled contents of Java JAR files.
🌐
Mkyong
mkyong.com › home › java › how to decompile class in java
How to decompile class in Java - Mkyong.com
July 1, 2021 - 4.2 The below example uses fernflower.jar to decompile a asm-analysis-3.2.jar JAR file into folder /path/decompile/ (must exists).
🌐
GitHub
github.com › mstrobel › procyon › wiki › Java-Decompiler
Java Decompiler
If you have trouble getting it to locate classes from jars or directories in your CLASSPATH environment variable, try running the main class directly instead of running with -jar. I still have a remarkably flimsy grasp of how all this classpath business works in Java, so if someone would like to educate me (or submit a pull request), be my guest :). Assuming that you have renamed the download file from procyon-decompiler-x.x.xx.jar to decompiler.jar, the following are some common options.
Author   mstrobel
🌐
Appscms
appscms.com › jar-decompiler
Safe Online JAR Decompiler
Java program developers can easily decompile JAR files with our online JAR Decompiler tool to extract source codes and other contents with ease.
Rating: 3 ​ - ​ 4 votes
🌐
DigitalOcean
digitalocean.com › community › tutorials › java-compiler
Java Decompiler Explained: How It Works, Tools, and Use Cases | DigitalOcean
June 19, 2025 - Skipping Decompilation in Debugging: ... file that’s throwing unexpected NullPointerExceptions, you can use a decompiler like CFR to inspect the class structure and method implementations....