Every Feature Battle-Tested

150+ modules. Thousands of sane defaults. Zero bloat. Here's what makes Doom the hacker's choice.

New here? Jump to doom emacs install, the beginner guide, or the FAQ. Deep module lists live on Modules and Configuration.

🚀

Blazing Startup

Doom loads in under 0.5s on modern hardware. Lazy loading, deferred compilation, and aggressive caching make every millisecond count. Smarter than any other Emacs distribution.

~0.4s avg. cold start
👹

Evil Mode — First Class

Not an afterthought. Doom was built from the ground up around evil-mode, shipping ports of sneak, easymotion, unimpaired, surround, and more Vim plugins you can't live without.

evilvim-sneakeasymotion
🧠

LSP Integration

Opt-in LSP support for every major language via lsp-mode or eglot. Inline diagnostics, intelligent completion, go-to-definition, rename, and code actions — the full IDE experience.

lsp-modeeglottreesitter
📦

Declarative Packages

straight.el powers Doom's package management. Install from MELPA, remote archives, local paths, or any URL. Pin to exact commits. Reproduce your environment anywhere — across machines, across time.

(package! evil-nerd-commenter)
;; Pin to specific commit:
(package! doom-themes :pin "5e6932f")
🔍

Project Search

Powered by ripgrep and fd — the fastest search tools on the planet. Find files, search code, replace across entire projects. Works with Ivy, Helm, or Vertico — your choice.

🗂️

Workspaces

Isolated, persistent per-project workspaces that replace Vim tabs. Context-switch between projects without losing your place. Each workspace remembers its windows, buffers, and state.

🎭

Rule-Based Popups

A sophisticated popup manager controls how temporary buffers appear — REPLs, help windows, compilation output. Dismiss them cleanly, pin them, or slot them wherever you want.

🌍

i18n Support

Built-in support for Chinese, Japanese, and Korean input systems. fcitx, pyim, and more. Edit code with any language — Doom handles the complexity so you don't have to.

🩺

doom doctor

A built-in diagnostic tool that checks your system for missing dependencies, misconfigured tools, broken packages, and common mistakes. Debug faster than you ever thought possible.

$ doom doctor
🏠

Dashboard

The doom emacs dashboard greets you with recent files, projects, and bookmarks on every launch. It’s the fastest way to resume work. Customizable via config.el.

📁

File Explorer & Dired

doom emacs file explorer options include treemacs and neotree sidebars, plus doom emacs dired — Emacs’ built-in directory editor with ranger-style navigation. Manage files without leaving the editor.

🔀

Git — Magit

doom emacs git integration via Magit is widely considered the best Git interface in any editor. Stage, commit, rebase, cherry-pick, and resolve conflicts with keyboard-driven workflows. doom emacs magit is a first-class module.

🪟

Split Windows & Tabs

doom emacs split window and doom emacs tabs management is effortless — horizontal, vertical, golden-ratio splits, plus workspace-based tabs for multi-project workflows. Includes doom emacs smooth scroll for butter-smooth navigation.

🧘

Zen Mode & Daemon

doom emacs zen mode removes all distractions for focused writing. doom emacs daemon runs Emacs as a server in the background — every subsequent frame opens in under 50ms. Also supports doom emacs everywhere for system-wide editing.

✍️

Snippets, Format, Autosave & Bookmarks

doom emacs snippets via yasnippet. doom emacs format on save with apheleia. doom emacs autosave protects your work. doom emacs bookmarks persist across sessions. doom emacs modeline displays LSP, Git, and macro state at a glance.

The doom Binary

A powerful CLI that keeps your Doom install healthy, up to date, and reproducible.

doom sync

Synchronize your config — installs missing packages, removes orphans, regenerates caches. Run after every change to packages.el.

doom upgrade

Update Doom to the latest release and upgrade all installed packages in one atomic operation.

doom doctor

Diagnose issues with your system and config. Checks for missing binaries, broken packages, and common mistakes.

doom env

Snapshot your shell environment so Emacs inherits your PATH, variables, and secrets at startup.