Michael Naumov1k downloadsPick a note by navigating folders and insert a link to it, from a command or from your own scripts.
Obsidian's own link autocomplete searches the whole vault and ranks it fuzzily, which is exactly wrong when you know the link belongs in one folder and you want the same note to come first every time. This plugin is a link picker you can point at a folder and then navigate — pick a folder to descend into it, pick .. to come back out — with a ranking that is deterministic rather than fuzzy: an exact name beats a prefix, which beats a path match, which beats a scattered word match.
It is also callable. The picker returns a string, so a template or a script can ask for a link and drop the answer straight into a property value.
The documentation is a demo vault. Every feature has a note that explains what it does and how to try it.
Start reading here — it is plain markdown, so it works on GitHub with nothing installed.
A copy of the vault ships with every release. You can access it via any of the following:
Link Picker: Open demo vault command.link-picker-demo-vault.zip from the Releases. It unzips into a single link-picker-demo-vault-<version> folder.demo-vault/ in this repository... to come back out, so the list is one folder's contents rather than the whole vault. 02 Navigating foldersfolder-notes setup rather than configured again here. 03 RankingAlt key. 01 Picking a linkFuzzy segment matching and the frontmatter properties it reads. 05 SettingsRun Link Picker: Insert link... in an editor. Any selected text seeds the query and is replaced by the link you choose. Enter on a folder descends into it, and Enter on .. goes back up.
| Plugin | Features | How Link Picker differs |
|---|---|---|
Alias Quick Switcher (my plugin) |
Opens notes; path-segment alias matching; folder-note aliases | Different action: inserts links; navigates by folder |
Another Quick Switcher |
Configurable switchers; fuzzy search; preview; multi-select; directory filter; insert hotkey | Overlaps on picking; folder navigation with ..; fixed ranking; script returns a link string |
Auto Link Suggester |
Inline name completion from selected folders; no opening brackets needed | Alternative interaction: command/script picker rather than inline completion |
Journal Utils |
Mobile people/group/location pickers; updates related frontmatter lists | Broader targets: any folder; desktop/mobile; leaves properties to the caller |
Linkr |
File/heading/block link builder; display text; embed toggle | Narrower targets: whole notes; adds folder navigation, named rooted pickers and an API |
Path Picker |
Rooted filesystem path picker; preview; files/directories outside the vault too | Narrower targets: vault notes; inserts Obsidian links rather than filesystem paths |
Last searched for similar plugins on 2026-10-26.
The picker is published as a cross-plugin API: select(options) resolves with the link as a string and rejects when the user dismisses the picker, and registerNoteCreator(name, createNote) lets a vault script decide how the plugin's own commands create a missing note. Copy api.d.ts, which depends on obsidian alone, and, to check payloads, api-contract.ts beside it. The contract version is 1.2.0, and it moves independently of the plugin's.
Calling Link Picker from a plugin or a script covers the files to copy, consuming it with or without @mnaoumov/obsidian-lib, and the options worth knowing before you design around it.
The plugin is available in the official Community Plugins repository.
To install the latest beta release of this plugin (regardless if it is available in the official Community Plugins repository or not), follow these steps:
Add plugin button once and wait a few seconds for the plugin to install.By default, debug messages for this plugin (id: link-picker) are hidden.
If you need to enable them refer to the documentation.
All notable changes to this project will be documented in the CHANGELOG.
Contributions are welcome — see CONTRIBUTING to get set up.
Open issues through the issue forms, not as blank issues.
To report a bug from inside Obsidian, run the Link Picker: Report a bug command. It opens the bug form with the plugin version, the Obsidian version and your operating system already filled in.
Filing from the CLI or the API (gh issue create --body, or an AI agent filing for you) skips the form, and gh issue create --template cannot load an issue form. In that case, open the matching form in .github/ISSUE_TEMPLATE/, copy every field as a ### <label> heading in the form's order, and fill in each one. Always state the plugin version, the Obsidian version and your operating system.