Find broken wiki-links in the vault. Read-only analysis — scans for [[links]] and verifies target files exist. No writes, no dependencies.
Finds broken [[wiki-links]] across your vault by extracting link targets and verifying that each target file exists. Read-only — never modifies files.
/check-links
Or ask:
Use Grep to find all [[...]] patterns in markdown files:
Grep:
pattern: "\\[\\[([^\\]|]+)"
glob: "*.md"
output_mode: content
-n: true
This captures the link target (before any | alias). Exclude .claude/ and .obsidian/ directories from results.
From the grep results, extract the unique link targets. For each match like [[My Note]] or [[My Note|display text]], the target is My Note.
Strip:
[[Note#heading]] → target is Note[[Note^block-id]] → target is Note[[Note|alias]] → target is NoteFor each unique target, use Glob to check if a matching file exists:
Glob:
pattern: "**/<target>.md"
A link is broken if no file matches. A link is valid if at least one file matches.
Group broken links by source file:
## Broken Links Report
### Daily Notes/2024-01-15.md
- [[Projet Alpha]] — no matching file found
- [[Old Goal]] — no matching file found
### Projects/Project Beta.md
- [[Meeting Notes Jan]] — no matching file found
---
**Summary:** 3 broken links across 2 files (out of 45 total links checked)
For each broken link, try to find a close match:
**/*<partial-target>*.md- [[Projet Alpha]] — Did you mean [[Project Alpha]]?
![[image.png]]) — skip these, they reference attachments[text](https://...)) — skip these, they are not wiki-links[[{{date}}]]) — skip anything with {{ in the target[[]]) — report as malformed, not brokenIf all links are valid:
✅ All wiki-links verified — no broken links found across X files (Y links checked)
/check-links periodically to catch link rot/search to find notes that reference deleted content