Qiu Yi Liao68 downloadsMovable, resizable floating Markdown labels that link to note text and scroll with the document.
Movable, resizable Markdown annotations that remain attached to the part of an Obsidian note where they matter.
[!NOTE] v0.7.0 introduces document-positioned labels with scroll synchronisation. A label now moves with the note content instead of remaining fixed in the reading viewport.
Markdown notes are inherently linear. Research, revision, planning, and review work often require short contextual annotations that should sit beside an idea without interrupting the original document flow.
Floating Text Overlay adds editable note widgets above a Markdown note. A widget can be moved, resized, linked to selected text, hidden and reopened from that text, and styled independently. The original Markdown file remains untouched.
| Capability | What it does |
|---|---|
| Floating labels | Add an editable annotation anywhere over the current note. |
| Document-positioned scrolling | Labels use document-space coordinates and move with the page when you scroll. |
| Text links | Select source text, create a label, and retain an interactive link between the two. |
| Context toggle | Ctrl + click linked text on Windows/Linux, or Cmd + click on macOS, to show or hide associated labels. |
| Flexible layout | Drag with the header and resize from the lower-right handle. |
| Minimal interface | Controls stay hidden until the label is hovered or focused. |
| Appearance controls | Set a label background colour and transparency from the right-click menu. |
| Markdown preview | Switch a label between Markdown source and a rendered preview. |
| Safe note body | Label content and geometry are stored in plugin data, not inserted into the Markdown file. |
These editable SVG previews establish the intended dark-theme visual language. Before submitting to Obsidian Community Plugins, replace them with captures from a local test vault that show the released interface exactly.
Editable floating label |
Linked source text |
Right-click appearance controls |
Scroll synchronisation |
A label's coordinates are now measured relative to the note document rather than the visible window.
Download the latest Release from this repository.
Create the folder below inside your vault:
<vault>/.obsidian/plugins/floating-text-overlay/
Copy these release assets into that folder:
main.js
manifest.json
styles.css
In Obsidian, open Settings → Community plugins and enable Floating Text Overlay.
The plugin is not yet listed in Obsidian's Community Plugins directory. Once it has passed the submission review, users will be able to install it from Settings → Community plugins → Browse.
Open a Markdown note and use either the ribbon icon or the command:
Floating Text Overlay: Add floating text box
A newly created, untouched empty label is only a transient draft. It is saved after a real action such as typing, dragging, resizing, styling, previewing, or explicitly linking text.
Ctrl + click / Cmd + click on the highlighted linked text to toggle the label.Right-click a label to change its background colour and transparency. New labels start with a white surface.
Click Preview Markdown from the label footer. Click Back to edit to return to the source editor.
This plugin includes an experimental bridge for Editing Toolbar. Keep the floating label focused, select text inside it, then invoke a toolbar command.
The bridge is intended for common Markdown operations such as bold, italic, headings, lists, inline code, undo/redo, font colour, and background colour. Since Editing Toolbar is a separate community plugin with its own command registration and UI modes, verify the exact buttons you use in your vault before release. Track results in TESTING.md.
Floating label state is stored in the plugin's Obsidian data file, keyed by note path. The following values are persisted after a meaningful edit:
Moving or resizing a label does not write, reflow, or insert content into the note's Markdown body.
npm install
npm run dev
During development, place the repository at:
<test-vault>/.obsidian/plugins/floating-text-overlay/
Reload Obsidian after a build. The folder name must match the plugin id in manifest.json.
npm run build
npm run docs:toc
A GitHub release must attach:
main.js
manifest.json
styles.css
The release tag must match manifest.json, for example 0.7.0.
Follow the full workflow in TESTING.md. The scroll-specific regression test should be run in both Live Preview and Reading View with a note long enough to scroll through multiple screen heights.
| Asset | Purpose |
|---|---|
assets/logo.svg |
Repository avatar, release asset, and future directory branding. |
assets/hero-banner.svg |
GitHub README header. |
docs/images/scroll-sync-demo.gif |
Visual explanation of the v0.7.0 scroll behaviour. |
docs/images/*.svg |
Editable dark-theme preview set. |
Open an issue with a reproducible vault setup, Obsidian version, operating system, theme, enabled editor plugins, and screenshots or screen recording. Pull requests are welcome for isolated, tested improvements.
MIT © 2026 Qiuyi Liao