Skip to main content

Choosing an Executor

Not all executors are equal. The scripting techniques in this school — especially Executor APIs (hookfunction, getgc, getrawmetatable, file access) — require a fully UNC-compliant executor. Running them on a low-quality executor produces silent failures, crashes, or incomplete behavior.


What is UNC?

UNC (Unified Naming Convention) is a standard that defines which functions an executor must expose and how they must behave. A 99-100% UNC executor implements the full standard correctly.

Executors that partially implement UNC either:

  • Don't have the function at all (hookfunction is nil)
  • Have it but it's broken (wrong behavior, crashes)
  • Have renamed versions that don't match standard names

Scripts written to the UNC standard will not work reliably on partial executors.


Checking trusted executors and UNC scores

cheat.today is a community-maintained directory of Roblox executors with UNC compliance scores, trust ratings, and reviews. Before buying or using any executor, check it there first to see its UNC percentage and whether the community considers it safe.

Filter by UNC score — anything below 95% will likely have issues with the techniques in this school.


Potassium is the recommended executor for this workflow. It offers:

  • Full UNC compliance (99-100%)
  • Lifetime key for ~$15 — pay once, use forever, no subscription
  • Stable injection
  • Regular updates

A lifetime key at $15 is a one-time cost that's cheaper than a month of most competitors. Get it from the official Potassium site/Discord.


Executors that won't work for these tutorials

The following executors have incomplete UNC implementations or stability issues that will cause problems with the techniques covered here:

ExecutorIssue
XenoIncomplete UNC — many hooks and environment functions missing
SolaraBelow 99% UNC, inconsistent hook behavior
Most free executorsPartial or no UNC implementation

If you're using one of these and a script isn't working, the first thing to check is whether the function you're calling actually exists:

print(hookfunction) -- nil if not supported
print(getgc) -- nil if not supported
print(readfile) -- nil if not supported

Switching to Potassium fixes the majority of "it doesn't work" issues that are actually executor limitations.


For simpler scripts (no advanced APIs)

If you're only building scripts that use basic Roblox APIs (remote firing, property changes, Drawing API, BillboardGui) and don't need hookfunction, getgc, or file access, many executors will work fine. The limitation only matters for the advanced techniques in Executor APIs and Hooking & Intercepting.

For anything beyond that — use Potassium.


Injection workflow

  1. Open Roblox on your alt account (see Environment Setup)
  2. Join the game you want to test
  3. Open your executor
  4. Attach/inject into the Roblox process
  5. Open or paste your script (build/script.obf.lua or build/script.lua)
  6. Execute

During active development, use rb watch in your terminal so the script rebuilds every time you save a source file. Then just re-execute in your executor after each rebuild — no need to rejoin the game.