MagicLink
pendingby Fabien Polly (Infinition)
Hover-first plugin to quickly navigate to notes or headings and insert links.
MagicLink for Obsidian
MagicLink is a powerful hover-first navigation plugin for Obsidian. It automatically detects words and multi-word phrases in your notes that match note names, headings, tags, or property values, and displays an interactive popup with quick navigation and link insertion options.
You can quickly turn it off & on from the button near the View/Edit button.
MagikLink will show the highlighted links in Read mode.
β¨ Features
π Smart Detection
MagicLink detects words and phrases that match:
- π Notes - Words/phrases matching note file names
- # Headings - Words/phrases matching headings in any note
- π·οΈ Tags - Words matching tags (without the # prefix)
- π Properties - Words matching frontmatter property values
π Multi-Word Phrase Detection
MagicLink can detect phrases of up to 10 consecutive words. For example:
- A note named "Machine Learning Basics" will be detected when you hover over those 3 words
- The plugin prioritizes the longest matching phrase
- Configurable via slider in settings (1-10 words)
π¨ Customizable Styles
You can fully customize how detected words appear in your reading view:
- Color - Choose any color using a color picker
- Bold/Italic - Toggle bold and italic styles independently
- Granular Control - Set different styles for Notes, Headings, Tags, and Properties
πͺ Quick Toggle
A "Magic Wand" button is added to the header of every note view:
- Click to instantly enable/disable the plugin
- Visual Feedback - The wand becomes transparent when disabled
- Instant Update - The view refreshes immediately to show/hide highlights
π― Interactive Popup
When you hover over a matching word or phrase, a popup appears with:
- Navigation links - Click to open notes, jump to headings, or navigate to tags
- π Insert buttons - Small button next to each result to insert the appropriate link
[[NoteName]]for notes[[NoteName#Heading]]for headings#tagfor tags[[NoteName]]for properties
βοΈ Highly Configurable
Detection Toggles
Toggle each detection type independently:
- β Detect Notes
- β Detect Headings
- β Detect Tags
- β Detect Properties
Phrase Detection
- Max phrase words (slider 1-10) - Maximum consecutive words to detect as a phrase
Behavior
- Hover delay - Time before popup appears (default: 250ms)
- Min word length - Minimum characters for single word detection (default: 2)
- Max results - Maximum items shown per section (default: 10)
- Show insert buttons - Toggle π buttons on/off
π« Word Exclusions
Add common words to an exclusion list so they won't trigger the popup.
β±οΈ Smart Behavior
- No popup while typing - Prevents distractions during writing
- Popup stays visible - The popup locks in place when your mouse enters it
- No interference - Another word underneath won't replace the current popup
Settings
π¦ Installation
Method 1: BRAT (Recommended for Beta Testing)
- Install the BRAT plugin from Community Plugins
- Open BRAT settings
- Click "Add Beta Plugin"
- Enter:
infinition/obsidian-magiclink - Click "Add Plugin"
- Enable MagicLink in Community Plugins
Method 2: Manual Installation
- Go to Releases
- Download
main.js,manifest.json, andstyles.css - Create folder:
<your-vault>/.obsidian/plugins/obsidian-magiclink/ - Copy the 3 files into this folder
- Reload Obsidian
- Enable MagicLink in Settings β Community Plugins
Method 3: Build from Source
# Clone the repository
git clone https://github.com/infinition/obsidian-magiclink.git
# Navigate to plugin folder
cd obsidian-magiclink
# Install dependencies
npm install
# Build the plugin
npm run build
# Copy main.js, manifest.json, styles.css to your vault's plugin folder
βοΈ Settings
Detection
| Setting | Description | Default |
|---|---|---|
| Detect Notes | Match words/phrases with note names | β On |
| Detect Headings | Match words/phrases with headings | β On |
| Detect Tags | Match words with tags (without #) | β On |
| Detect Properties | Match words with frontmatter values | β On |
Phrase Detection
| Setting | Description | Default |
|---|---|---|
| Max phrase words | Max consecutive words to detect (1-10) | 5 |
Styles
For each type (Notes, Headings, Tags, Properties), you can configure:
- Color: Pick a custom color
- Bold: Toggle bold text
- Italic: Toggle italic text
Behavior
| Setting | Description | Default |
|---|---|---|
| Hover delay (ms) | Time before popup appears | 250 |
| Min word length | Minimum characters for detection | 2 |
| Max results | Max items per section | 10 |
| Show insert buttons | Show π button for link insertion | β On |
Exclusions
| Setting | Description | Default |
|---|---|---|
| Excluded words | Comma-separated list of ignored words | the, and, for, with, this, that, from, have, been |
π±οΈ Usage
- Hover over any word or phrase in your note
- If it matches a note, heading, tag, or property, a popup appears
- Click on any item to navigate to that location
- Or click the π button to insert the appropriate link
- Toggle Plugin: Click the πͺ wand icon in the note header to enable/disable MagicLink.
π Popup Sections
| Icon | Section | Action |
|---|---|---|
| π | Here | Jump to heading in current note |
| π | Notes | Open notes with matching names |
| # | Headings | Jump to headings in other notes |
| π·οΈ | Tags | Jump to where a tag is used (with line number) |
| π | Properties | Open notes with matching property values |
π Link Insertion
Each result row has a small π button that inserts the appropriate link:
| Type | Inserted Link |
|---|---|
| Note | [[NoteName]] |
| Heading | [[NoteName#Heading]] |
| Tag | #tagname |
| Property | [[NoteName]] |
π§ Technical Details
- DOM-based detection - No CodeMirror conflicts
- Efficient indexing - Indexes built on load, updated on file changes
- Multi-word support - Detects phrases up to 10 words
- Smart popup - Locks when mouse enters, prevents accidental replacement
π License
MIT License - Free to use and modify.
π€ Author
π Links
Made with β€οΈ for the Obsidian community.
Star History
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.