Lua obfuscator — FiveM (CFX / LuaJIT)

An invisible
layer between your code and prying eyes.

Upload a .lua file, choose the protection level and preview the result. The full pipeline runs server-side — this demo illustrates the flow.

Demo — 3 steps

Test the full flow

Step 1
Upload

A .lua file, up to 2 MB.

Step 2
Settings

Choose your layers.

Step 3
Preview

Compare before / after.

chat_antiflood.lua
Source
Live preview
local _0x000 = {}
local _0x001 = 3
RegisterNetEvent("\x63\x68\x61\x74\x3a\x6d\x65\x73\x73\x61\x67\x65", function(name, color, message)
local _0x002 = source
local _0x003 = GetGameTimer()
if(function() do return end;--@cf
return true end)() and _0x000[_0x002] and (_0x003 - _0x000[_0x002]) < 1500 then
_0x001 = _0x001 - 1
if(function() do return end;--@cf
return true end)() and _0x001 <= 0 then
DropPlayer(_0x002, "\x46\x6c\x6f\x6f\x64\x20\x64\x65\x74\x65\x63\x74\x65\x64")
end
do return end;--@cf
return
end
_0x000[_0x002] = _0x003
print(("\x5b\x63\x68\x61\x74\x5d\x20\x25\x73\x3a\x20\x25\x73"):format(name, message))
end)

Client-side demonstration for educational purposes. The real Gate pipeline runs the obfuscation in an isolated environment and delivers a signed artifact.

Before / After

Three real-world scenarios

A simple export wrapper becomes unreadable while staying functional.

Before.lua
-- notify.lua
local function notify(msg, type)
    TriggerEvent("chat:addMessage", {
        args = { "[SERVER]", msg },
        color = type == "error" and {255,0,0} or {0,255,0}
    })
end
exports("notify", notify)
After.lua
local _0x001=function(_0x002,_0x003)
TriggerEvent("\x63\x68\x61\x74\x3a\x61\x64\x64\x4d\x65\x73\x73\x61\x67\x65",{
args={"\x5b\x53\x45\x52\x56\x45\x52\x5d",_0x002},
color=_0x003=="\x65\x72\x72\x6f\x72" and{0xff,0x0,0x0}or{0x0,0xff,0x0}})
end
exports("\x6e\x6f\x74\x69\x66\x79",_0x001)
Protection layers

Stackable, combinable

Renaming

Locals, upvalues and parameters replaced with opaque identifiers.

Encrypted strings

All strings are encoded and decrypted at runtime.

Flow flattening

The execution graph is dismantled and skewed by opaque predicates.

Constants

Numbers converted, tables reordered, dead code injected.

Proprietary VM

The ultimate option: your code runs in a sealed Gate VM.

Anti-tamper

Runtime integrity checks, anchored to the FiveM domain.

Ready to seal your resource?

Create an account, upload your script and get the protected version in seconds.