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

Bullet Depth Markers

michael-5653michael-5653144 downloads

Keeps unordered list markers (-, *, +) in sync with nesting depth, both in the file and on screen.

Add to Obsidian
Bullet Depth Markers screenshot
  • Overview
  • Scorecard
  • Updates1

Child bullets get a different marker. In the file. Not just on screen.

- Framing
    * Layout
        + Gridlines
            - Column A      ← depth 4, cycle repeats
    * Inspection

Depth 1 is -. Depth 2 is *. Depth 3 is +. Then it repeats. Shows as ● ○ ▪ in both Live Preview and Reading view.

Why not a CSS snippet

CSS only changes the look. Your file stays - all the way down. This changes the file. So export, grep and diffs see the structure too.

Install

Do one of these. Then in Obsidian: Settings → Community plugins → Reload → enable Bullet Depth Markers.

Mac

git clone https://github.com/MichaelNguyen5653/Bullet-Depth-Markers.git
cd Bullet-Depth-Markers
./install.sh ~/Documents/YourVault

Windows (Git Bash)

git clone https://github.com/MichaelNguyen5653/Bullet-Depth-Markers.git
cd Bullet-Depth-Markers
./install.sh "/c/Users/YOU/Documents/YourVault"

Manual (any OS)

Copy these 3 files:

main.js
styles.css
manifest.json

Into this folder (make it if missing):

YourVault/.obsidian/plugins/bullet-depth-markers/

How it works

Takes no hotkeys. Obsidian indents like normal. The plugin fixes the marker right after. So it works with Tab, drag, paste — anything.

  • Undo is one step.
  • Cursor never jumps. One character swaps for one character.

Leaves alone

  • Numbered lists. Keep their numbers. Still count as a level.
  • Code blocks, frontmatter, ---.
  • Old notes. A list is only fixed when you edit it.

Checkboxes do change. - [ ] becomes * [ ]. Still a checkbox.

Settings

Marker sequence. Default - * +. Only -, * and + are allowed — nothing else is a real Markdown list marker.

Dev

No build step. Obsidian loads main.js as-is.

./run-tests.sh

Uses node's built-in test runner. No node? It falls back to VS Code's Electron binary. The core of main.js is pure functions, so tests run outside Obsidian. See DESIGN.md for the reasoning.

HealthExcellent
ReviewSatisfactory
About
Convert nested bullets into depth-specific Markdown markers written into your files so exports, greps and diffs reflect hierarchy. Show the markers in Live Preview and Reading view while leaving numbered lists, code blocks and frontmatter untouched, preserving cursor position and single-step undo during edits.
MarkdownEditing
Details
Current version
1.0.0
Last updated
2 months ago
Created
2 months ago
Updates
1 release
Downloads
144
Compatible with
Obsidian 1.0.0+
Platforms
Desktop, Mobile
License
MIT
Report bugRequest featureReport plugin
Author
michael-5653michael-5653
GitHubmichaelnguyen5653
  1. Community
  2. Plugins
  3. Markdown
  4. Bullet Depth Markers

Related plugins

Outliner

Work with your lists like in Workflowy or Roam Research.

Various Complements

Complete words similar to auto-completion in an IDE.

Heading Shifter

Easily Shift and Change Markdown headings.

Shortcuts extender

Use shortcuts for input special symbols without language switching.

Chord Sheets

Work with chord sheets (chords over lyrics or inline) in Live Preview and reading mode: Chord diagrams for guitar, ukulele, mandolin and piano, transpose, autoscroll, and more.

Easy Copy

Easily copy the text within inline code, bold text (and many other formats), or quickly generate an elegant link to a heading or block.

LanguageTool Integration

Advanced grammar and spell checking, powered by LanguageTool.

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.

Meta Bind

Make your notes interactive with inline input fields, metadata displays, and buttons.

Thino

Quickly capture memos and display them in the sidebar with a heatmap. (Closed source)