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

Lyrio - Song Helper

whitte-hwhitte-h98 downloads

Automatically synchronize song sections (Chorus, Verse, Bridge, etc.) across your note.

Add to Obsidian
  • Overview
  • Scorecard
  • Updates2

Lyrio keeps song sections in sync across your notes. Tag a block as ::Chorus, edit it anywhere, and every other ::Chorus block updates automatically.


Syntax

Form Meaning
::Tag Opens a section named Tag
::Tag* Local-only marker — changes here never propagate to other instances
::Tag:: Closes a section (only when Use closing tag is enabled)
::Tag | Am C F G | Marker with inline bar content (chords, key, notes…)

Section names are case-sensitive: ::Chorus and ::chorus are treated as different sections.


Auto-sync

When you edit any section block, Lyrio updates every other instance of that section in the note.

::Chorus
La la la

::Verse
My own verse

::Chorus          ← typing here also updates the block above, and vice versa
La la la

A 300 ms debounce prevents excessive updates while you type.

Auto-fill

Write a bare ::Tag with no body and Lyrio immediately fills it with the content of the nearest existing instance:

::Chorus
La la la la

::Chorus          ← becomes "La la la la" automatically

Inline bar content

Append | … | to any marker to attach metadata (chords, key, capo, etc.) to that section tag:

::Chorus | Am C F G |
La la la
  • Once defined on any instance, typing a bare ::Chorus elsewhere auto-fills both the bar content and the lyrics.
  • Editing the bar content on one marker syncs it to all other ::Chorus markers.

Closing tags

Enable Use closing tag in settings to delimit sections explicitly instead of relying on blank lines:

::Chorus
La la la
::Chorus::

Some prose between sections without a blank line.

::Chorus
La la la
::Chorus::

Exception tags

Some tags should not replicate their body to other instances. By default Verse is an exception tag.

For exception tags:

  • The color is applied normally.
  • The bar content (| … |) syncs across all instances of the same tag — so chords stay consistent.
  • The body lyrics are not synced — each instance can have its own unique content.
::Verse | G D Em C |
First verse lyrics, unique to this block.

::Verse | G D Em C |     ← bar content synced, but lyrics are independent
Second verse, completely different words.

Configure which tags are exceptions in Settings → Exception tags (comma-separated).


Local markers (::Tag*)

Add * after the tag name to mark an instance as local. Edits to a local block are ignored by the sync engine and never propagate.

::Chorus
La la la

::Chorus*
A private scratch version — won't affect other instances.

Settings

Setting Default Description
Auto-sync sections On Automatically sync all instances when any is edited
Use closing tag Off Use ::Tag:: to close sections instead of blank lines
Color section blocks Off Draw a colored left border on body lines matching the tag color
Exception tags Verse Tags that sync bar content but not body. Comma-separated.

Commands

Show song sections in this note — logs all section markers found in the current note to the developer console.


Example

# My Song

::Verse | G D Em C |
First verse goes here.
Each line is its own lyric.

::PreChorus
Building up...

::Chorus | Am F C G |
This is the main chorus.
Everyone sings along.

::Verse | G D Em C |
Second verse — different words, same chords.

::PreChorus
Building up again...

::Chorus | Am F C G |
This is the main chorus.
Everyone sings along.

::Bridge
Something different here.

::Chorus | Am F C G |
This is the main chorus.
Everyone sings along.

The two ::Verse blocks have independent lyrics but share the same bar content. All three ::Chorus blocks stay fully in sync.

License

MIT

Support

If you find this plugin useful and want to support its development, you can buy me a coffee!

HealthExcellent
ReviewPassed
About
Sync song sections across notes by tagging blocks like ::Chorus so edits propagate automatically. Auto-fill bare tags from the nearest instance. Attach inline bar content (| Am C F G |) for chords/metadata, use ::Tag* to keep changes local, or mark exception tags to sync bars but keep lyrics unique.
TagsAutomation
Details
Current version
1.0.1
Last updated
3 months ago
Created
3 months ago
Updates
2 releases
Downloads
98
Compatible with
Obsidian 0.15.0+
Platforms
Desktop, Mobile
License
MIT
Report bugRequest featureReport plugin
Sponsor
Ko-fi
Author
whitte-hwhitte-h
github.com/whitte-h
GitHubwhitte-h
  1. Community
  2. Plugins
  3. Tags
  4. Lyrio - Song Helper

Related plugins

BRAT

Easily install a beta version of a plugin for testing.

Homepage

Open a note, base, or workspace on startup, or set it for quick access later.

Advanced URI

Control everything with URI.

Lazy Loader

Load plugins with a delay on startup, so that you can get your app startup down into the sub-second loading time.

Hot Reload

Automatically reload in-development plugins when their files are changed

TagFolder

Show tags as folder.

Templater

Create and use dynamic templates.

QuickAdd

Quickly add new notes or content to your vault.

Readwise Official

Sync highlights from Readwise to your vault.

Update modified date

Automatically update a frontmatter modified date field when the file is modified.