Learn
Engine Global
Luau globals

Summary

Functions
assert(value: Variant,errorMessage: string):Variant
collectgarbage(operation: string):Variant
Deprecated
error(message: Variant,level: number):()
getfenv(stack: Variant):table
Deprecated
getmetatable(t: Variant):Variant
loadstring(contents: string,chunkname: string):Variant
newproxy(addMetatable: boolean):userdata
next(t: table,lastKey: Variant):Variant,Variant
pcall(func: function,args: Tuple):boolean,Variant
print(params: Tuple):()
rawequal(v1: Variant,v2: Variant):boolean
rawget(t: table,index: Variant):Variant
rawset(t: table,index: Variant,value: Variant):table
require(module: ModuleScript | string | number):Variant
select(index: Variant,args: Tuple):Tuple
setfenv(f: Variant,fenv: table):Variant
Deprecated
setmetatable(t: table,newMeta: Variant):table
tonumber(arg: Variant,base: number):Variant
tostring(e: Variant):string
type(v: Variant):string
unpack(list: table,i: number,j: number):Variant
xpcall(f: function,err: function,args: Tuple):boolean,Variant

API Reference
Functions
assert
assert(
value:Variant, errorMessage:string
):Variant
Parameters
value:Variant
errorMessage:string
Default Value: assertion failed!
Returns
Variant
Code Samples
Assert
local product = 90 * 4
assert(product == 360, "Oh dear, multiplication is broken")
-- The line above does nothing, because 90 times 4 is 360

collectgarbage
Deprecated

error
error(
message:Variant, level:number
):()
Parameters
message:Variant
level:number
Default Value: 1
Returns
()

gcinfo
gcinfo():number
Returns

getfenv
Deprecated

getmetatable
getmetatable(t:Variant):Variant
Parameters
t:Variant
Returns
Variant
Code Samples
Getmetatable
local meta = {}
local t = setmetatable({}, meta)
print(getmetatable(t) == meta) --> true
-- Make the original metatable unrecoverable by setting the __metatable metamethod:
meta.__metatable = "protected"
print(getmetatable(t)) --> protected

ipairs
Parameters
Code Samples
Ipairs
local fruits = {"apples", "oranges", "kiwi"}
for index, fruit in ipairs(fruits) do
print(index, fruit) --> 1 apples, 2 oranges, 3 kiwi, etc...
end

loadstring
loadstring(
contents:string, chunkname:string
):Variant
Parameters
contents:string
chunkname:string
Returns
Variant

newproxy
newproxy(addMetatable:boolean):userdata
Parameters
addMetatable:boolean
Default Value: false
Returns

next
next(
t:table, lastKey:Variant
):Variant,Variant
Parameters
lastKey:Variant
Default Value: nil
Returns
Variant, Variant

pairs
pairs(t:table):function,table,Variant
Parameters
Returns
function, table, Variant
Code Samples
Pairs
local scores = {
["John"] = 5,
["Sally"] = 10
}
for name, score in pairs(scores) do
print(name .. " has score: " .. score)
end

pcall
pcall(
func:function, args:Tuple
):boolean,Variant
Parameters
args:Tuple
Returns
boolean, Variant
Code Samples
Pcall
local function divideByFive(n: number): number
return n / 5
end
local success, errorMessage = pcall(divideByFive, "notANumber") -- Results in error...
if success then
-- Handle successful response...
else
print("Error message:", errorMessage)
end

print
print(params:Tuple):()
Parameters
params:Tuple
Returns
()

rawequal
rawequal(
v1:Variant, v2:Variant
Parameters
v1:Variant
v2:Variant
Returns

rawget
rawget(
t:table, index:Variant
):Variant
Parameters
index:Variant
Returns
Variant

rawlen
rawlen(t:table):number
Parameters
Returns

rawset
rawset(
t:table, index:Variant, value:Variant
Parameters
index:Variant
value:Variant
Returns

require
require(module:ModuleScript | string | number):Variant
Parameters
Returns
Variant
Code Samples
Require Module Resolution
-- "./" prefix is equivalent to script.Parent
require("./MySibling")
require((script.Parent).MySibling)
-- "../" prefix is equivalent to script.Parent.Parent
require("../SiblingOfMyParent")
require((script.Parent.Parent).SiblingOfMyParent)
-- "../" can be chained to go up multiple levels
require("../../SiblingOfMyGrandparent")
require((script.Parent.Parent).Parent.SiblingOfMyGrandparent)
-- "@self" prefix corresponds to the script itself
require("@self/MyChild")
require((script).MyChild)
-- "@game" prefix corresponds to the DataModel root
require("@game/ReplicatedStorage/Shared/MyModule")
require((game).ReplicatedStorage.Shared.MyModule)

select
select(
index:Variant, args:Tuple
Parameters
index:Variant
args:Tuple
Returns
Code Samples
Select
print(select(2, "A", "B", "C")) --> B C
print(select(-1, "A", "B", "C")) --> C
print(select("#", "A", "B", "C")) --> 3

setfenv
Deprecated

setmetatable
setmetatable(
t:table, newMeta:Variant
Parameters
newMeta:Variant
Returns
Code Samples
Setmetatable
local meta = {__metatable = "protected"}
local t = {}
setmetatable(t, meta) -- This sets the metatable of t
-- We now have a table, t, with a metatable. If we try to change it...
local ok, err = pcall(setmetatable, t, {})
assert(not ok and err:find("protected")) -- Error: cannot change a protected metatable

tonumber
tonumber(
arg:Variant, base:number
):Variant
Parameters
arg:Variant
base:number
Default Value: 10
Returns
Variant
Code Samples
Tonumber
print(tonumber("1337")) --> 1337 (assumes base 10, decimal)
print(tonumber("1.25")) --> 1.25 (base 10 may have decimal portions)
print(tonumber("3e2")) --> 300 (base 10 may have exponent portion, 3 × 10 ^ 2)
print(tonumber("25", 8)) --> 21 (base 8, octal)
print(tonumber("0x100")) --> 256 (assumes base 16, hexadecimal)
print(tonumber("roblox")) --> nil (does not raise an error)
-- Tip: use with assert if you would like unconvertable numbers to raise an error
local ok, err = pcall(function() assert(tonumber("roblox")) end)
print(ok and "Success" or "Error: " .. tostring(err)) --> Error: assertion failed

tostring
tostring(e:Variant):string
Parameters
e:Variant
Returns
Code Samples
Tostring
local isRobloxCool = true
-- Convert the boolean to a string then concatenate:
print("Roblox is cool: " .. tostring(isRobloxCool)) --> Roblox is cool: true

type
type(v:Variant):string
Parameters
v:Variant
Returns

unpack
unpack(
list:table, i:number, j:number
):Variant
Parameters
list:table
Default Value: 1
Default Value: #list
Returns
Variant

xpcall
xpcall(
f:function, err:function, args:Tuple
):boolean,Variant
Parameters
args:Tuple
Returns
boolean, Variant

Properties
_G

_VERSION
_VERSION:string

©2026 Roblox Corporation. Roblox, the Roblox logo and Powering Imagination are among our registered and unregistered trademarks in the U.S. and other countries.