ProGuard is our free generic optimizer and obfuscator for Java bytecode. Over the years, it has solidly become the industry standard in its field. It is the default tool in development environments like Oracle's Wireless Toolkit, Netbeans, EclipseME, Intel's TXE SDK, and Google's Android SDK.

Technically, ProGuard detects and removes unused classes, fields, methods, and attributes. It optimizes bytecode and removes unused instructions. It renames the remaining classes, fields, and methods using short meaningless names. Finally, it preverifies the processed code for Java 6 or for Java Micro Edition.

Some successful applications:

  • Optimize and obfuscate Java applications for cell phones, Bluray players, settop boxes, and other constrained devices.
  • Obfuscate Java applications. Optimization is not as important on virtual machines with advanced JIT compilation, but obfuscation can help to protect the app against reverse-engineering.
  • Optimize and obfuscate Android apps. As a generic optimizer and obfuscator, ProGuard also works on Java bytecode for Android. For additional layers of protection, you should consider our closed-source product DexGuard, which is specialized for Android.
Based on our experience, we give ProGuard a hacker protection factor of 5. Obfuscated identifiers and optimized code make processed applications difficult to reverse-engineer. If you're looking for more, please have a look at DexGuard.

You can download the latest release, including the documentation, examples, and the source code from the official ProGuard site at Sourceforge.