Settings
Standard Settings
Standard settings are available to all users.
Target Version
Specifies which version of Lua and platform the obfuscator should target. In most cases, this functions as a platform lock. For more information on picking a platform and understanding the behaviors of each version, see What Settings Should I Use?
Optimization Level
This setting is entirely for performance and file size optimization and will not impact the security of your script.
Specifies what level of optimization Luraph's compiler will apply to your script. Higher levels may break code with rare cases of strict metamethod ordering, usage of undefined Lua behavior, or interaction with external globals. This setting should only be changed from the default by experienced developers or under the guidance of a Luraph staff member.
Level 1 Optimizations:
- Constant Folding
- Jump Merging
Level 2 Optimizations:
- Constant Propagation
Level 3 Optimizations:
- Global Constant Folding
- Global Import Localization
All optimization levels apply all the optimizations from lower levels.
Disable Line Information
This setting is entirely for performance and file size optimization and will not impact the security of your script.
Disables the error handling routine that embeds original line information into your script. While this option will improve performance and fix the stack level limitation, you will not see line information when your script throws any errors.
Static Environment
Asserts that the environment reference of all script functions will never change, allowing additional performance benefits and removal of internal Luraph calls to getfenv/setfenv. This can prevent obfuscated files from deoptimizing the environment on Luau-based platforms.
Changing the environment reference of any Luraph functions while this setting is enabled will lead to undefined behavior.
Enable Compatibility Mode
This mode disables any syntax features and some internal security features to increase compatibility in modified Lua versions. Acts as a partial replacement to the removed Target Version Universal option. This setting should only be turned on by experienced developers or under the guidance of a Luraph staff member.
Use Debug Library
Uses Lua's debug library to add enhanced anti-tampering security to the VM. This also adds protection against formatting tools and hook-based attacks. This option will only work if your environment has access to the full debug library. If your environment uses a modified or restricted library, this setting may have issues depending on the modifications.
Enable GC Fixes
This setting is entirely for GC compliance and will not impact the security of your script.
Enables certain fixes to tighten the GC compliance of Luraph. Due to the way the VM is built, certain objects may not be garbage collected as fast as they should when this option is off. Due to the heavy performance cost of this option, it is recommended to keep it off unless your script relies on very specific garbage collection timing. This setting should only be turned on by experienced developers or under the guidance of a Luraph staff member.
Premium Settings
Premium settings are only available to Luraph Now, Premium, Commercial, and Enterprise users.
Intense VM Structure
Adds extra layers of obfuscation to the VM structure for extra security. This should make analyzing the functions of the VM more difficult. While load time may slightly increase, runtime performance should not be impacted by using this option.
VM Compression
This setting is entirely for file size optimization and will not impact the security of your script.
Uses powerful compression algorithms to compress your obfuscated file into a smaller loader file. This feature requires load or loadstring to be available and will error if they are not present. Script load time may be slightly impacted on very large files due to the extra processing required to decompress the obfuscated file.
Dependent Settings
Dependent settings can only be set to their default values unless all their dependencies are met.
Enable FFI Library
This setting is entirely for compatibility and will not impact the security of your script.
Allows FFI-based features (such as explicit literals for LuaJIT's C types) to be enabled. Enabling this feature will make your obfuscated script require FFI support to execute. Requires target version to be set as LuaJIT.
Hardcode Globals
Hardcodes global reads and writes directly into the VM for faster performance and better compatibility with changing environments. This will make all global variable names easily readable in your obfuscated script. Global variables are inherently insecure because their names cannot be stripped; therefore, this setting should be safe for nearly all scripts. Requires the target version to be set to a platform with getfenv (e.g., Lua 5.1, LuaJIT, Luau, or Roblox).
What Settings Should I Use?
Picking the right settings may be confusing for first-time users. Following this guide should provide the correct settings to use during obfuscation.
Target Version:
This option should be selected based on the platform you plan to run your obfuscated file on.
Vanilla Platforms:
- Lua 5.1:
Lua 5.1 - Lua 5.2:
Lua 5.2 - Lua 5.3:
Lua 5.3 - Lua 5.4:
Lua 5.4
Luau & Roblox:
- Luau:
Luau - Roblox:
Roblox
LuaJIT Platforms:
- LuaJIT 2.0:
LuaJIT - LuaJIT 2.1:
LuaJIT
Miscellaneous Platforms:
- Warcraft 3:
Warcraft 3 - Garry’s Mod:
Garry's Mod - World of Warcraft:
World of Warcraft - FiveM:
FiveM(Withlua54 'yes'in yourfxmanifest.lua) - Multi-Theft Auto:
Lua 5.1(WithHARDCODE_GLOBALSandSTATIC_ENVIRONMENT)
If your platform is not specifically listed on this page, it is likely it is still supported. Contact support to get assistance in figuring out what version you should be selecting.
Optimization Level
This should be left on the default value (Level 2) unless you are instructed otherwise. Level 3 can also be selected, but it may introduce certain side effects if your script accesses globals that are changed externally.
Disable Line Information
By enabling this option, Luraph's error-handling system will be removed. This means that error lines will not be visible in errors, making debugging harder. If your script has been tested and does not error, enabling this setting should not mean anything.
Disabling line information will improve performance and also fix stack level limitations. If your script relies on deep recursion or specific stack level behavior, enabling this option will fix any issues caused by error handling. For debugging, unchecking this option is recommended. For performance and stack level bug fixes, this option should be checked.
Static Environment
This setting should be enabled if your environment never changes and can benefit from environment optimizations. Roblox and Luau developers should always use this setting (if you are not using getfenv/setfenv) as it prevents environment deoptimization. Multi-Theft Auto developers should always use this setting.
Enable Compatibility Mode
This setting should be left disabled unless the obfuscated file has syntax or initialization errors on a correctly selected Target Version. If your obfuscated script throws errors that are unrelated to syntax, this will not fix those issues (instead, open a support ticket!).
Use Debug Library
This setting should only be used if your environment has access to the debug library. If your library is incomplete or modified, this setting may not work properly. This setting has been designed to work on the debug libraries for Lua 5.1-5.4, LuaJIT, and Luau. If you are on a platform that uses a custom sandbox, this feature should be tested first. 3rd-party Roblox Software with extended debug libraries tends to not properly support this feature.
Enable GC Fixes
This setting should only be enabled if your script interacts with or uses a lot of objects that go out of scope in odd ways. Due to the performance impact of this setting, you should always leave it unchecked until you have tested your script and concluded that it is certainly needed.
Intense VM Structure
This setting should work on all platforms and is recommended to always be enabled for security benefits.
VM Compression
This setting will only work if your environment has loadstring or load available. If your environment does not have these functions, your script will error. If you need a smaller file size and can tolerate the possibility of increased loading time, enable this option.
For Roblox game developers, this setting will only work if the LoadStringEnabled property is checked in ServerScriptService. However, 3rd-party Roblox script injection software should have the loadstring function available by default.
Enable FFI Library
This setting should only be enabled if your platform is guaranteed to support the FFI library. This option should never be enabled on Garry's Mod, as it does not support the FFI library.
Hardcode Globals
This setting should be enabled if you are comfortable with global names being exposed in your script. Variables should always be localized in your scripts for maximum security and performance benefits; however, if you are not already doing so, this setting may expose sensitive global names. Multi-Theft Auto developers should always use this setting.