# How to Protect Your Lua Scripts From Being Stolen or Decompiled

If you've ever distributed a Lua or Luau script, you've probably wondered: *what's stopping someone from just decompiling it?*

The honest answer — with most obfuscators — is not much.

#### The Problem With Most Lua Obfuscators

Standard obfuscation techniques like variable renaming, string encoding, and XOR encryption are better than nothing. But any experienced reverser can undo them in minutes. Tools like decompilers are built specifically to tear through these tricks, and they do it well.

The fundamental issue is that most obfuscators still output **standard Lua bytecode**. As long as the output runs on a standard Lua VM, a decompiler designed for that VM can reverse it.

#### A Different Approach: Custom Bytecode VM

This is what makes [LuaLock](https://lualock.xyz) different.

Instead of transforming your source and outputting standard bytecode, LuaLock **compiles your script to a custom bytecode VM that is unique to every single build**. There's no fixed VM to target. Standard decompilers produce nothing useful — because the VM required to reverse the output doesn't exist anywhere except inside that specific obfuscated file.

#### Who Is This For?

*   **Roblox developers** distributing Luau game scripts
    
*   **LuaJIT application developers** shipping proprietary logic
    
*   **Lua 5.1 developers** protecting plugins, tools, or licensed scripts
    

#### Protection Levels

LuaLock offers Normal through Extreme protection levels, letting you balance security against runtime performance depending on your use case.

#### Try It

Head to [lualock.xyz](http://lualock.xyz), paste your script, and see the output for yourself. The difference between a standard obfuscator's output and LuaLock's custom VM output is immediately obvious.

If you're serious about protecting your Lua intellectual property, it's worth understanding why the VM approach is the only one that actually holds up.
