RBX Editor
A browser Luau editor with Roblox API autocomplete. Attach a game to run what you write.
RBX Editor lives at rbx.lol/editor, separate from the debugger tabs. It works with no game attached.
| Works with no game | Needs a game attached |
|---|---|
| Writing, saving, the file tree | Run |
| Autocomplete for the Roblox API and executor functions | The game's own modules |
| Lint markers | Live console output |
Attach a game at the top opens the same room panel the debugger uses. The room code is shared between the two pages, so a game attached on either shows up on both.
Files#
Two folders, modules/ and projects/. A new editor is seeded once with the
Ember module, a runnable Ember showcase and a hello.luau.
Files are stored in this browser, in IndexedDB, separate from decompiled game sources. Clearing captured data does not touch them. Each open file keeps its own undo history, so undo in one never rewinds another.
Ctrl+S saves. New starts an unsaved scratch buffer that still survives a
reload. Saving an unsaved buffer asks which folder it belongs in.
Running#
Ctrl+Enter or Run executes the script in the attached game, not in the
browser. print and warn are captured in-game and returned with the script's
return value, so output arrives even when the live stream is quiet. An error is
caught and printed rather than lost.
The output pane filters by level, filters by text, and has a Live toggle that mirrors the game's own console into it. It keeps the last 2,000 lines.
Requiring modules#
require(Name) resolves to your own file in modules/ with that name. Referenced
modules are compiled into the script that gets sent, so nothing has to exist
in-game. After a require, the module's functions, values and nested tables appear
in autocomplete. Anything the editor does not own falls through to the real
require.
The suggestion panel shows each exported function's signature and nearby source comment. Accepting a function inserts its arguments as tab stops. Exported tables can be completed again for their nested members.
local Combat = require(game.ReplicatedStorage.Modules.Combat)A require of a game module works because your code runs inside the game. With
Include live-game scripts enabled, naming one decompiles that module in the
background and adds its returned table to autocomplete.
Autocomplete options#
The Autocomplete row below the Modules list contains three settings:
| Setting | Effect |
|---|---|
| Smart variable types | Tracks assignments and typed locals so a variable gets members from its Roblox class. |
| Live instance paths | Adds the attached game's real children while completing instance paths. |
| Include live-game scripts | Off, ModuleScripts only, or every Script class. Controls live script paths and game-module exports. |
User modules and the Roblox API work independently of these settings.
Relative paths are not resolved
require(script.Parent.Thing) runs fine, but the editor cannot tell which module
you mean, so it offers no completions for it.