Markdown Heading Links

approved

by Hamirdreza Zamanian

Preview and create standard Markdown links to headings in Obsidian. - This plugin has not been manually reviewed by Obsidian staff.

25 downloadsUpdated 9d agoMIT

Markdown Heading Links

Disclaimer: This plugin is AI-generated.

Add Ctrl/Cmd-hover previews and click navigation for standard Markdown links to headings, including links to other notes. Type # in a link destination to autocomplete headings, copy heading slugs from Reading view, and use commands to copy complete Markdown links.

Markdown heading links such as [Read more](#getting-started) are standard Markdown, but Obsidian does not provide native hover previews for them. This plugin bridges that gap and makes Markdown heading links easier to create.

Features

  • Native Ctrl/Cmd-hover previews for Markdown heading links.
  • Click navigation for heading slugs, including links to other notes.
  • Heading autocomplete: type # after [link text]( and choose a heading.
  • Copy-slug buttons beside headings in Reading view.
  • Commands for copying a heading slug or a complete Markdown link.
  • Duplicate headings use -1, -2, and later suffixes.

Usage

Given this heading:

## Getting Started

Type the following in Edit mode:

[Read more](# 

Important: add a space in the end to activate the suggestions.

Choose a heading such as Getting Started from the suggestions. The plugin inserts:

[Read more](#getting-started)

In Reading view, hover over a heading to reveal its link button and copy the slug. You can also open the Command palette with Ctrl/Cmd+P and search for:

  • Suggest heading slug
  • Copy heading slug
  • Copy Markdown link to heading

You can also place the cursor on the heading in the writing mode and right click on it and choose one of the copy options that you can find in the command palette as well.

Installation

Community plugin

Install the plugin from the Obsidian Community directory: open Settings > Community plugins, search for Markdown Heading Links, and select Install. For manual installation, use the instructions below.

Manual installation

  1. Download the plugin files from the latest GitHub release: main.js, manifest.json, and styles.css.
  2. Create a folder named markdown-heading-links and place all three files directly inside it.
  3. Enable community plugins in Obsidian: Go to Settings > Community Plugins and turn off Restricted Mode if it's on.
  4. Open the plugins folder: Still in Settings > Community Plugins, click the folder icon (hover text: "Open plugins folder").
  5. Copy the markdown-heading-links folder into the plugins folder that just opened.
  6. Reload Obsidian: Either restart Obsidian completely, or click the refresh icon in Settings > Community Plugins to rescan the folder.
  7. Enable the plugin: In Settings > Community Plugins, find Markdown Heading Links in the list and toggle it ON.
  8. Verify it loaded: The toggle should stay on and no error message should appear. If it does, double-check that the folder structure is plugins/markdown-heading-links/main.js (not plugins/markdown-heading-links/markdown-heading-links/main.js).

Tip: Make sure main.js and manifest.json sit directly inside markdown-heading-links/, not inside another subfolder.

Requires Obsidian 1.5.0 or later.

Privacy

Markdown Heading Links works locally in your vault. It does not collect telemetry, make network requests, or send your note contents anywhere. When you use a copy feature, it writes the generated slug or Markdown link to the system clipboard. The plugin never reads the clipboard, so existing clipboard content—including content copied from outside Obsidian—is not accessed.

Development

npm install
npm test
npm run build

The production build creates main.js, which is intentionally ignored by Git. For a release, publish main.js, manifest.json, and styles.css as separate assets on a GitHub release whose tag exactly matches the version in manifest.json.

For plugin developers

Search results and similarity scores are powered by semantic analysis of your plugin's README. If your plugin isn't appearing for searches you'd expect, try updating your README to clearly describe your plugin's purpose, features, and use cases.