Disclaimer
Is this project open source? Yes
Is this project completely free? Yes
Is this project vibe-coded beyond the author’s ability to comprehend how it works? No
Community Directory:https://community.obsidian.md/plugins/vaultend
My vault hit around 800 notes when I realized it was a mess. Tags were duplicated across two languages (#meeting-notes and #회의록 existed side by side), dozens of notes had no links or tags at all, and broken wikilinks were pointing to files I’d renamed months ago. I spent an evening trying to clean it up manually, gave up after 30 minutes, and started building a plugin instead.
That plugin became Vaultend — a maintenance tool that scans your vault for structural problems and helps organize notes. Core scanning (broken links, orphans, duplicates, empty notes) works offline with no AI, while the organizing features use your own API key — and nothing changes until you review and approve (auto-apply is available as an opt-in setting).
MIT License · Your API Key · No Subscription · Full Undo · No Telemetry · Ollama (Local)
What it finds — mostly offline
Run Maintenance scans your vault for structural issues. Most checks run locally with no API key:
- Broken links — wikilinks pointing to notes that don’t exist (heading/block-aware)
- Orphan notes — notes nothing links to (canvas-aware)
- Empty notes — blank files cluttering your vault
- Duplicate notes — similar content detected via TF-IDF (side-by-side comparison)
- Untagged notes — notes without any tags
Two additional checks use AI when a provider is configured:
- Missing tags — AI-suggested tags for notes that need them
- Duplicate tags — cross-language similarity detection via embeddings
Results are sorted by severity (Critical → Warning → Info). You can filter by type, severity, or search by path. Every action — delete, archive, dismiss — is recorded with full undo.

Organizing a single note
Open any note, run Organize Current Note, and the plugin suggests tags and links based on the content. Everything opens in a modal where you can edit, remove, or add before applying. Nothing changes until you click Apply (auto-apply is available as an opt-in setting).
Tags are suggested using a hybrid approach — strongly matching existing vault tags are preferred, and new tags are only created when nothing fits. Links are validated against your actual vault, so you never get suggestions pointing to notes that don’t exist.

Organizing an entire folder
Pick a folder, and the plugin processes every note — showing progress, with a cancel button. Results open in a side panel where you review each note individually. Before batch-applying, a preview modal lets you toggle individual tags and links on or off per note.
Token usage and estimated cost are shown per note and as a total, so you always know what you’re spending.

Merging duplicate tags
This one surprised me. My vault had #project-management, #ProjectManagement, and #프로젝트관리 — all meaning the same thing. Organize Tags finds these in two stages: first by string normalization (casing, hyphens, plurals), then by cross-language embedding similarity.
Each duplicate group shows the canonical tag, its variants, and how many notes are affected. You pick which tag to keep, and it replaces across every note. Fully reversible via Activity Log.

Activity Log — undo anything
Every action the plugin takes is recorded: tag additions, link removals, deletions, archives, merges. Each entry has a Restore button that puts things back exactly as they were. I built this because any tool that changes your notes in bulk needs a reliable undo.

Privacy and control
You can set rules to control what data leaves your device:
- Exclude folders — e.g., your journal or personal folder
- Exclude tags — notes with specific tags are skipped
- Exclude properties — notes with specific frontmatter keys
(e.g., aprivatefield) are skipped - Redaction patterns — regex patterns to strip sensitive content before sending
Rules run locally before any data is sent. The plugin itself sends no telemetry — all communication goes directly between your device and your configured provider.
Supported providers
- OpenAI (GPT-4o, GPT-4o mini, etc.)
- Google Gemini (Gemini 2.5 Flash, etc.)
- Ollama — fully local, no API key needed
- Custom endpoint — any OpenAI-compatible API
Vault Maintenance (broken links, orphans, duplicates, empty notes) works entirely offline with no provider configured.
Links
GitHubUser Guide (Wiki)Community Directory
Feedback and bug reports welcome on GitHub Issues. Happy to answer questions here.