Internal link autocomplete tries too hard

Use case or problem

When autocompleting internal link syntax for a note that doesn’t exist, ala [[Some new thing, the autocompleter tries WAY too hard. It nearly always insists that there’s some crazy match for an entire unique new note name.

This is a pain, since I often find myself in a workflow of:

  • Working on a note, then
  • Realizing that I want to break out a new child/sibling note, then
  • Attempting to directly type the internal-link inline.

A special case of the above that I hit very regularly: when using Kanban, create a new card, then type a new internal link name as that card’s content. Autocompleter says: FIGHT MEEEEEE!

Proposed solution

The autocompleter needs to give up much sooner, at least for internal links. I think some trial and error around heuristics would be required. E.g. tools like Levenshtein distance are probably useless as a sole metric, since we’ve all been trained to type out somewhat randomly placed “significant” letters from existing autocompletion targets, ala “vinab” for “A Very Important Note About Some Things”.

A better first-cut would be a length cutoff, or perhaps a function of (length, match strength). Match strength is a bit abstract here, and depends on what’s already available from the autocompleter and/or some second-order metric like “number of unmatched characters relative to top a/c hit” etc. Learnable predictability is a key goal here. Envisioning an ideal solution, users should be able to form reliable muscle memory both for linking to existing notes and when creating new notes.


Agreed. Until there is a setting that allows Obsidian to warn you when you are creating a note with a name that already exists in another folder, I use this and another method to double check that no note already exists with the same name (see Warning: Note with same name exists in another folder). And, like you said, the autocomplete is definitely not one to easily back down.


There are a couple of FR that basically say that we don’t try hard enough.

What’s stopping you from ignoring the suggestion and close ]]?


Great point re: just closing out with ]]. I now think part of what I’ve been running into are some different expectations from other software on tabbing out of an a/c context – basically unexamined stuff graven into muscle memory.