Self-hosted service
emacs-helm/helm avatar
emacs-helm/helm

Helm: incremental completion as an Emacs way of life, one file per domain

Emacs incremental completion and selection narrowing framework

3,474 stars393 forksEmacs LispGPL-3.0

At a glance

What is it?
Helm is the emacs-helm project's GPL-3.0 framework for incremental completion and narrowing selections in Emacs, offering developers an API for building their own Helm applications plus dozens of built-in commands completing almost everything, from files and buffers to grep, occur, imenu and man pages. Organized as one Emacs Lisp file per domain, it installs from MELPA and continues active development with a v4.0 release.
Who is it for?
Use Helm when Emacs is your main work environment and you want every interactive command, file finding, buffer switching, grep, occur, package management, to run through one consistent incremental completion interface, with the narrowing model narrowing candidates as you type. Its depth is also its weight, so choose Vertico or the built-in completion when a lighter stack fits, and check the wiki's FAQ early since Helm changes how basic keys behave.
Can I use it commercially?
Yes, with conditions. GPL-3.0 is a copyleft licence: if you distribute software that includes it, you must release that software's source code under the same licence. Running it internally without distributing it does not trigger that obligation.
Is it still maintained?
Yes. The repository last received commits 9 days ago.
What is it written in?
Mainly Emacs Lisp, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on September 25, 2026, and from our analysis. They are not legal advice.

Editorial analysis

Completion as a framework, not a command

Helm is an Emacs framework for incremental completions and narrowing selections, and the framing matters, it is not a single command but a layer over how Emacs asks questions. The description names three offerings, an easy-to-use API for developers building their own Helm applications, powerful search tools, and dozens of already built-in commands providing completion to almost everything. The README's claim that it is a must-have for anyone using Emacs as a main work environment, and that Helm has been widely adopted by many Emacs power users, positions it as infrastructure for daily work rather than an occasional tool, and the screenshot caption showing Helm in action browsing images hints at sources beyond text, files and images flowing through the same interface.

One file per domain

The repository's file listing is the feature catalog, each helm-*.el file naming its domain. helm-files, helm-buffers, helm-bookmark, helm-locate, helm-grep, helm-occur, helm-imenu, helm-info, helm-man, helm-tags, helm-semantic, helm-elisp, helm-eval, helm-eshell, helm-epa for encryption, helm-fd for fd, helm-find, helm-id-utils, helm-net, helm-packages, helm-regexp, helm-ring for kill-ring history, helm-color, helm-font, helm-command, helm-sys, helm-misc, helm-dabbrev, helm-multi-match, helm-x-files and helm-x-icons, beside the core three of helm.el, helm-core.el and helm-source.el. The naming convention doubles as documentation, a user's question about what Helm completes is answered by scanning the file list, and the modular layout keeps the sources separable for contributors. The Makefile's dependency discovery is worth a look for packaging, it searches the ELPA directory and the straight build directory under both XDG_CONFIG_HOME and the legacy .emacs.d, locating the async package Helm's build needs, so a distro packager or CI runner sees exactly which installation layouts are supported without reading the Lisp.

Installing from MELPA, and the wiki as manual

Helm is available in MELPA and its stable mirror, installed easily from Emacs's package manager, and the badges at the top link both. The documentation is distributed across the project's links, a homepage, the releases page for downloads, a get started page on the wiki, the wiki itself, and a dedicated FAQ, with the wiki carrying the installation guidance the README defers to. The emacs-helm.sh script in the repository runs Emacs with Helm's environment for testing or isolated use, and the Makefile builds and tests the package against an Emacs invocation with batch flags, detecting ELPA and straight directories under both XDG and legacy .emacs.d layouts to find dependencies like async. The Makefile itself carries its own license header stating it is not part of GNU Emacs, attributed to Michael Markert from 2011 and 2012, an artifact of the project's long history where even build files document their provenance.

v4.0, and the NEWS.org ledger

The release history marks the current era, v3.9.8 in May 2024, v3.9.9 in August, and v4.0 on 2024-08-22, a major version landing nine days after the last 3.x, with the master branch pushed 2026-09-22. NEWS.org at the repository root carries the change ledger between versions, the Emacs Lisp convention for user-visible history, and the version bump to 4.0 marks the current API generation that package authors building on Helm's API target. The continuous pushes between tagged releases show a project in steady maintenance rather than feature bursts, the typical shape of infrastructure this old and this widely depended upon.

GPL-3.0, donations, and the maintenance ask

The license is GPL-3.0, with the COPYING file and badge beside it, and the README states the maintenance economics plainly, maintaining Helm is a lot of work, please consider making a donation, with links to a Patreon page and GitHub Sponsors for the emacs-helm organization. The ask appears in the README itself rather than a separate funding file, a reflectiveness about the cost of maintaining a framework whose surface touches every part of Emacs, and whose compatibility duties extend to the packages built on its API. The emacs-helm organization hosts the project alongside its homepage and wiki, the infrastructure of a project old enough to have outlived several Emacs packaging generations. The test directory beside the sources and the .dir-locals.el configuring the development environment complete the contributor surface, with the NEWS.org file serving as the changelog users read between tagged versions.

Editorial conclusion

Use Helm when Emacs is your main work environment and you want every interactive command, file finding, buffer switching, grep, occur, package management, to run through one consistent incremental completion interface, with the narrowing model narrowing candidates as you type. Its depth is also its weight, so choose Vertico or the built-in completion when a lighter stack fits, and check the wiki's FAQ early since Helm changes how basic keys behave. Before adopting, install from MELPA through the package manager, start from the wiki's get started page, and consider a donation, since the README states maintenance is a lot of work and asks directly.

Frequently asked questions

What is a Helm and why use it?

In Emacs, Helm is a framework for incremental completions and narrowing selections, replacing the minibuffer's one-at-a-time prompts with a candidate window that narrows as you type. It is worth using because dozens of built-in commands bring this interface to almost everything in Emacs, files, buffers, grep, imenu, packages and more, and its API lets developers build their own Helm applications.

What does Emacs stand for?

Emacs, the editor Helm extends, is traditionally said to stand for Editor MACroS, reflecting its origins in macro sets for earlier editors. The Helm project itself describes its home as Emacs, the extensible text editor whose Lisp environment Helm's completion framework is written in.

Is Emacs GUI or TUI?

Emacs runs both ways, as a graphical application and in the terminal, and Helm works in both. The project's README shows Helm in action browsing images, an interface only meaningful in the GUI, while the terminal build offers the same narrowing completions in text mode.

Official sources

  1. emacs-helm/helm on GitHub
  2. License: GPL-3.0
  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/emacs-helm-helm.svg)](https://hysenlabs.com/projects/emacs-helm-helm)