Open-source project
orbitalquark/textadept avatar
orbitalquark/textadept

Textadept: a small editor where Lua is the extension surface

Textadept is a fast, minimalist, and remarkably extensible cross-platform text editor for programmers.

922 stars55 forksLuaMIT

At a glance

What is it?
Textadept is a cross-platform text editor for programmers, written in C, C++ and Lua, distributed as self-contained executables that run without installation, with a terminal build, a Lua API and optional modules for debugging, diffing, formatting, LSP and spell checking. It fits a developer who wants an editor that starts instantly and can be scripted end to end.
Who is it for?
Adopt Textadept when you want a single editor that runs from an unpacked archive on Windows, macOS, Linux or BSD, when you work over SSH and want the same interface in a terminal, and when you are willing to write your own tooling in Lua instead of waiting for a plugin ecosystem.
Can I use it commercially?
Yes. MIT is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
Is it still maintained?
Yes. The repository last received commits 52 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 October 23, 2026, and from our analysis. They are not legal advice.

Editorial analysis

An editor you unpack and run, with no installer involved

Textadept is a fast, minimalist and extensible cross-platform text editor for programmers. The implementation is a combination of C, C++, and Lua, and it runs on Windows, macOS, Linux and BSD.

The distribution model is the first thing that separates it from most editors of its kind. The pre-built binaries are self-contained executables and no installation is necessary. You unpack the archive anywhere you have permission to and run the executable, which means the editor can live on a USB stick, in a container image, on a jump host or in a home directory, and it starts immediately because there is no runtime to bootstrap.

That choice has a visible consequence on some platforms. Lua and the other third-party dependencies are compiled into the application itself, and a Qt runtime is distributed with the Windows and macOS builds. On Linux the situation differs, because there the GUI version expects Qt 5 or GTK 3 and the terminal version expects ncurses to be present on the system.

One line in the feature list is worth pausing on, because it is unusual to see stated plainly in an editor README: Textadept does not connect to the internet. It is just a text editor. For a developer who has spent years with editors that phone home for telemetry, language model features and update checks, that is a feature rather than a missing one.

The same editor has a terminal build on every platform

The install table shows the executables, and the pattern is consistent: every platform ships a graphical version and a terminal version.

bash
textadept.exe
textadept-curses.exe
textadept
textadept-gtk
textadept-curses

On Windows that is textadept.exe for the GUI and textadept-curses.exe for the terminal. On macOS the GUI is Textadept.app, with a ta shell script alongside it, and the terminal build lives inside the bundle at Textadept.app/Contents/MacOS/textadept-curses. On Linux you get the Qt build as textadept, the GTK build as textadept-gtk, and textadept-curses for the terminal.

Having the same editor in both worlds is the practical point. You can pair with a remote host over SSH and keep the same key bindings, the same snippets and the same Lua extensions you use locally, and the terminal build is not a stripped down substitute, it is the same editor driven through ncurses.

The macOS note is the sort of detail that saves an afternoon. If the system reports that Textadept is damaged and cannot be opened, the fix is to remove the quarantine attribute from the app bundle.

bash
xattr -d com.apple.quarantine /path/to/Textadept.app

Optional modules for LSP, diffing, debuggers and formatting

The project states that while Textadept contains plenty of built-in productivity tools, some extra features and functionality are available as optional modules. The list is specific: language debuggers, file comparison, source code formatting, a Language Server Protocol client, scratch buffers and spell checking.

Each of those is a separate repository and a separate download, which is a deliberate extension model rather than a limitation. A minimal editor that starts instantly is easier to reason about than one carrying a debugger adapter for twenty languages, and the modules let a user add exactly the piece they need.

The cost is that a feature is only present if you install it, and that the modules have to match the release channel of the editor you are running. The download table lists an Extra modules archive for each of the three channels, stable, unstable and nightly, which is a sensible way to ship them.

The LSP client being optional is the detail that matters most for a modern workflow. Language servers are the usual way an editor gets completion and diagnostics, and Textadept treats that as one module among several rather than as the core of the product.

Lua reaches into nearly every aspect of the editor

The feature list says that almost every aspect of the editor can be scripted, extended and customized with Lua, and the repository layout backs that up. The top level holds a src directory for the C and C++ sources, a core directory, a modules directory, a themes directory, scripts, tests and docs, and an init.lua at the root.

The build is driven by CMakeLists.txt, and the project configuration files show how the whole thing is treated as a code project rather than a binary release. There is a .clang-format for the C side, a .lua-format and a .luacheckrc for the Lua side, a .luacov for coverage, and a .lua-lsp configuration, so the Lua code that ships inside the editor is linted, formatted and covered like any other source.

Two documentation files sit next to the README in the project, manual.md and api.md, the manual for using the editor and the API documentation for the Lua surface. The homepage is at orbitalquark.github.io/textadept.

For a user, the practical question is how deep the Lua goes. The claim is that almost every aspect is scriptable, and the presence of key chains, key modes and language-specific key bindings in the feature list suggests that the configuration model is a scripting model rather than a settings dialog model.

Caret handling, split views, snippets and shell invocation

The rest of the feature list describes an editor built for people who live in code.

There is support for over 100 programming languages, multiple carets and selections, and unlimited split views. Key bindings are configurable, including language-specific keys, key chains and key modes, so a binding can change meaning depending on the file type, and a chain can bind a sequence rather than a single key. Snippets are supported both generically and per language, with support for nested snippets, which is the part that separates a real snippet system from a text substitution macro.

The editor can invoke shell commands for running code, building projects and executing tests, which is the piece that turns it from a text buffer into a working environment for a project.

Together these are the features that define the target user. Someone who wants a small, quick editor with a scripting language they already know, and who would rather write a one page Lua script for a project specific task than install a plugin framework and learn its API.

The unusual combination is C, C++ and Lua rather than a single language. The performance-critical parts are native, the configuration and extension surface is a scripting language, and the result is an editor whose startup cost is a process launch and a configuration read.

Three channels, and a nightly tag whose date does not match

Downloads are organised into three channels, each with binaries for Windows, macOS, Linux x64 and Linux ARM, an extra modules archive and a source archive.

The stable channel is 13.0, released 2026-07-01, the unstable channel is 13.1 beta, released 2026-09-01, and the third is the experimental nightly build. The releases page also lists all released versions with their release notes.

One oddity is worth pointing out rather than glossing over. The nightly release entry carries the date 2020-09-14, while the beta and the stable release are dated in 2026. The tag is the rolling one that gets rebuilt continuously, and the date attached to it reflects when the tag line itself was created rather than when the current build was produced. If you are tracking the nightly channel, the date on the release entry tells you very little about what you will actually download.

The macOS caveat sits alongside the download table: all pre-built binaries are for Apple Silicon only. There is no Intel macOS build in the list, so a user on an older Intel machine is looking at compiling from source, which the project supports and points at for other UI library versions as well.

The last push was on 2026-09-01, the same day as the beta release, and the default branch is called default rather than main or master, which is a small marker of a project that has been running its own conventions for a long time.

Editorial conclusion

Adopt Textadept when you want a single editor that runs from an unpacked archive on Windows, macOS, Linux or BSD, when you work over SSH and want the same interface in a terminal, and when you are willing to write your own tooling in Lua instead of waiting for a plugin ecosystem. Do not adopt it if you need an integrated language server on day one, since the LSP client is an optional module, and check the platform notes first, because the pre-built macOS binaries are for Apple Silicon only and the Linux build needs Qt 5 or GTK 3 present. Before the first run, decide which channel you want, the stable 13.0 release or the 13.1 beta, download the matching extra modules archive for the same channel, and remove the quarantine attribute on macOS if the system reports the application as damaged.

Frequently asked questions

Do I need to install Textadept to use it?

No. The pre-built binaries are self-contained executables with no installation necessary. You unpack the archive anywhere you have permission to and run the GUI or terminal executable for your platform.

What are the system requirements for the Textadept binaries?

Windows 10 or later on 64-bit or ARM, macOS 13 or later, and on Linux Qt 5 or GTK 3 for the GUI version and ncurses for the terminal version. Lua and other third-party dependencies are compiled into the application, and a Qt runtime is distributed with the Windows and macOS builds.

Does Textadept have language server support?

Yes, through an optional module. The extra modules archive includes a Language Server Protocol client alongside language debuggers, file comparison, source code formatting, scratch buffers and spell checking, and you download the modules archive matching the release channel you use.

Which release channel should I install?

The stable channel is 13.0, the unstable channel is 13.1 beta, and there is an experimental nightly build. Each channel publishes Windows, macOS, Linux x64 and ARM binaries, an extra modules archive and source code, and all pre-built macOS binaries are for Apple Silicon only.

How do I extend Textadept?

With Lua. The project states that almost every aspect of the editor can be scripted, extended and customized with Lua, and the repository ships an init.lua, a modules directory, a manual and an API document. Key bindings, key chains, key modes and snippets are all part of the same configurable surface.

Official sources

  1. License: MIT
  2. orbitalquark/textadept on GitHub
  3. Project website
  4. README
  5. Releases
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.

Add this badge to your README

markdown
[![Hysen Labs](https://hysenlabs.com/badge/orbitalquark-textadept.svg)](https://hysenlabs.com/projects/orbitalquark-textadept)

Was this useful?