ZeroBrane Studio: a portable Lua IDE built in Lua, with a remote debugger for many engines
Lightweight Lua-based IDE for Lua with code completion, syntax highlighting, live coding, remote debugger, and code analyzer; supports Lua 5.1, 5.2, 5.3, 5.4, LuaJIT and other Lua interpreters on Windows, macOS, and Linux
At a glance
- What is it?
- ZeroBrane Studio is a lightweight, cross-platform Lua IDE written in Lua, with remote debugging, live coding and static analysis for Lua 5.1 through 5.4, LuaJIT and a long list of embedded engines. It suits people debugging Lua inside another host process, and it is not a general-purpose editor.
- Who is it for?
- Adopt ZeroBrane Studio if you are debugging Lua that runs inside another process (LÖVE, OpenResty, Redis, a game engine) and you want a debugger that speaks to the running interpreter instead of guessing. Skip it if you want a general-purpose editor with a large extension ecosystem; this is a Lua tool that happens to highlight 125+ other languages, not the reverse.
- Can I use it commercially?
- Check first. The repository uses a licence we do not classify automatically, so read its LICENSE file before any commercial use.
- Is it still maintained?
- Yes. The repository last received commits 25 days ago.
- What is it written in?
- Mainly Lua, according to GitHub's language statistics.
Answers come from the project's GitHub data, last synced on September 24, 2026, and from our analysis. They are not legal advice.
Editorial analysis
The gap ZeroBrane Studio fills: Lua running inside someone else's process
Most Lua code does not run in a standalone interpreter. It runs inside LÖVE, inside OpenResty/Nginx, inside Redis, inside a game engine, inside Adobe Lightroom. When that code misbehaves, a normal editor cannot help you, because the Lua state you want to inspect lives in another process, often on another machine. The README lists debugging support for Lua 5.1, 5.2, 5.3, 5.4, LuaJIT, LÖVE, Moai, Gideros, Corona, Marmalade Quick, Cocos2d-x, OpenResty/Nginx, Torch7, Redis, GSL-shell, Adobe Lightroom, Lapis and Moonscript, with links to a separate debugging note for each. That list is the product. The editor around it is a delivery mechanism for the debugger.
The audience is therefore narrow and specific: someone writing Lua plugins, game scripts or server-side Lua who needs breakpoints and variable inspection in a process they did not start. If you write plain Lua scripts that you run yourself, a text editor plus print statements will usually be faster to set up. If you write Lua inside a host application, the remote debugger is the reason to look here.
How the IDE is put together: Lua modules, wxWidgets, and a debugger that attaches
The repository layout tells you most of the architecture. Source lives in src/, extensions in packages/, interpreter definitions in interpreters/, bundled C libraries in lualibs/, configuration in cfg/, and translations in cfg/i18n/. The README states the IDE is written in Lua and extensible with Lua packages, and the topics list wxwidgets-applications, so the GUI layer is wxWidgets while the logic above it is Lua. That is why the three extension points in the README are all file-based: packages/ for plugins, cfg/i18n/ for translations, cfg/ for user configuration. There is no plugin API to learn beyond the language you are already using.
The debugger is the part with real machinery. The README describes both local and remote debugging, and the per-engine documentation links imply the mechanism differs by host: the IDE has to speak whatever debugging interface each engine exposes, or inject a hook. The bundled libraries (luasocket, luafilesystem, lpeg, luasec) are compiled for all supported Lua versions, which is what makes a single install able to talk to several interpreters. Static analysis, function outline, go-to-definition and scope-aware renaming are editor-side features that work on the source without a running interpreter, so they degrade gracefully when the debugger cannot attach.
Installing ZeroBrane Studio and running a first script
The README says the IDE can be installed into and run from any directory, and that no compilation is needed for any installation option. There are three: a platform package from the project site, a repository snapshot from the releases page, or a clone of the repository for the current development version. The clone route is the one that works identically on every platform.
git clone https://github.com/pkulchenko/ZeroBraneStudio.git
cd ZeroBraneStudio
./zbstudio.shOn Linux and macOS the README gives ./zbstudio.sh for a snapshot or clone; on Windows you run zbstudio from the install directory or make a shortcut to zbstudio.exe. A packaged install on Linux uses the zbstudio command instead. The general form takes an optional configuration override, an optional project directory, and optional files.
zbstudio [option] [<project directory>] [<filename>...]
zbstudio -cfg "editor.fontsize=16"The README shows the -cfg option as the way to overwrite default configuration. It also gives two common invocations: passing filenames to open them, and passing a project directory to set the project root and optionally open files inside it. After launch you should see the project view, which auto-refreshes and can hide files and directories, and the interactive console, where you can run snippets locally or against a remote interpreter. The README points to a getting-started overview and a tutorials page for the debugging and live-coding walkthroughs; those, not this article, are where the per-engine setup steps live.
Where ZeroBrane Studio is the wrong tool
The licence field in the repository metadata reads NOASSERTION, which means GitHub could not match the LICENSE file to a known identifier. The README does not discuss licensing at all. Before you ship anything that depends on redistributing the IDE or its bundled libraries, read LICENSE and the licences of luasocket, luafilesystem, lpeg and luasec yourself; a permissive-looking tool with four bundled C libraries is four separate licence questions.
The second limitation is the one the README advertises as a feature. Syntax highlighting and folding for 125+ languages sounds generous, but ZeroBrane Studio is a Lua IDE. Its completion, scope-aware renaming, static analysis and debugger are Lua features. If your work is mostly Python or Go with occasional Lua, you are paying the cost of a niche editor to get one good feature.
Third, the remote debugging story is per-engine and documented outside the README, on separate pages per host. That is a maintenance surface: an engine changes its hook interface and the corresponding debugging path is the thing that breaks. The README does not document rollback or version compatibility between the IDE and each host engine, so if you pin an old engine you should check the changelog before upgrading the IDE.
ZeroBrane Studio against a general editor plus a Lua language server
The obvious alternative is the editor you already use, with a Lua language server plugin for completion and diagnostics. That combination is better at being your editor: one configuration, one keymap, one set of extensions, and it covers every language you write. It is worse at being a debugger. A language server does static analysis, which is what ZeroBrane Studio's analyzer does, but it does not attach to a Lua state inside LÖVE or OpenResty and let you step through it.
The difference in approach is therefore not feature count but where the work happens. A language server reads your files and never touches a running process. ZeroBrane Studio's debugger is designed around connecting to a live interpreter, which is why the project maintains a separate debugging document per engine instead of one generic page. If your debugging needs are satisfied by reading code and adding prints, the general editor wins on every other axis. If you need to inspect a table inside a running game or an Nginx worker, the language server has nothing to offer and this is the gap the IDE exists to fill.
Maintenance cost and what the repository tells you
The last push to the default branch was on 2026-09-06, and the repository is not archived. That is recent enough that the project is not abandoned, but the README gives no release cadence and no retrieved releases were available, so there is no published version history to plan upgrades against. CHANGELOG.md sits at the top level, and that file is where you should look for what changed between the version you have and the one you are considering.
Upgrade cost is low by construction. The README states no compilation is needed, the IDE runs from any directory, and configuration is file-based under cfg/. That means an upgrade is a directory swap plus a diff of your cfg/ changes, not a build. The risk sits in the bundled libraries: they are compiled for all supported Lua versions, and if you have an unusual platform or an interpreter version the build/ scripts exist to recompile them. Budget for that only if the prebuilt binaries do not match your target.
Editorial conclusion
Adopt ZeroBrane Studio if you are debugging Lua that runs inside another process (LÖVE, OpenResty, Redis, a game engine) and you want a debugger that speaks to the running interpreter instead of guessing. Skip it if you want a general-purpose editor with a large extension ecosystem; this is a Lua tool that happens to highlight 125+ other languages, not the reverse. Before committing, verify the three things the README leaves open: how your platform's package installs and uninstalls, whether your target engine has a documented debugging path in the documentation, and how the NOASSERTION licence identifier in the repository maps to the actual LICENSE file.
Frequently asked questions
What is ZeroBrane Studio?
It is a lightweight cross-platform Lua IDE with code completion, syntax highlighting, a remote debugger, a code analyzer and live coding. It is written in Lua, extensible with Lua packages, and supports Lua 5.1, 5.2, 5.3, 5.4, LuaJIT and a long list of other Lua engines.
How do I install ZeroBrane Studio on Linux?
The README gives three options: a platform installation package, a repository snapshot from the releases page, or a clone of the repository. For a snapshot or clone on Linux you run ./zbstudio.sh; when installed from the package you run the zbstudio command. No compilation is needed for any of the options.
How do I use ZeroBrane Studio?
Launch it with the zbstudio command, or ./zbstudio.sh from a clone, optionally passing a project directory and filenames. The README points new users to a getting-started overview, a FAQ, and tutorials covering debugging and live coding for different environments.
Is ZeroBrane Studio free?
The repository's licence field reads NOASSERTION, meaning GitHub could not match the LICENSE file to a known identifier, and the README does not discuss licensing. Read the LICENSE file and the licences of the bundled libraries (luasocket, luafilesystem, lpeg, luasec) before relying on any particular terms.
What is the best code editor for Lua?
The README positions ZeroBrane Studio as a Lua IDE with scope-aware completion, static analysis and an integrated debugger for Lua 5.1 through 5.4 and LuaJIT. Whether it is the best fit depends on whether you need to attach a debugger to Lua running inside another host process, which is the capability the project documents per engine.
Official sources
Add this badge to your README
If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.
[](https://hysenlabs.com/projects/pkulchenko-zerobranestudio)