Open-Awesome
CategoriesAlternativesStacksSelf-HostedExplore
Open-Awesome

© 2026 Open-Awesome. Curated for the developer elite.

TermsPrivacyAboutGitHubRSS
  1. Home
  2. Android Security
  3. Fernflower

Fernflower

Apache-2.0Java

An analytical decompiler that converts Java bytecode back into readable Java source code, used in IntelliJ IDEA.

Visit WebsiteGitHubGitHub
4.3k stars725 forks0 contributors

What is Fernflower?

Fernflower is a decompiler that converts Java bytecode back into Java source code. It solves the problem of recovering readable source from compiled .class files, enabling developers to debug, analyze, or understand third-party libraries when source isn't available. It uses analytical methods to reconstruct code structure rather than simple pattern matching.

Target Audience

Java developers, reverse engineers, and security researchers who need to examine compiled Java code for debugging, auditing, or educational purposes.

Value Proposition

Developers choose Fernflower because it produces semantically accurate, recompilable Java code and is the trusted engine behind IntelliJ IDEA's decompiler. Its analytical approach and extensive customization options make it superior for handling obfuscated or complex bytecode.

Overview

Decompiler from Java bytecode to Java, used in IntelliJ IDEA.

Use Cases

Best For

  • Debugging third-party Java libraries when source code is unavailable
  • Reverse engineering obfuscated Java applications for security analysis
  • Recovering lost source code from compiled JAR files
  • Understanding bytecode behavior in educational or research contexts
  • Integrating decompilation into custom tooling via its command-line interface
  • Auditing Java dependencies for license compliance or vulnerability assessment

Not Ideal For

  • Projects requiring instantly beautiful, formatted source code for presentation or documentation without post-processing
  • Teams needing a graphical interface for interactive decompilation without integrating IntelliJ IDEA
  • Situations where decompilation speed is paramount over semantic accuracy, such as quick exploratory analysis
  • Cases involving non-standard or experimental Java bytecode features that Fernflower's analytical engine may not yet fully support

Pros & Cons

Pros

Analytical Accuracy

Uses control and data flow analysis to reconstruct semantically correct Java code, ensuring it can be recompiled, unlike pattern-based decompilers that may produce syntactically invalid output.

Extensive Customization

Offers over 30 command-line options for fine-tuning output, including handling generics, lambdas, enums, and obfuscated code, as detailed in the README's option list.

Library Awareness

Accepts external library references via the -e= option to improve type analysis and identifier renaming, crucial for accurate decompilation of code with dependencies.

Debug Integration

Reconstructs variable and parameter names from debug attributes when available, enhancing the readability and usability of decompiled source code for debugging purposes.

Cons

Configuration Complexity

The multitude of command-line options and the need for custom IIdentifierRenamer implementations for advanced renaming can be overwhelming and time-consuming for users seeking quick results.

No Standalone GUI

Lacks a built-in graphical interface outside of IntelliJ IDEA, requiring command-line proficiency or additional tooling for those who prefer visual interaction with decompiled code.

Aesthetic Trade-offs

Prioritizes correctness over prettiness, so output may lack ideal formatting or require manual cleanup for human readability, especially with obfuscated or complex bytecode.

Frequently Asked Questions

Quick Stats

Stars4,339
Forks725
Contributors0
Open Issues0
Last commit22 hours ago
CreatedSince 2014

Tags

#jetbrains#command-line-tool#bytecode-analysis#java#java-tooling#decompiler#java-decompiler#intellij-plugin#reverse-engineering

Built With

J
Java
G
Gradle

Links & Resources

Website

Included in

Android Security9.3kJ2ME340
Auto-fetched 4 hours ago

Related Projects

jadxjadx

Dex to Java decompiler

Stars49,748
Forks5,659
Last commit9 days ago
radare2radare2

UNIX-like reverse engineering framework and command-line toolset

Stars24,428
Forks3,278
Last commit15 hours ago
Bytecode ViewerBytecode Viewer

A Java 8+ Jar & Android APK Reverse Engineering Suite (Decompiler, Editor, Debugger & More)

Stars15,571
Forks1,267
Last commit7 days ago
JD-GUIJD-GUI

A standalone Java Decompiler GUI

Stars15,160
Forks2,473
Last commit2 years ago
Community-curated · Updated weekly · 100% open source

Found a gem we're missing?

Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.

Submit a projectStar on GitHub