Guillermo Gutiérrez Teuler15 downloadsIgnore emojis in note names in Quick switcher and link suggestions when the query has none.
If you put an emoji in front of your note names (🌍 Atlas, 📅 Calendar), Obsidian's Quick switcher (Ctrl+O / Cmd+O) and [[ link suggestions still find them, but rank them below notes whose name starts directly with what you type.
This plugin makes both searches ignore emojis in note names and aliases when your query contains no emoji, as proposed on the Obsidian forum. If you type an emoji, search works exactly as before.
| You type | First result without the plugin | First result with the plugin |
|---|---|---|
atlas |
Atlas Headrest |
🌍 Atlas |
cal |
Calendar 2026 |
📅 Calendar |
🌍 |
🌍 Atlas |
🌍 Atlas (unchanged) |
🌲 Plants is compared as Plants). If the native score is better, it is kept.TheWillyM4AK/obsidian-emoji-insensitive-search.main.js and manifest.json from the latest release, create .obsidian/plugins/emoji-insensitive-search/ inside your vault, and copy both files into it.Then enable Emoji Insensitive Search in Settings → Community plugins.
Use Ctrl+O and [[ as usual. Disable the plugin to restore the native behavior.
Requires Node.js 24 or later.
npm ci
npm run lint
npm run typecheck
npm test
npm run build
Unit tests cover emoji stripping (variation selectors, skin tones, flags, ZWJ sequences, and keycaps), highlight positions, scoring, ordering, and reversible patches.
tests/native.integration.js checks the plugin against the actual native methods inside Obsidian. It is an expression that evaluates to an async function (app, source): it loads the given main.js in memory only, runs the checks with fictional files and aliases, and unloads the plugin at the end, without writing to the vault. The plugin must not be installed in that vault. Run it with the Obsidian CLI (obsidian eval). Because the CLI does not wait for async functions, write the result to a file:
(async () => {
const fs = require('fs');
const run = eval(fs.readFileSync('PATH/tests/native.integration.js', 'utf8'));
const result = await run(app, fs.readFileSync('PATH/main.js', 'utf8'));
fs.writeFileSync('PATH/result.json', JSON.stringify(result, null, 1));
})();
All checks must pass, with an empty failures array.
MIT · TheWillyM4AK. Built with the Obsidian API.