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 for you, you should have a look at DexGuard. It offers additional Android-specific security layers on top of ProGuard.

Successful applications

Desktop applications

ProGuard obfuscates 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

ProGuard optimizes and obfuscates Java applications for cell phones, Blu-ray players, set-top boxes and other constrained devices.

Mobile applications

ProGuard optimizes and obfuscates 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.

ProGuard detects and removes unused classes, fields, methods and attributes. It optimizes bytecode and removes unused instructions. ProGuard 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
Protection against Static Analysis
Arithmetic Obfuscation
Class Encryption
Call Hiding through Reflection
Control Flow Obfuscation
Cordova/Phonegap Encryption
Name Obfuscation
Removal of Logging Code and Metadata
String Encryption
WebView Encryption
Native Code Obfuscation
Native Library Encryption
Obfuscation of Native Library Names
Asset Encryption
Encryption of Resource Files
Resource Obfuscation
Protection against Dynamic Analysis
Certificate Checks
Debug Detection
Emulator Detection
Root Detection
Root Cloaking Detection
Tamper Detection
SSL pinning
WebView SSL pinning
Code Optimization
Removal of Redundant Code
Automatic Splitting of Dex Files
Removal of Unused Native Libraries
Removal of Unused Resources
Resource Optimization

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 to application security.

DexGuard 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. If you've successfully been using ProGuard, upgrading to DexGuard is easy. The configuration is compatible, with extra options for the additional features.

Get your quote for DexGuard