Replaces local variable and parameter names with random identifiers built from visually identical characters. Roblox APIs and globals are preserved.
Encodes string literals using a per-position XOR transform combined with a random run key. A small decoder stub is injected — its name is randomised every run.
Replaces integer literals with arithmetic expressions that evaluate to the same value. Numbers inside strings are never affected.
Wraps the entire output inside an immediately-called function. Hides the script scope from static analysis tools and some deobfuscation pipelines.
Removes all whitespace and newlines, compacting the output onto a single line. Has no effect on execution speed or behaviour.
Cuts string literals at a random point and replaces them with a concatenation. Each part is then encrypted individually. Adds minor runtime overhead.
Inserts unreachable dead-code blocks throughout the output to confuse readers. Significantly increases output size — can exceed Roblox script limits.
Disables Luau bitwise operators in the decoder and falls back to arithmetic only. Enable only if targeting non-Roblox Lua 5.1 environments. Slightly reduces encryption strength.