No description
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
2026-04-26 13:59:49 +01:00
.github/workflows feat(ci): build medal for more platforms (#5) 2025-11-07 17:12:03 +00:00
ast feat: add support for Luau bytecode 7, 8 & 9 (#12) 2026-04-26 13:59:49 +01:00
cfg feat: cli + workflow (#1) 2025-09-18 20:56:14 +01:00
lua51-deserializer cargo fix 2022-11-16 20:39:47 +13:00
lua51-lifter feat: cli + workflow (#1) 2025-09-18 20:56:14 +01:00
luau-lifter feat: add support for Luau bytecode 7, 8 & 9 (#12) 2026-04-26 13:59:49 +01:00
luau-worker remove webstuff :p 2024-08-18 22:27:39 +12:00
medal feat: add support for Luau bytecode 7, 8 & 9 (#12) 2026-04-26 13:59:49 +01:00
restructure feat: cli + workflow (#1) 2025-09-18 20:56:14 +01:00
.gitignore .gitignore result.lua 2022-09-28 12:48:01 +13:00
Cargo.toml feat: cli + workflow (#1) 2025-09-18 20:56:14 +01:00
Dockerfile feat: cli + workflow (#1) 2025-09-18 20:56:14 +01:00
LICENSE Create LICENSE 2025-06-13 15:18:44 +01:00
MEDAL_LICENSE.txt Update and rename LICENSE.txt to MEDAL_LICENSE.txt 2025-06-13 15:13:52 +01:00
README.md chore: correct spelling (#7) 2025-11-14 15:41:52 +00:00
rust-toolchain feat: cli + workflow (#1) 2025-09-18 20:56:14 +01:00

Shiny

A blazingly fast Lua(u) decompiler, forked from medal.

Usage

Usage: medal.exe <COMMAND>

Commands:
  decompile  Decompile a single bytecode file, either raw or base64 encoded
  serve      Start a simple web server to handle decompiling
  help       Print this message or the help of the given subcommand(s)

Options:
  -h, --help     Print help
  -V, --version  Print version

Script

When using medal serve, you can use the decompiler directly inside of your executor. These scripts assume you are self-hosting the decompiler. If you are using some sort of API, make sure to replace http://localhost:3000 or http://10.0.2.2:3000 with the correct API base.

Windows

getgenv().decompile = function(script_instance)
  local bytecode = getscriptbytecode(script_instance)
  local encoded = crypt.base64encode(bytecode)
  return request(
    {
      Url = "http://localhost:3000/luau/decompile",
      Method = "POST",
      Body = encoded
    }
  ).Body
end

loadstring(game:HttpGet("https://raw.githubusercontent.com/luau/SynSaveInstance/main/saveinstance.luau"))()({
  mode = "scripts",
  NilInstances = true,
})

Android Emulator

Note

  • If you have a proxy enabled in WiFi settings, add 10.0.2.2 to the exceptions or disable the proxy
  • If you are using a VPN, allow LAN connections

Run the web-server on your actual machine.

If you are using an emulator, localhost will not work since that will refer to the emulator's device. Instead, we must use 10.0.2.2 instead. To test if everything is working, on your actual machine [http://localhost:3000/] should load fine, and on the emulator's browser, [http://10.0.2.2:3000/] should load. If your emulator is giving you HTTP connection fail errors, then you can try ngrok instead.

getgenv().decompile = function(script_instance)
  local bytecode = getscriptbytecode(script_instance)
  local encoded = crypt.base64encode(bytecode)
  return request(
    {
      Url = "http://10.0.2.2:3000/luau/decompile",
      Method = "POST",
      Body = encoded
    }
  ).Body
end

loadstring(game:HttpGet("https://raw.githubusercontent.com/luau/SynSaveInstance/main/saveinstance.luau"))()({
  mode = "scripts",
  NilInstances = true,
})

License

The original license for medal is retained, but the license for this fork has been changed to stop people from profiting from open source work for free.

Credits

All credits to the medal project goes to in honor and memory of

  • Jujhar Singh (KowalskiFX)
  • Mathias Pedersen (Customality)

Keep the Singh and Pedersen family in your guys' prayers, we love you both.