Pull the thread.
Unravel anything.

A deobfuscation workbench for obfuscated Lua and Luau scripts. Detection, payload extraction and a real multi-pass cleanup engine, plus a sandboxed Lua runtime that executes the script and catches the source it builds at runtime. Everything runs locally in your browser; your scripts never leave your machine.

Deobfuscator

Obfuscated input
or drop a file anywhere on this panel
Unraveled output

Sandbox runtime

Executes the script in the input box above on a real Lua VM running in this tab (worker-isolated, timeout-guarded, zero network). The environment is stubbed executor-style: game, workspace, getgenv, HttpGet (returns empty and logs the URL), hookfunction and friends. Hooks on load and loadstring capture every chunk the script builds, so wrapped and per-build-encrypted sources unravel when they run. Luau compound assignments are lowered automatically before execution.

Support matrix

Luraph v14.x / v15 / v15.1detect · version read · payload extraction · base85 layer decode · cleanup passes on the wrapper
WeAreDevsdetect · cleanup passes
IronBrew / PSUdetect · cleanup passes
MoonSecdetect · cleanup passes
Raw Lua bytecodedetect · version read
Anything elsegeneric pipeline: string decode · constant folding · beautify

The sandbox below executes Luraph-style wrappers and captures whatever passes through load/loadstring, which recovers the real source for that whole class of builds. VM bytecode that never surfaces as loadable source (deep devirtualization cases) still needs the desktop engine. This page always tells you exactly what it did; it never pretends a pass ran when it did not.

How it works

1. Detect

Fingerprints the header, magic bytes and VM shape to name the obfuscator and version.

2. Extract

Pulls embedded payloads out of long strings and decodes the wrapper's own encoding layer.

3. Clean

Normalizes string escapes, folds string.char and literal arithmetic, then reformats the whole script with real indentation.

4. Report

Shows every pass that ran with counts, so you know what changed and what did not.

5. Execute

Runs the script in a local Lua VM with load/loadstring hooks, capturing the source it builds at runtime.