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. Anything the editor does not own falls through to the real require.
local Combat = require(game.ReplicatedStorage.Modules.Combat)A require of a game module works because your code runs inside the game. Naming
one also decompiles that single module in the background so its functions
autocomplete, which is why a path you just typed lights up a second later.
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.