Search...Search plugins and themes...
⌘K
Sign in
  • Get started
  • Download
  • Pricing
  • Enterprise
  • Account
  • Obsidian
  • Overview
  • Sync
  • Publish
  • Canvas
  • Mobile
  • Web Clipper
  • CLI
  • Learn
  • Help
  • Developers
  • Changelog
  • About
  • Roadmap
  • Blog
  • Resources
  • System status
  • License overview
  • Terms of service
  • Privacy policy
  • Security
  • Community
  • Plugins
  • Themes
  • Discord
  • Forum / 中文论坛
  • Merch store
  • Brand guidelines
Follow us
DiscordTwitterBlueskyThreadsMastodonYouTubeGitHub
© 2026 Obsidian

Indent to Headings

MuselMusel30 downloads

Convert plain indented outlines into Markdown headings.

Add to Obsidian
  • Overview
  • Scorecard
  • Updates4

Indent to Headings converts plain indented outlines into Markdown headings in Obsidian.

It is designed for notes that start as quick plain text:

Project plan
  Research
    Read papers
    Collect notes
  Build
    Prototype
    Test

and turns them into structured Markdown:

# Project plan
## Research
Read papers
Collect notes
## Build
Prototype
Test

The converter is safe to rerun. Existing Markdown headings are preserved, so you can convert a note once, add another rough outline later, and run the command again without rewriting the finished sections.

Features

  • Convert selected text, the whole note, the current outline block, or marked blocks.
  • Preserve existing Markdown headings.
  • Treat leaf lines as body text by default.
  • Optionally write leaf lines as bullets.
  • Preserve existing bullets, numbered markers, and task checkboxes on leaf lines.
  • Skip fenced code blocks.
  • Preview a conversion before applying it.
  • Use marked blocks for precise conversion:
<!-- indent-to-headings:start -->
Project
  Build
    Prototype
<!-- indent-to-headings:end -->

Commands

  • Convert indented outline to headings
  • Convert current outline block to headings
  • Convert marked outline blocks to headings
  • Preview indent to headings conversion

The ribbon button runs Convert indented outline to headings.

Settings

  • Base heading level: heading level used for top-level plain lines when there is no nearby heading.
  • Spaces per indent: how many leading spaces count as one indent level.
  • Leaf lines as text: only lines with children become headings.
  • Minimum children for heading: require one, two, or three direct child lines before a line becomes a heading.
  • Leaf text style: write leaves as plain text or bullets.
  • Preserve leaf list markers: keep existing list markers on leaf lines.
  • Strip list markers from headings: remove list markers before creating headings.
  • Preserve blank lines: keep blank lines in converted output.
  • Prefer marked blocks: if marked blocks exist, the main command only converts inside them.

Manual Installation

  1. Download manifest.json, main.js, and styles.css from the latest release.
  2. Put them in <vault>/.obsidian/plugins/indent-to-headings/.
  3. Reload Obsidian.
  4. Enable Indent to Headings in Community plugins.

Development

npm install
npm run dev

For a production build:

npm run build

For tests:

npm test

Release

  1. Update manifest.json.
  2. Run npm version patch, npm version minor, or npm version major.
  3. Push the commit and matching tag.
  4. The GitHub release workflow attaches manifest.json, main.js, and styles.css.

Community Directory Submission

The repository is prepared for Obsidian Community plugin submission.

Submit this repository URL:

https://github.com/musel25/indent-to-headings

Final submission must be completed by the repository owner because it requires signing in, linking GitHub, and accepting the Obsidian developer policies.

  1. Sign in to https://community.obsidian.md.
  2. Link the GitHub account that owns this repository.
  3. Open Plugins -> New plugin.
  4. Enter the repository URL above.
  5. Confirm the developer policies and submit.
  6. Address any automated review feedback.

The current release is ready for review:

  • Root README.md, LICENSE, manifest.json, and versions.json exist.
  • manifest.json.version is 1.3.0.
  • GitHub release 1.3.0 exists.
  • Release assets include main.js, manifest.json, and styles.css.
  • versions.json maps plugin version 1.3.0 to minimum Obsidian version 1.5.0.
HealthExcellent
ReviewPassed
About
Convert plain indented outlines into Markdown headings, preserving existing headings, bullets, numbered markers, and task checkboxes while skipping fenced code blocks. Apply to a selection, whole note, current outline block, or marked blocks; preview before applying and choose leaf lines as body text or bullets.
OutliningFormatting
Details
Current version
1.3.3
Last updated
6 days ago
Created
6 days ago
Updates
4 releases
Downloads
30
Compatible with
Obsidian 1.5.0+
Platforms
Desktop, Mobile
License
MIT
Report bugRequest featureReport plugin
Author
MuselMuselmusel25
GitHubmusel25
  1. Community
  2. Plugins
  3. Outlining
  4. Indent to Headings

Related plugins

Outliner

Work with your lists like in Workflowy or Roam Research.

Admonition

Admonition block-styled content.

Linter

Format and style your notes. Linter can be used to format YAML tags, aliases, arrays, and metadata; footnotes; headings; spacing; math blocks; regular Markdown contents like list, italics, and bold styles; and more with the use of custom rule options.

Sort and Permute lines

Sort and Permute lines in whole file or selection.

Colored Text

Color the selected texts.

List Callouts

Create simple callouts in lists.

Blur

Create obfuscated blocks of text.

Simple mind map

A mind map that combines aesthetics and functionality. 一个颜值与功能并存的思维导图。

Fountain Editor

Fountain (screenplay) syntax highlighting in the editor.

Symbols Prettifier

Prettify the symbols with actual symbols you commonly type, like arrows.