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
  • Join the community
  • Discord
  • Forum / 中文论坛
  • Merch store
  • Brand guidelines
Follow us
DiscordTwitterBlueskyThreadsMastodonYouTubeGitHub
© 2026 Obsidian

Heading Shifter

k4a-lk4a-l31k downloads

Easily Shift and Change Markdown headings.

Add to Obsidian
  • Overview
  • Scorecard
  • Updates20

PayPal

Easily Shift and Change markdown headings.

Why use this plugin

Obsidian links numerous markdown files to form knowledge. Daily rearrangement of links is important to create a good knowledge base.

The following situations often occur in this process.

  1. Cut out A part of File 1 to an independent File 2 and linked.
    • Heading3 in file 1 is changed to Heading1 in file 2
  2. Incorporated the content of File 3 into a part of File 4
    • Heading2 in file 3 is changed to Heading4 in file 4

With this plugin, you can change the Heading size (the number of #) in a batch instead of changing it manually.

How to install

From within Obsidian

You can activate this plugin within Obsidian by doing the following:

  • Open Settings > Community plugin
  • Make sure Restricted mode is off
  • Click Browse community plugins
  • Search for Heading Shifter
  • Click Install -> Enable

Manual installation

Download directory(includes main.js, manifest.json, styles.css) from the latest release and put them into <vault>/.obsidian/plugins/ folder.

Features

Apply Headings

Applying Heading Demo

Commands

Command Description Hotkey
Apply Heading 0 Change Current line to no heading. -
Apply Heading 1~6 Change Current line to heading 1~6. -

It is useful to assign a hotkey such as Ctrl + 0 ~ 6

Shift Headings

Headings Shift Demo

Settings

Setting Description Value(Default)
Lower limit of Heading The lower Heading Size that will be decreased by the Heading Shift 0~6(1)
Enable override tab behavior If true, Tab execute "Increase Headings" and Shift-Tab execute "Decrease Headings" [^2] boolean(false)

[^2]: May conflict with other plugin behavior

Commands

Command Description Hotkey
Increase Headings Increase heading of selected lines(with heading)
Increase Headings(forced) Increase heading of selected lines(Even if there is no heading)
Decrease Headings Decrease heading of selected lines(with heading)

It is useful to assign a hotkey such as Ctrl + Shift + Left/Right

  • Increase Headings and Increase Headings(forced) is ineffective if selected lines contains less than Lower limit of Heading.
  • Decrease Headings is ineffective if selected lines contains more than heading 6.

Insert Headings

Commands

Command Description Hotkey
Insert Heading at current level Change current line headings to current level
Insert Heading at one level deeper Change current line headings to current level + 1
Insert Heading at one level higher Change current line headings to current level - 1

Common Settings

Setting Description Value(Default)
Style to remove(default) If this style is at the of a line, remove it boolean(All true)
Style to remove(Other arbitrary group of regular expressions) If this style is at the of a line, remove it string
Children List behavior Behavior when the target row possesses a child list "outdent to zero"(default) / "sync with headings" / "noting"

Style to remove

This is the toggle between removing or retaining specific style when applying Heading in a "single" row.

Beginning

- or 1.,2.,n. or user defined string(RegExp)

Before After(True) After(False)
- (ul) - line ## line ## - line
1. (ol) 1. line ## line ## 1. line
🤔(user defined) 🤔line ## line ## 🤔line
Surrounding

**, _ , etc... or user defined string(RegExp)

Before After(True) After(False)
**(bold) **line** ## line ## **line**
_(italic) _line_ ## line ## _line_
🤔(user defined) 🤔line🤔 ## line ## 🤔line🤔

List behavior

- heading target
    - listA
        - listB

If you call 'Apply Heading 2',

Nothing

## heading target
    - listA
        - listB

Subsequent listings will remain in depth and will not have the correct markdown structure.

Outdent to zero

## heading target

- listA
    - listB

Sync with headings

\t\t- ## heading target
\t\t\t- listA
\t\t\t\t- listB

Use Case

Operate headings like an outliner like the following,

# The Festival Myster -> hit "Apply 1"

This is a great document.

## Chapter One -> hit "Insert deeper"

### Prologue -> hit "Insert deeper"

The sun was setting over the horizon...

### The Summer Festival -> hit "Insert current"

As the townspeople gathered in the town square...

## Chapter Two -> hit "Insert higher"

### The Mystery of the Missing Prize -> hit "Insert deeper"

As the summer festival came to a close...

If you want to make headings deeper or higher than 2, use "shift" or "apply".

LoadMap

Nothing specific at this time.

Contribute

Feel free to report issues or request features.

77%
HealthExcellent
ReviewCaution
About
Shift Markdown heading levels in bulk across selected lines or whole notes. Apply exact levels (no heading or H1–H6) or increase/decrease multiple headings at once, with optional Tab/Shift-Tab behavior for quick edits.
EditingMarkdownCommands
Details
Current version
1.10.2
Last updated
4 months ago
Created
4 years ago
Updates
20 releases
Downloads
31k
Compatible with
Obsidian 0.12.0+
License
MIT
Report bugRequest featureReport plugin
Sponsor
Buy Me a Coffee
GitHub Sponsors
PayPal
Author
k4a-lk4a-l
github.com/k4a-l
GitHubk4a-l
  1. Community
  2. Plugins
  3. Editing
  4. Heading Shifter

Related plugins

Outliner

Work with your lists like in Workflowy or Roam Research.

Various Complements

Complete words similar to auto-completion in an IDE.

Paste URL into selection

Paste URL "into" selected text.

Vimrc Support

Auto-load a startup file with Vim commands.

Code Editor Shortcuts

Add keyboard shortcuts (hotkeys) commonly found in code editors such as Visual Studio Code (VS Code) or Sublime Text.

Slash Commander

Customize the slash command list, assign each command an icon.

Chord Sheets

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

Advanced Tables

Improved table navigation, formatting, and manipulation.

Importer

Import data from Notion, Evernote, Apple Notes, Microsoft OneNote, Google Keep, Bear, Roam, and HTML files.

Commander

Customize your workspace by adding commands everywhere, create macros and supercharge your mobile toolbar.