Docs
Panda-K ObfuscatorPlatform Support: Roblox, Luau & Lua
On this page

For Developers · Panda-K

Platform Support: Roblox, Luau & Lua

Roblox runs Luau. Standalone Lua support targets Lua 5.1. Choose the language and runtime separately from the protection preset.

Supported language targets

Language and runtime support
TargetSource supportRuntime requirements
Roblox / LuauDefault dialect. Types, generics, type assertions, compound assignment, continue, if expressions, interpolation, floor division and generalized iteration.A Luau host. Roblox APIs such as game, task, Vector3 and require come from the host, not Panda.
Standalone LuauSame Luau syntax. Types and function attributes are erased; Panda does not run the type checker.Provide every host API used by your script. A Roblox script does not become portable simply because it compiles.
Lua 5.1Legacy Lua 5.1 syntax through the lua51 dialect. No Luau-only syntax.A compatible Lua 5.1 host and the libraries your source requires. Native Luau emission and runtime-keyed string macros are unavailable.
Lua 5.2 / 5.3 / 5.4 / LuaJITNo dedicated compatibility target is promised by this reference.Lua 5.1 output may work on some hosts; test the exact host and libraries. Do not submit newer syntax expecting automatic conversion.

Roblox dashboard workflow

The Kryptic Panda-K upload path targets LuaU. Select Panda-K, choose Balanced or Max, upload the script, and test the result in the intended Roblox environment. The preset does not switch the parser to plain Lua.

Roblox Studio, a live Roblox client, a server Script and third-party execution environments expose different capabilities. Compilation does not prove an API is available. Executor-only networking, filesystem or debug functions are not Roblox Studio APIs and are not supplied by Panda.

Language support is not an executor certification

Panda's automated Roblox examples use mocks, not a certification of every live Studio or executor environment. Test networking, yielding, callbacks, services and performance in your actual host before releasing.

Direct API language selection

For an operator-managed Panda API, choose language: "luau" (default) or language: "lua51". The legacy luaVersion field also accepts LuaU or 5.1. These examples are API request bodies, not additional dashboard controls.

{
  "code": "local n: number = 7; print(n // 2)",
  "preset": "Panda-Xenon",
  "language": "luau"
}
{
  "code": "local n = 7; print(math.floor(n / 2))",
  "preset": "Panda-Xenon",
  "language": "lua51"
}

Do not point client-side scripts at a private obfuscation API. Your backend or operator submits builds.

Macro support by target

  • Value macros, one-argument encrypted constants and VM function policies work with both targets.
  • The three-argument PANDA_ENCRYPT_STRING form needs Luau output and bit32. Lua 5.1 builds reject this form.
  • PANDA_NO_VIRTUALIZE emits native Luau only. In Lua 5.1 builds it stays virtualized with a PM004 warning; strict macro mode makes that warning an error.
  • --!panda: and --!pk: directives require the Luau frontend. In Lua 5.1 they remain comments; use function wrappers instead.
  • The provided development header uses Luau syntax. It is intended for Studio or standalone Luau, not direct execution in a Lua 5.1 interpreter.

See Macro Documentation for the complete contracts.

Known boundaries

  • Luau's compiler limits still apply before virtualization, including the 200-active-local limit and parser nesting limits. Split large functions or group state into table fields.
  • Unicode is supported inside Luau strings and comments. Use ASCII identifiers; quote non-ASCII table keys.
  • Generalized iteration over metatables uses a coroutine bridge. Iterators that depend on thread identity or yield into their caller need separate validation.
  • Debug stack and environment introspection can differ inside a custom VM. Avoid depending on the original function's exact stack shape.
  • Virtualization changes execution cost. Benchmark frequent callbacks, render loops and input handlers under the selected preset.