Heading Link Sync updates heading links when you retype a heading

Retype a heading and every link to it in your other notes follows, with no rename dialog.

MIT · no telemetry · core features free

A Project Plan note with the heading Roadmap and a notice that reads Updated 36 links in 31 notes, next to an Undo button.
Open larger
version
1.0.0
released
downloads
2
review
Passed
health
Excellent
license
MIT
platforms
Desktop, Mobile
obsidian
1.13.4 or later

Tested on desktop with Obsidian 1.13.4 and 1.14.4.

Directory facts fetched from community.obsidian.md/users/theluckystrike.

About Heading Link Sync

You link to headings across notes and you edit headings by typing over them.

Change a heading from Milestones to Roadmap and move the cursor off the line. Every link to Project Plan#Milestones in your other notes now points to Project Plan#Roadmap. You open no menu and see no dialog.

Obsidian already has "Rename this heading" in the editor menu, but it opens a dialog first. When you type over a heading instead, the links to it break without a warning. Heading Link Sync closes that gap.

Typing a new heading text, then a meeting note that shows the updated linkPlay demo

Free features

Rename a heading by typing

Edit the heading as normal text. The plugin waits until you move the cursor off the heading line, or until you stop typing for 1.5 seconds. Then it updates the links and shows one notice with an Undo button.

The plan note after a heading edit, with the notice Updated 36 links in 31 notes and an Undo button.
Open larger

Every wikilink form follows

Links with an alias, embeds, links inside the same note, nested heading paths and wikilinks in properties all follow. Links in tables keep their escaped pipe. Links in fenced code, inline code and math blocks never change.

A meeting note where a link in a property and a link in the text now point to the Roadmap heading of Project Plan.
Open larger

Ask first

Set "When a heading changes" to "Ask first" if you want to confirm each update. The dialog names the old and new heading and the number of links and notes. Skip leaves every note as it is.

A dialog that asks whether to update links, with the old and new heading and the count of links and notes.
Open larger

Excluded folders

List folders in the settings, one per line, and notes in them are never changed. Heading edits in those folders don't update other notes. Use it for templates and archives.

Settings with the Pro section, the update mode, the pause, the excluded folders and the two Pro switches.
Open larger

The free version updates wikilinks and embeds only, and the notice says how many Markdown links it did not change.

Pro features

Pro costs $5 a month or $15 one time through GitHub Sponsors. One sponsorship turns on Pro in all 15 plugins.

Markdown links Pro

Pro also updates Markdown links that point to a heading. It writes spaces as %20, as the app does when it makes a Markdown link. Links in angle brackets keep raw spaces, and fully encoded links stay fully encoded.

A note with Markdown links whose heading part now reads Roadmap with %20 for the spaces.
Open larger

Block IDs Pro

Edit a block ID at the end of a paragraph or under a table, and Pro updates every link and embed to it. Block IDs match in any letter case, as in the app.

A status report where the link to a block now uses the new block ID costs.
Open larger

Preview every change Pro

With Pro, "Ask first" shows each change with the note, the line, the old link and the new link. Clear a check box to keep one link as it is, then select "Apply selected".

A review dialog that lists each note and line with the old link crossed out, the new link and a check box.
Open larger

Broken heading link report Pro

The command "Find broken heading and block links" lists every link whose note exists but whose heading or block ID doesn't. For each one it suggests the closest heading or block ID in that note. Fix one link, or fix all that have a suggestion.

A report of broken heading and block links, each with the closest heading and a Fix button.
Open larger

Set up Heading Link Sync

needs

  • Obsidian 1.13.4 or later

steps

  1. Turn on the plugin.

  2. Open a note that other notes link to, and type over the text of one of its headings.

  3. Move the cursor to another line, or stop typing for a moment.

  4. Read the notice, and select Undo if you didn't want the change.

Why this exists

Forum topic 25412 asks for links to headings and blocks to update inline, with no extra dialog window. It has 80 posts, 351 likes and 136 votes.

How to rename a heading in Obsidian without breaking links

How it compares

Rename this heading (core command)
The core command opens a dialog, and you must remember to use it before you edit. Heading Link Sync works on the edit you already made, and it does nothing when the links already point to the new text.

Questions about Heading Link Sync

How do I rename a heading in Obsidian without breaking links?

Obsidian has the "Rename this heading" command, but it opens a dialog and you must remember to use it before you edit. Heading Link Sync works on the edit you already made. Both can live side by side.

Can I undo a link update?

Yes. Undo puts back the exact text of every changed link, even if you edited other parts of those notes since. The command "Undo the last link update" does the same.

What happens if I stop typing in the middle of a word?

The links follow the half-typed text, then follow again when you finish. Raise the pause in the settings if that happens often. The pause can be 500 to 5000 milliseconds.

What happens when a note has two headings with the same text?

A plain link goes to the first one, and Heading Link Sync follows the same rule. If a rename would send an old link to a different heading, the plugin adds the parent heading to the link. If no such path exists, it leaves the link alone and says so.

Does it react to heading changes that come from sync or git?

No. The plugin acts only on edits that you make in the editor, not on changes from sync tools or git. A change of letter case alone isn't a rename, because every link still works.

Network use

Heading Link Sync makes no network requests until you select "Sign in with GitHub" in the settings. After sign in, it asks GitHub whether your account sponsors theluckystrike, at most once every 7 days or when you select Refresh. It sends no note content, file names or other vault data, and it has no telemetry.

Read the full network disclosure

Heading Link Sync 1.0.0, MIT license

MIT · no telemetry · core features free