ProGuard is a free Java class file shrinker, optimizer, obfuscator, and preverifier. It supports specifying which classes and class members to keep, options for handling attributes, and configuration for inputs, outputs, and rules. ProGuard is commonly used with Android builds to minimize APK size and prevent reverse engineering by obfuscating code. It outputs mapping files that allow mapping obfuscated code back to its original form.