URL unfurling for Obsidian. Fetch link titles and descriptions, insert as markdown links or rich previews.
- Format Toggle: Cycle any URL between three formats via command palette or context menu
- Three Formats: Plain URL, Markdown Link, or Rich Link (with bold domain)
- Sidebar View: Browse page links and recent history
- Smart Caching: Two-tier cache (memory + persistent) for fast access
- Provider Architecture: Extensible system for site-specific handling (Reddit, Google Search)
- Paste a URL into your note
- Place your cursor on the URL
- Run "Toggle link format" from the command palette (Cmd/Ctrl+P)
- Cycle through formats: URL → Link → Rich Link → URL
| Format | Example |
|---|---|
| URL | https://example.com/page |
| Link | [Page Title](https://example.com/page) |
| Rich Link | [Page Title · **example.com**](https://example.com/page) |
For Reddit links, Rich Link uses the subreddit: [Post Title · **r/subreddit**](url)
Link Command uses specialized providers for certain sites:
| Site | Behaviour |
|---|---|
| Google Search | Extracts search query as title (no network request) |
| Fetches post title and subreddit via Reddit JSON API | |
| Auth domains | Skips unfurling for sites requiring login (Slack, Notion, etc.) |
The sidebar shows two sections:
Page Links - All URLs in the active file
- Green dot = unfurled (cached), grey dot = not yet unfurled
- Click to open in browser, or click the pencil icon to edit the link title
- Right-click for context menu: Unfurl, Copy URL, Copy as markdown link
Recent History - Recently unfurled URLs
- Shows title, URL, source pages, and time ago
- Click to open in browser
- Right-click for context menu with source page navigation
| Command | Shortcut | Description |
|---|---|---|
| Toggle link format | Cycle format at cursor (URL → Link → Rich → URL) | |
| Clear link cache | Clear all cached metadata | |
| Toggle link sidebar | Cmd/Ctrl+Shift+L |
Show/hide the sidebar |
- Show sidebar by default: Open sidebar on Obsidian startup
- Recent history limit: Number of items in Recent History section
- Request timeout: Timeout for fetching metadata (ms)
- Reddit link format: Title only or Title + subreddit
- Enable cache: Cache metadata for faster access
- Cache TTL: How long to keep cached metadata (hours)
Domains that require login are skipped during unfurling. Add one domain per line.
From the repo root, run ./install.sh and follow the prompts to select vaults.
Or manually: copy main.js, manifest.json, and styles.css to .obsidian/plugins/link-command/ in your vault, then enable in Settings.
MIT