tgrrrr397 downloadsOutliner-style editing for heading-based Markdown: move, indent, and unindent full sections with keyboard shortcuts.
Heading Outliner is an Obsidian plugin that brings Outliner-style editing to heading-based Markdown. Move, indent, and unindent entire sections using the same keyboard hotkeys as bullet lists.

Ctrl+Shift+↑ / Ctrl+Shift+↓)Move a heading and all its content (body text + sub-headings) up or down past sibling sections. Fold state is preserved - sections that were folded before the move stay folded afterward.
Tab / Shift+Tab)Increase or decrease heading levels. Tab/Shift+Tab only activates when the cursor is on a heading line - body text and list items are unaffected. Supports single or multiple selected headings (range selection or multi-cursor). Fold state is preserved. Smart fold handling: When indenting a heading to become a child of a folded parent, the parent automatically unfolds to show the new child. All other fold states remain unchanged.
Expand or collapse the document outline level by level, operating on all selected visible headings at once. Works seamlessly with Obsidian's built-in fold commands.
Workflow: Use Obsidian's Fold all headings and lists to collapse everything, then run Fold less to reveal one heading level at a time across your selection. Run Fold more to collapse back down. When nothing is selected, the command falls back to the heading under the cursor.
| Action | Behavior |
|---|---|
| Fold less | Unfolds the shallowest folded heading level among selected visible headings |
| Fold more | Folds the deepest unfolded heading level among selected visible headings |

Optional per-level indentation in both the editor and reading view, styled via CSS.
Fully compatible with the Outliner plugin. Both plugins use context-aware CM6 keymaps: Heading Outliner intercepts keypresses only when the cursor is on a heading line and explicitly passes through to Outliner on bullet/list lines. There are no hotkey conflicts.
Obsidian Community - Heading Outliner
Or just search Heading Outliner in Obsidian Settings → Community plugins → Browse
| Action | Hotkey |
|---|---|
| Move section up | Ctrl+Shift+↑ |
| Move section down | Ctrl+Shift+↓ |
| Indent section | Tab (on heading line) |
| Unindent section | Shift+Tab (on heading line) |
Hotkeys are handled via CodeMirror 6 keymaps and are not exposed to Obsidian's hotkey manager. This is intentional: these keys need context-aware interception (activate only on heading lines, pass through otherwise) which Obsidian's command system cannot provide (see Hotkey Architecture Dilemma). Custom modifier configuration is planned for a future release.
| Setting | Default | Description |
|---|---|---|
| Indent headings by level | On | Visually indent headings by level |
| Indent size (em) | 0.5 | Spacing per heading level |
Fold more and Fold less commands for progressive outline folding