ProGuard Main
Author: Eric Lafortune
Description: ProGuard: java shrinker, optimizer, obfuscator, and preverifier
Keywords: java obfuscator, optimizer, shrinker, preverfier

## Main

ProGuard is a free Java class file shrinker, optimizer, obfuscator, and preverifier. It 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 higher, or for Java Micro Edition.

Some uses of ProGuard are:

- Creating more compact code, for smaller code archives, faster transfer across networks, faster loading, and smaller memory footprints.
- Making programs and libraries harder to reverse-engineer.
- Listing dead code, so it can be removed from the source code.
- Retargeting and preverifying existing class files for Java 6 or higher, to take full advantage of their faster class loading.

ProGuard's main advantage compared to other Java obfuscators is probably its compact template-based configuration. A few intuitive command line options or a simple configuration file are usually sufficient. The user manual explains all available options and shows examples of this powerful configuration style.

ProGuard is fast. It only takes seconds to process programs and libraries of several megabytes. The results section presents actual figures for a number of applications.

ProGuard is a command-line tool with an optional graphical user interface. It also comes with plugins for Ant, for Gradle, and for the JME Wireless Toolkit.

ProGuard now has a sibling optimizer and obfuscator for Android: DexGuard. It focuses on code protection, with additional features like string encryption, class encryption, and dex splitting. It directly targets Dalvik bytecode and streamlines the Android build process.

The following sections provide more detailed information:

- Main: this overview page.
- Results: some results obtained with ProGuard, including timings and memory usage.
- FAQ: answers to some Frequently Asked Questions.
- Manual: the complete ProGuard user manual, with examples and troubleshooting tips.
- Quality: a discussion of the (excellent) quality of ProGuard's code.
- Screenshots: some impressions of what ProGuard looks like.
- Testimonials: what users think of ProGuard.
- License: ProGuard is free, under a GPL license.
- Downloads: download the ProGuard package yourself.
- Feedback: tell me about your experiences, or learn from others on our forums.
- Acknowledgements: people who have been helpful.
- Alternatives: other Java obfuscators, optimizers, and shrinkers.