Lua and Luau protection

Voidex obfuscator

Rewrite readable Lua into packed, layered output that is harder to skim, patch, or dump. Voidexfuscator uses VM-style wrapping, hardened string packing, and compact payload generation for scripts you actually ship.

Test script
local Players = game:GetService("Players")

local function greet(player)
  local message = "welcome, " .. player.Name
  print(message)
  return message
end

Players.PlayerAdded:Connect(greet)
Protected output
--[[ Protected by Voidexfuscator ]]
local function _eevESeceyi9e(_QRmlz4bCWUCu)
 local _gDFpczHGVw7a="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"
 _QRmlz4bCWUCu=_QRmlz4bCWUCu:gsub("[^".._gDFpczHGVw7a.."=]","")
 return (_QRmlz4bCWUCu:gsub(".",function(_wKZYnrNZk8Vp)
  if _wKZYnrNZk8Vp=="=" then return "" end
  local _yK9SMfVtRIxi=_gDFpczHGVw7a:find(_wKZYnrNZk8Vp,1,true)-1
  local _uSWgwj0tbjE6=""
  for _vjumtgeyQj2a=6,1,-1 do
   _uSWgwj0tbjE6=_uSWgwj0tbjE6..((_yK9SMfVtRIxi%2^_vjumtgeyQj2a-_yK9SMfVtRIxi%2^(_vjumtgeyQj2a-1)>0) and "1" or "0")
  end
  return _uSWgwj0tbjE6
 end))
end
local _IRYxoZwjFrgp={"oULzpoC0u9sFxDf4rGJzrICop/29k1esuqR=tq6sniR3uHtGzL9grRgcbkU=wLk50PPu..."}

Built around the actual obfuscator config

The public page mirrors the same profile the backend runs.

best profile

Uses the engine's strongest preset before the script leaves the server.

--best --force

VM pass

Pushes readable flow into generated runtime logic instead of leaving plain functions exposed.

--vm

harden pass

Adds the extra protection layer used by the source obfuscator project.

--harden

executor layers

Stacks six executor-oriented wrapping layers around the final payload.

--executor-layers 6

inner rounds

Runs two inner passes so the first decoded layer still is not the clean source.

--inner-rounds 2

packed output

Flattens into one-line output with 32-byte chunks for loader-friendly delivery.

--one-line --pack-chunk-size 32