ProGuard
ProGuard is a free, open-source command-line tool for shrinking Java bytecode and optimizing code.
What ProGuard is
ProGuard is a free, open-source command-line tool for shrinking Java bytecode and optimizing code. It processes Java class files by removing unused classes, fields, methods, attributes, and instructions, then renames remaining classes, fields, and methods with short, meaningless names. It also preverifies the files, producing smaller and faster applications or libraries. Guardsquare describes it as suitable for Java and Kotlin applications in mobile, embedded, and desktop environments. Build setup is documented for Android Gradle, Java or Kotlin Gradle, Ant, and Maven. Android's default shrinker, R8, accepts ProGuard configuration. Developers can experiment with and share keep rules in ProGuard Playground without rebuilding an app. The separate ProGuardCORE library is free and open source, and can read, write, analyze, and process Java bytecode, including Kotlin metadata. Library jars or equivalent paths must be specified as inputs, and ProGuard leaves those libraries unchanged. Code called dynamically through reflection may need to be declared as an entry point in the configuration.
Good
- Free and open source
- Removes unused code and attributes
- Supports Java and Kotlin projects
- Integrates with multiple build systems
- Compatible with ProGuard configuration for R8
Watch out
- Reflection-called code may need explicit entry points
- Library paths must be supplied and remain unchanged
Who it suits
ProGuard suits developers working on Java or Kotlin applications who want bytecode shrinking, optimization, and obfuscation as part of a command-line build. It supports projects using several documented build systems, including Android Gradle, Maven, and Ant.
Verdict
ProGuard offers bytecode shrinking and optimization for Java and Kotlin projects, with build integrations and a keep-rule playground. Account for library inputs and reflection configuration when planning its use.
Plans and prices
From ProGuard's own pricing page, checked 5 Oct 2026.
| Plan | Price | What it gives you |
|---|---|---|
| ProGuard | Free | Free, open-source shrinker for Java/Kotlin apps |
The facts
Each one read from ProGuard's own pages, with the date it was checked.
What it does
- Build integrations
- The manual documents setup for Android Gradle, Java or Kotlin Gradle, Ant, and Maven projects.checked 5 Oct 2026
- Configuration limit
- Code invoked dynamically through reflection may need to be specified as entry points in ProGuard configuration.checked 5 Oct 2026
- Library inputs
- ProGuard requires the input's library jars or equivalent library paths to be specified, and leaves those libraries unchanged.checked 5 Oct 2026
- License
- The manual provides license information for GPL and a GPL exception.checked 5 Oct 2026
- Obfuscation
- ProGuard renames remaining classes, fields, and methods using short meaningless names.checked 5 Oct 2026
- Optimization
- The optimizer optimizes bytecode and removes unused instructions.checked 5 Oct 2026
- Playground
- ProGuard Playground lets developers experiment with and share keep rules without rebuilding the app.checked 5 Oct 2026
- Processing
- It shrinks, optimizes, obfuscates, and preverifies Java class files, producing smaller and faster applications and libraries.checked 5 Oct 2026
- ProGuardCORE
- ProGuardCORE is a free, open-source library for reading, writing, analyzing, and processing Java bytecode, including Kotlin metadata.checked 5 Oct 2026
- Purpose
- ProGuard is an open-source command-line tool for shrinking Java bytecode and optimizing code.checked 5 Oct 2026
- R8 compatibility
- The manual states that Android's default shrinker, R8, is compatible with ProGuard configuration.checked 5 Oct 2026
- Shrinking
- The shrinking step detects and removes unused classes, fields, methods, and attributes.checked 5 Oct 2026
The company
- Headquarters
- Leuven, Belgiumchecked 28 Sep 2026
- Maker
- Guardsquare says Eric Lafortune released ProGuard in 2002 and the company was founded in 2014.checked 5 Oct 2026
Where it runs
- Supported apps
- Guardsquare describes ProGuard as suitable for Java and Kotlin apps on mobile, embedded, and desktop environments.checked 5 Oct 2026
The full review of ProGuard
Overview
ProGuard is a free, open-source command-line tool for processing compiled Java bytecode. It is best suited to developers who want to shrink or obfuscate Java and Kotlin applications within a build workflow.
Its combination of shrinking, optimization and build integrations is useful, but the project must account for library inputs and reflective calls in its configuration.
Key features
ProGuard can shrink, optimize, obfuscate and preverify Java class files. Shrinking removes unused classes, fields, methods and attributes; optimization improves bytecode and removes unused instructions. These steps can produce smaller, faster applications and libraries, making the tool relevant when output size or execution efficiency matters.
Obfuscation replaces the names of surviving classes, fields and methods with short, meaningless names. That makes compiled code less readable, but it does not amount to anti-tamper protection; ProGuard has no anti-tamper controls. Choose it for bytecode processing, not as a standalone defense against tampering.
Documented build setups cover Android Gradle, Java or Kotlin Gradle, Ant and Maven. Android's default shrinker, R8, accepts ProGuard configuration, a practical advantage for projects already maintaining those rules. ProGuard Playground lets developers experiment with and share keep rules without rebuilding the application. ProGuardCORE is a separate free, open-source library for reading, writing, analyzing and processing Java bytecode, including Kotlin metadata.
Configuration takes care. Dynamically invoked code reached through reflection may need to be declared as an entry point, or shrinking can remove code the application needs. ProGuard also requires library jars or equivalent library paths as inputs and leaves those libraries unchanged. That makes correct inputs and rule maintenance important parts of adopting it.
Pricing
ProGuard costs nothing. Its free, open-source plan covers shrinking for Java and Kotlin apps, with Java, Kotlin and Android among its supported targets. The price is compelling for individual developers and teams able to manage their own build configuration; there are no paid plan tiers in the stated offer to compare.
Platforms
ProGuard is a desktop-deployed command-line tool, with platforms listed for Android, Linux, macOS and Windows. Its build integrations suit projects using Android Gradle, Java or Kotlin Gradle, Ant or Maven. Android projects can also use ProGuard configuration with R8.
Who it's for
Choose ProGuard if you build Java or Kotlin software for mobile, embedded or desktop environments and want free bytecode shrinking, optimization and obfuscation as part of a build. It is a weaker fit if you need anti-tamper controls, or if your project cannot maintain reflection rules and provide library inputs accurately.
Pros and cons
- Pros: Free and open source, with shrinking, optimization, obfuscation and preverification in one bytecode-processing tool.
- Pros: Documented integrations cover four build systems, and R8 compatibility supports Android projects using ProGuard configuration.
- Pros: The Playground supports keep-rule experiments and sharing without rebuilding the app.
- Cons: Reflection-driven code may need explicit entry-point configuration, creating a maintenance burden.
- Cons: Library jars or equivalent paths must be supplied, and ProGuard leaves those libraries unchanged.
- Cons: It does not provide anti-tamper controls.
Alternatives
For a wider comparison, browse Code Obfuscation Software.
ByteHide Shield is worth considering if you want a freemium option with a free core obfuscation plan for individual developers and small projects, across platforms including iOS and web.
Tigress is another alternative with a free plan and free trial, for readers comparing paid software.
JS-Confuser is free and open source; consider it as an alternative when that is the key requirement.
yEd Graph Editor is a free alternative with personal and commercial use permitted under its stated terms.
Obfuscar offers free, open-source basic .NET assembly obfuscation, so it is the alternative to consider for .NET assemblies rather than Java bytecode.
JavaScript Obfuscator is a free alternative for JavaScript obfuscation; its free plan has a 25 MB lifetime VM quota and a 4 MB VM file-size limit.
Obfuscator.io is a freemium alternative for web and API use, with a free plan carrying a 25 MB lifetime VM quota and a 4 MB VM file-size limit.
Allatori is another freemium option for readers comparing obfuscation software.
Verdict
ProGuard is a sound choice for Java and Kotlin developers who want a free bytecode processor integrated into an established build workflow. Its strongest case is the useful combination of shrinking, optimization and obfuscation with broad build-system support. Look elsewhere if anti-tamper controls are essential, or if your project cannot reliably configure library inputs and reflective entry points.
Alternatives to ProGuard
- 1
Enigma Protector
WebAPILinuxSelf-hosted7.4 - 2
JS-Confuser
Free planOpen sourceWebAPILinuxmacOS7.4Free plan - 3
Jscrambler
AndroidiOSWebAPI7.0 - 4
Tigress
Free planAndroidLinuxmacOSWindows6.8Free plan - 5

ByteHide Shield
Free planAndroidiOSWebLinux6.7Free plan - 6
JavaScript Obfuscator
Free planWebAPIExtensionSelf-hosted6.7From $19 a month
