Join the Cherry community
Updates, support & feedback — discord.gg/pkYtZFy2ME
Join Server
Luau Bytecode Decompiler

READ THE UNREADABLE BYTECODE.

Cherry reconstructs human-readable Lua source from compiled Luau bytecode. Fast, accurate, built for Roblox — powered by Rust.

Get the script See comparison
drag the slider
cherry.decompile — comparison view
slide to compare →
original script.lua
-- original source local HelloWorld = "Hello World!" local HelloWorld2 = "How are You?" local greeting = HelloWorld .. HelloWorld2 print(greeting) local function greet(name) local msg = "Hello, " .. name .. "!" return msg end local players = game:GetService("Players") for _, player in ipairs(players:GetPlayers()) do local result = greet(player.Name) print(result) end
decompiled cherry_output.lua
-- cherry decompiled output local v1 = "Hello World!" local v2 = "How are You?" local v3 = v1 .. v2 print(v3) local function v4(v5) local v6 = "Hello, " .. v5 .. "!" return v6 end local v7 = game:GetService("Players") for v8, v9 in ipairs(v7:GetPlayers()) do local v10 = v4(v9.Name) print(v10) end
copy & paste into your executor
cherry.lua
---@param script_instance LuaSourceContainer ---@return string local function decompile(script_instance) return request({ Url = "https://cherrywin.xyz/luau/decompile", Method = "POST", Headers = { ["Content-Type"] = "application/json" }, Body = game:GetService("HttpService"):JSONEncode({ bytecode = crypt.base64encode(getscriptbytecode(script_instance)), encode_key = 203, settings = { LineComment = false, FunctionComment = false, UpvalueComment = false, renamingType = "none", }, }), }).Body end getgenv().decompile = decompile
endpoint
POST https://cherrywin.xyz/luau/decompile Content-Type: application/json
request body
{ "bytecode": "<base64>", "encode_key": 203, "settings": { "renamingType": "none" // or "semantic" } }
01
Sub-50ms speed
Rust-native engine processes thousands of lines in milliseconds. No cold starts, no queue.
02
SSA reconstruction
Static single-assignment analysis recovers variable scopes, loops, and control flow accurately.
03
Semantic renaming
Recovers names from require(), GetService(), WaitForChild() call patterns.
04
Encode key support
Handles Roblox bytecode encoding with configurable key (default 203) for accurate parsing.
05
Rich annotations
Optional line, function, and upvalue comments to aid understanding of decompiled output.
06
REST API
Simple HTTP endpoint — integrate into any tool, exploit, or script pipeline.
about cherry

PURE RUST.
BUILT FOR
PRECISION.

Cherry is a high-performance Luau decompiler written entirely in Rust. It reconstructs readable Lua source from raw or base64-encoded bytecode produced by the Roblox engine.

The core pipeline uses control-flow graph analysis, SSA form, and structured loop detection — producing output that mirrors original source, not a raw disassembly dump.

-- cherry decompiled · 3247 lines · 43ms local v1 = game:GetService("Players") local v2 = game:GetService("ReplicatedStorage") local v3 = v2:WaitForChild("Remotes") local function v4(v5) local v6 = v5:WaitForChild("leaderstats") local v7 = v6:WaitForChild("Coins") v7.Value = v7.Value + 100 end v1.PlayerAdded:Connect(v4) v3.OnServerEvent:Connect(function(v8) v4(v8) end)