Freedom251 › Code Obfuscation Software
ProGuard

What ProGuard is
ProGuard is a free, open-source command-line tool for shrinking and optimizing Java bytecode. It processes Java class files by removing unused classes, fields, methods, attributes, and instructions. It also renames remaining classes, fields, and methods with short, meaningless names, and preverifies the result. The goal is smaller, faster applications and libraries. Guardsquare describes it as suitable for Java and Kotlin apps in mobile, embedded, and desktop environments. Build setup is documented for Android Gradle, Java or Kotlin Gradle, Ant, and Maven projects; Android's default shrinker, R8, accepts ProGuard configuration. ProGuard Playground lets developers try and share keep rules without rebuilding an app. ProGuardCORE is a separate free, open-source library for working with Java bytecode and Kotlin metadata. The tool is free, with a free plan. Library inputs must be specified and are left unchanged; code called through reflection may need to be declared as an entry point. It runs on Android, Linux, macOS, and Windows.
Who it suits
ProGuard suits developers building Java or Kotlin applications and libraries for mobile, embedded, or desktop environments. Its documented build integrations and command-line workflow may fit teams that want bytecode shrinking, optimization, and obfuscation in their builds.
What it does well
- Free, open-source command-line tool.
- Removes unused classes, fields, methods, and instructions.
- Supports Java and Kotlin applications.
- Documented integrations include Gradle, Ant, and Maven.
- Playground supports trying and sharing keep rules.
What to know first
- Library paths must be specified as inputs.
- Libraries supplied as inputs remain unchanged.
- Reflective code may need configured entry points.
Limits
The listed plan is free. ProGuard requires library jars or equivalent paths as inputs and leaves those libraries unchanged; code invoked dynamically through reflection may need to be specified as an entry point.
Plans
| Plan | Billed and limits | Price |
|---|---|---|
| ProGuard | Free, open-source shrinker for Java/Kotlin apps | Free |
As guardsquare.com lists them, read 5 Oct 2026. The maker's own page has the final word.
Getting started
- Choose the documented build route for your project: Android Gradle, Java or Kotlin Gradle, Ant, or Maven.
- Add the relevant library jars or equivalent library paths as inputs.
- Configure entry points for code invoked dynamically through reflection, where needed.
- Use ProGuard Playground to experiment with and share keep rules without rebuilding the app.
Overview
ProGuard is an open-source command-line tool for processing Java bytecode, suited to developers building Java or Kotlin applications for mobile, embedded, or desktop environments. Its free price and broad build integrations make it a practical choice when you need to reduce and obfuscate compiled code; its library-path and reflection requirements call for careful configuration.
Key features
ProGuard combines four bytecode-processing steps. Shrinking removes unused classes, fields, methods, and attributes, while optimization improves bytecode and removes unused instructions. Together, these can produce smaller, faster applications and libraries, a useful trade-off for developers concerned with output size or execution efficiency.
Obfuscation renames remaining classes, fields, and methods with short, meaningless names. Preverification is also part of the processing pipeline. These capabilities make ProGuard relevant when you want to transform Java class files as part of a build, but it does not provide anti-tamper controls.
The manual documents integrations with Android Gradle, Java or Kotlin Gradle, Ant, and Maven. Android’s default shrinker, R8, is compatible with ProGuard configuration, which can help teams working with existing rules. The Playground lets developers experiment with and share keep rules without rebuilding an app. ProGuardCORE, a separate free, open-source library, supports reading, writing, analyzing, and processing Java bytecode, including Kotlin metadata.
Two configuration constraints matter in practice. ProGuard requires library jars or equivalent library paths as inputs and leaves those libraries unchanged. Code called dynamically through reflection may need to be declared as an entry point, so applications that rely on reflective access require particular care when setting keep rules.
Pricing
ProGuard costs nothing. The free, open-source plan covers shrinking for Java and Kotlin apps, and the tool also performs optimization, obfuscation, and preverification. There are no paid tiers or seat counts to weigh in the published plan; its main cost is the configuration work needed to supply library paths and preserve reflectively accessed code.
Platforms
ProGuard is a desktop command-line tool with support for Android, Linux, macOS, and Windows. Its supported targets are Java, Kotlin, and Android. The documented build integrations span Android Gradle, Java or Kotlin Gradle, Ant, and Maven, making it suited to teams that can incorporate command-line bytecode processing into those build workflows.
Who it's for
ProGuard is a strong fit for developers who want a free tool to shrink, optimize, and obfuscate Java or Kotlin bytecode across mobile, embedded, or desktop projects. It is less suitable for teams seeking anti-tamper controls, or for builds where library inputs and reflective entry points cannot be configured reliably.
Pros and cons
- Pros: Free and open source, with shrinking, optimization, obfuscation, and preverification in one command-line tool.
- Pros: Documented integrations cover Android Gradle, Java or Kotlin Gradle, Ant, and Maven; ProGuard configuration is compatible with R8.
- Pros: The Playground supports experimenting with and sharing keep rules without rebuilding the app.
- Cons: Library jars or equivalent paths must be supplied, and ProGuard leaves those libraries unchanged.
- Cons: Code accessed through reflection may need explicit entry-point configuration.
- Cons: It has no anti-tamper controls.
Alternatives
Code Obfuscation Software is the broader category for comparing tools beyond this Java bytecode workflow.
For a JavaScript-focused alternative, JS-Confuser is free and open source. ByteHide Shield has a free plan for core obfuscation aimed at individual developers and small projects, with paid plans for advanced techniques; consider it when those needs match better than ProGuard’s Java and Kotlin bytecode processing.
Tigress is another option to compare if you are considering a paid tool. yEd Graph Editor is a free alternative to consider if its specific use case fits your needs.
JavaScript Obfuscator offers unlimited standard obfuscation on its free plan, subject to a 25 MB lifetime VM quota and a 4 MB VM file-size limit. Obfuscator.io has the same stated free-plan VM quota and file-size limit, with unlimited standard obfuscation; its Pro plan costs $19 a month.
Obfuscator-LLVM is a free, open-source LLVM fork for Linux, so it is a more relevant comparison for Linux users working with LLVM rather than Java bytecode. Allatori is another freemium option to compare if its licensing and support terms suit your project.
Verdict
Choose ProGuard if you need free command-line shrinking, optimization, obfuscation, and preverification for Java or Kotlin applications and can maintain the required library and reflection configuration. Look elsewhere if you need anti-tamper controls or want to avoid that configuration overhead.
Verdict
ProGuard combines shrinking, optimization, obfuscation, and preverification for Java class files in a free command-line tool. Account for its library-input requirements and configure code accessed through reflection when needed.
Questions
Is ProGuard free?
Yes. The listed ProGuard plan is free and priced at $0.
Is ProGuard open source?
Yes. ProGuard is described as an open-source command-line tool. Its manual provides license information for GPL and a GPL exception.
Which platforms does ProGuard support?
It is listed for Android, Linux, macOS, and Windows.
Which project types can use ProGuard?
Guardsquare describes it as suitable for Java and Kotlin apps in mobile, embedded, and desktop environments. Build setup is documented for Android Gradle, Java or Kotlin Gradle, Ant, and Maven projects.
Who makes ProGuard?
Guardsquare is the maker. The company says Eric Lafortune released ProGuard in 2002 and Guardsquare was founded in 2014.
Does ProGuard work with Android's R8 shrinker?
Android's default shrinker, R8, is compatible with ProGuard configuration.
Facts from ProGuard's own pages
- Build integrations
- The manual documents setup for Android Gradle, Java or Kotlin Gradle, Ant, and Maven projects. · guardsquare.com, 5 Oct 2026
- Configuration limit
- Code invoked dynamically through reflection may need to be specified as entry points in ProGuard configuration. · guardsquare.com, 5 Oct 2026
- Headquarters
- Leuven, Belgium · guardsquare.com, 28 Sept 2026
- Library inputs
- ProGuard requires the input's library jars or equivalent library paths to be specified, and leaves those libraries unchanged. · guardsquare.com, 5 Oct 2026
- License
- The manual provides license information for GPL and a GPL exception. · guardsquare.com, 5 Oct 2026
- Maker
- Guardsquare says Eric Lafortune released ProGuard in 2002 and the company was founded in 2014. · guardsquare.com, 5 Oct 2026
- Obfuscation
- ProGuard renames remaining classes, fields, and methods using short meaningless names. · guardsquare.com, 5 Oct 2026
- Optimization
- The optimizer optimizes bytecode and removes unused instructions. · guardsquare.com, 5 Oct 2026
- Playground
- ProGuard Playground lets developers experiment with and share keep rules without rebuilding the app. · guardsquare.com, 5 Oct 2026
- Processing
- It shrinks, optimizes, obfuscates, and preverifies Java class files, producing smaller and faster applications and libraries. · guardsquare.com, 5 Oct 2026
- ProGuardCORE
- ProGuardCORE is a free, open-source library for reading, writing, analyzing, and processing Java bytecode, including Kotlin metadata. · guardsquare.com, 5 Oct 2026
- Purpose
- ProGuard is an open-source command-line tool for shrinking Java bytecode and optimizing code. · guardsquare.com, 5 Oct 2026
- R8 compatibility
- The manual states that Android's default shrinker, R8, is compatible with ProGuard configuration. · guardsquare.com, 5 Oct 2026
- Shrinking
- The shrinking step detects and removes unused classes, fields, methods, and attributes. · guardsquare.com, 5 Oct 2026
- Supported apps
- Guardsquare describes ProGuard as suitable for Java and Kotlin apps on mobile, embedded, and desktop environments. · guardsquare.com, 5 Oct 2026
Where ProGuard stands on Freedom251
- Code Obfuscation Software#5 of 34