An Obsidian plugin that surfaces semantically similar notes in a sidebar panel. Powered by TF-IDF + cosine similarity via @watthem/quarrel.
- Local-first: All processing happens on-device. No network calls, no API keys.
- Transparent: Uses TF-IDF, a well-understood algorithm. You can understand why results appear.
- Keyword chips: Top TF-IDF terms shown as clickable filters — tap a chip to boost that term's weight in results.
- Stale index detection: Banner shows how many notes changed since last build, with one-click re-index.
- Auto-reindex (experimental): Optionally rebuild the index when files change, with configurable debounce.
- Fast: Near-instant queries once indexed. Handles large vaults efficiently.
- Private: Your notes never leave your vault.
- Download the latest release from the Releases page
- Extract
main.js,manifest.json, andstyles.cssto your vault's.obsidian/plugins/quarrel-similar-notes/directory - Reload Obsidian
- Enable "Similar Notes" in Settings > Community Plugins
Search for "Similar Notes" in Obsidian's Community Plugins browser.
- Open the Similar Notes panel from the ribbon icon (file-search) or command palette
- Build the index when prompted (first time only)
- Navigate to any note — similar notes appear automatically in the sidebar
- Click keyword chips to filter results by specific terms
- Expand a result card for content snippet, tags, and a direct link
- Show similar notes panel — Opens the similar notes sidebar
- Rebuild similarity index — Full rebuild of the TF-IDF index
- Check for changes — Shows how many notes have changed since last index build
| Setting | Default | Description |
|---|---|---|
| Max Results | 5 | Maximum similar notes to display (1–20) |
| Min Similarity | 15% | Minimum similarity threshold (0–50%) |
| Hash Dimensions | 2048 | Vector size — higher is more precise but slower |
| Content Length | 1500 | Characters of content to analyze per note |
| Open on Start | Off | Auto-open the panel when Obsidian launches |
| Setting | Default | Description |
|---|---|---|
| Auto-reindex | Off | Rebuild index automatically when vault files change |
| Auto-reindex Delay | 30s | Debounce window before triggering rebuild (5–120s) |
Similar Notes uses TF-IDF (Term Frequency-Inverse Document Frequency) to find notes with similar content:
- Tokenize: Extract meaningful words from each note
- Weight: Score words by how unique they are to each note (rare words score higher)
- Hash: Project term weights into a fixed-size vector for constant memory usage
- Compare: Rank notes by cosine similarity of their vectors
This approach surfaces notes that share distinctive terminology, not just common words. Because it's TF-IDF, you can always reason about why a result appeared — no black-box embeddings.
This plugin follows Obsidian's recommended disclosure guidelines:
| Concern | Status |
|---|---|
| Network calls | None — all processing is 100% local |
| External APIs | None — no API keys or accounts required |
| Accounts | None — no sign-in required |
| Telemetry/Analytics | None — no tracking of any kind |
| External file access | Vault only — reads note content within the vault |
| Data storage | Index stored locally in the vault's plugin data folder |
| Dependencies | @watthem/quarrel (MIT, no network) |
| Payments | None — fully free and open source |
| Ads | None |
| Closed-source components | None |
Your notes never leave your device.
This plugin is in early development. If you're interested in being a design partner — trying it out and sharing what works and what doesn't — please open an issue on GitHub or reach out on the Obsidian forum.
# Clone the repo
git clone https://github.com/watthem/quarrel-similar-notes.git
# Install dependencies
npm install
# Build for development (with watch mode)
npm run dev
# Build for production
npm run build
# Package release assets (main.js, manifest.json, styles.css)
npm run releaseMIT — See LICENSE for details.
- Similarity engine: @watthem/quarrel
- Built as a transparent, local-first alternative to embedding-based note discovery


