Prometheus is a Lua obfuscator written in pure Lua.
It applies a range of AST-based transformations to make source code significantly harder to read, analyze, and reverse engineer.
These include register VM virtualization, control-flow flattening, constant encryption, and other Lua-specific obfuscation strategies.
The project was inspired by the excellent javascript-obfuscator.
Currently, Prometheus supports:
- Lua 5.1
- LuaU (basic support is available, but still not fully finished)
See Limitations for compatibility details.
Try the browser version first:
Install latest release with one command:
curl -fsSL https://raw.githubusercontent.com/prometheus-lua/Prometheus/master/install.sh | shThen use the CLI directly:
prometheus-lua --version prometheus-lua --preset Medium ./your_file.lua
The release bundle includes a Lua runtime, so no separate Lua install is required for the packaged CLI.
To update to the latest release:
prometheus-lua update
To uninstall:
rm -f ~/.local/bin/prometheus-lua && rm -rf ~/.local/share/prometheus-lua
git clone https://github.com/prometheus-lua/Prometheus.git
cd Prometheus
lua cli.lua --preset Medium ./your_file.luaYou can find the full documentation, including the getting started guide, here:
Contribution guidelines: CONTRIBUTING.md
Packaged CLI releases include a bundled Lua runtime. For source usage, Prometheus requires LuaJIT or Lua 5.1+.
Lua 5.1 binaries can be downloaded here:
https://sourceforge.net/projects/luabinaries/files/5.1.5/Tools%20Executables/
-- input.lua print("Hello, World!");
-- input.obfuscated.lua return(function(...)local L={"afT6mf1V","/7mJXsuvmE1c/fT3";"tn1ZSn6=","37ghSJM=";"WqermfWAWuuZpb3XX7M=","tqXGSJ3u","XQXpL9x21dxAWJa//p==","SrM=";"3q+5SJM=","/D==";"t7XUt0p=";"mIeOmIx9";"LdgrBfWdWuNABsb+KJxj","SJWJ4dahKsebW7t+KQv=","/cDu3AvP/D==";"Llv7uD==","tJWhFfTE";"TQ43ctIuy9HIop==","mEu93p==";"WJax1sXEXEaxWuxGt6==","t0gPSEp=",... -- remaining obfuscated output omitted
For more advanced use cases, configuration, and presets, see the documentation.
The test suite runs existing cases on Lua 5.1 and Luau, plus the adapted official Lua 5.1 suite on Lua 5.1, inside Docker:
./scripts/run-tests.sh # Run all tests (default: 10 iterations) ./scripts/run-tests.sh -b # Build image and run tests ./scripts/run-tests.sh -n 5 # Run with 5 iterations ./scripts/run-tests.sh -c config.lua # Use a custom config ./scripts/run-tests.sh -v # Verbose output ./scripts/run-tests.sh --suite upstream --baseline-only # Verify official originals ./scripts/run-tests.sh --case lua51/closure.lua --preset Cff --seed 4 -n 1
Prometheus has an official Discord server:
Prometheus is licensed under the Prometheus License, a modified MIT-style license.
You are free to use, modify, and distribute this software, including for commercial purposes, under the following conditions:
- Any commercial product, wrapper, or service (including SaaS or hosted solutions) that uses or integrates Prometheus must include clear attribution to:
Based on Prometheus by Elias Oelschner, https://github.com/prometheus-lua/Prometheus
- The attribution must be visible in the product’s:
- UI
- documentation
- public website
- The obfuscated output files generated by Prometheus do not need to include any license or copyright notice.
- Derivative works and public forks must also include a statement in their README noting that they are based on Prometheus.
Full license text: Prometheus License
