The standard Java and Android obfuscator

ProGuard is our free generic optimizer and obfuscator for Java bytecode. ProGuard makes your apps smaller (20% - 90%) and faster (10% - 20%). It's also the first step to protect your apps against reverse-engineering.  Over the years, ProGuard 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. However, when security is important, you should have a look at DexGuard, which offers additional Android-specific security layers on top of ProGuard.

Successful applications

Desktop applications

Obfuscate Java applications. Optimization is not as important on virtual machines with advanced JIT compilation, but obfuscation helps to protect the app against reverse engineering.

Embedded applications

Optimize and obfuscate Java applications for cell phones, Blu-ray players, set-top boxes, and other constrained devices.

Mobile applications

Optimize and obfuscate Android apps. As a generic optimizer and obfuscator, ProGuard also works on Java bytecode for Android. For additional security, consider DexGuard, our dedicated product for Android.

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.

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

ProGuard is free software. Why upgrade to DexGuard? Here's a comparison of their main features:

  Proguard Dexguard Dexguard Enterprise
Code shrinking
Code optimization
Removal of logging code
Name obfuscation
Dex splitting/Multidex  
Resource shrinking  
Resource optimization  
String encryption  
Class encryption  
Call hiding with reflection  
Native code obfuscation  
Native library encryption  
Resource obfuscation    
Resource XML obfuscation    
Asset encryption    
Certificate checking    
Root detection    
Root hiding detection    
Debug detection    
Emulator detection    
Tamper detection    
SSL pinning    
WebView SSL pinning    
WebView encryption    
Cordova/Phonegap encryption    
Tuned configuration for popular libraries  
Best practices  

Proguard provides protection against static analysis, by removing any information from the code that is not strictly necessary for executing it: unused code, identifiers, and debugging information. It's a major step up from leaving the code as it is, but it is still a passive approach.

Dexguard goes a few steps further, with techniques that are not suitable for an open-source product to protect the Java byte code. It specifically targets the Android platform, all the way to the packaging and signing of the application. The processed code is hard to reverse-engineer, extract, or modify. If you've successfully been using ProGuard, upgrading to DexGuard is easy. The configuration is compatible, with additional options for the additional features. You'll be up and running in no time.

Dexguard Enterprise actively fights static and dynamic analysis, with advanced techniques. It specifically targets the Android platform, Android resources, and Dalvik bytecode, allowing it to go further in its optimizations and protection, all the way to the packaging and signing of the application. The processed code and resources are hard to reverse-engineer, extract, or modify. Upgrading to DexGuard Enterprise is also easy. The configuration is compatible, with additional options for the advanced features.

Get a quote for DexGuard