saiken404 downloadsAudit attachments for true orphans, duplicates, oversized files, bad names, and misplaced files, then clean them up safely.
Safe attachment cleanup with evidence, not guesswork.
Attachment Audit scans your vault for truly unused attachments, duplicates, oversized files, junk-named pastes, and misplaced files — then shows exactly what is reclaimable before you touch anything.

Hero image is a live Obsidian capture from the same scan: the review modal is open on a 5.2 MB misplaced screenshot, while the dashboard on the right shows 10 flagged attachments, 9.6 MB reclaimable, duplicate review, large-file hits, and junk-name detection.
Works offline · One-time payment · Unlimited future updates · No account
Attachment Audit gives you the part most vault tools avoid: enough evidence to clean attachments without guessing. Free lets you audit the vault properly and clean one file at a time. Pro unlocks bulk cleanup, saved scan profiles, custom rules, and severity tuning when the vault is too messy for babysitting.

Motion proof: a live Obsidian capture from the restore test vault cycling through flagged files in the review flow. It moves from a 5.2 MB misplaced screenshot to another junk-named orphan while the same scan summary stays visible on the right.
Built for the moment when "I think these files are junk" is not good enough and you want evidence before you start deleting.
Best fit if you:
Free is a complete audit tool. Pro is for changing many files at once.
| Feature | Free | Pro |
|---|---|---|
| All six detectors | ✓ | ✓ |
| Dashboard with reclaimable-space total | ✓ | ✓ |
| Image previews and duplicate grouping | ✓ | ✓ |
| One-file-at-a-time cleanup | ✓ | ✓ |
| Open / reveal / rename / ignore / exclude / mark reviewed | ✓ | ✓ |
| Per-detector thresholds and exclusions | ✓ | ✓ |
| Multi-select, bulk ignore and bulk mark-reviewed | ✓ | ✓ |
| Markdown report export | ✓ | ✓ |
| Cleanup history and restore | ✓ | ✓ |
| Your first bulk cleanup | ✓ | ✓ |
| Unlimited bulk trash, dedupe and move | ✓ | |
| Saved scan profiles | ✓ | |
| Custom rules | ✓ | |
| Severity tuning | ✓ |
Free proves the audit is trustworthy. Pro makes cleanup practical at real vault size.
The paid value is not just "more settings." It is the difference between:
If your vault has become a landfill of screenshots, pasted images, duplicate exports, and old PDFs, the practical Pro win is:
That is the upgrade story: not "extra knobs," but "I can finally clean this vault like an adult."
Most attachment tools optimize for naming or filing. Useful, sure. But that is not the scary part.
The scary part is cleanup:
Attachment Audit exists to make that decision with evidence instead of vibes.
Pasted image..., Screenshot..., IMG_1234, or UntitledAttachment Audit does not flag an attachment as unused from resolved Markdown links alone.
It cross-checks two independent signals:
.txt, .tex, .json, .excalidraw, SVG, HTML and CSSIt also reads Obsidian's own config folder, so an image used only by a CSS snippet or by another plugin's settings is not mistaken for junk.
That means a file referenced only in canvas, frontmatter, raw HTML, a LaTeX include, or a theme snippet is far less likely to be misclassified as trash.
It also keeps cleanup sane:
Every trash, move and rename is recorded: which files, from where, to where, and when. Open it from the dashboard, the command palette, or settings — and click once to put a whole action back.
Restoring is free at any size. Pro is for doing cleanup at scale; recovering from cleanup is safety, not scale.
It is also honest about what it cannot do. Only files sent to the vault's .trash folder can be restored by a plugin:
| Your "Deleted files" setting | Can Attachment Audit restore it? |
|---|---|
Move to Obsidian trash (.trash) |
Yes, in one click — after verifying the file's content is the one you trashed |
| Move to system trash | No — it tells you to restore from there |
| Permanently delete | No, and it says so before you confirm |
Where a trashed file went is recorded at the moment of the action, so changing that setting later can never make the history offer a restore that would not work. Before putting a file back, its size and content are checked against what was recorded — if it cannot be identified with certainty, the restore refuses and says why rather than guessing. Moves and renames are always reversible, and reversing one re-updates every link it changed.
Community plugins
Open Settings → Community plugins, search Attachment Audit, and install it — one click, auto-updates.
Manual install
Copy main.js, manifest.json, and styles.css into .obsidian/plugins/attachment-audit/ in your vault, then enable the plugin.
Attachment Audit touches files, so safety is the whole business model:
"Trash duplicate copies" is not a merge action. It never rewrites a link, because it never trashes a file that anything links to. That is the whole design: declining to delete a file is safe, silently repointing links is not.
A duplicate copy is trashed only if all of these hold:
So for a set of byte-identical copies:
| Your cluster | What happens |
|---|---|
| One copy linked, the rest orphaned | The orphans are trashed. The linked copy survives — it was never eligible. |
| Every copy is orphaned | One copy is kept and the rest are trashed. You never lose the content. |
| Two or more copies are linked | Nothing is trashed. You get a notice: "no safely-removable duplicate copies (all are referenced or would be the last copy)." |
There is no "smart" choice of which copy is better. Linked copies survive because they are ineligible, not because they were preferred. In the all-orphaned case the survivor is simply the first in the current list order — so if you care which specific file survives, deselect it before running the action.
To actually merge two linked duplicates: search your vault for the filename of the copy you want to lose, repoint those links at the copy you want to keep, then rescan. The loser is now Unused and can be trashed normally. Automatic cross-duplicate repointing is not implemented, and will not ship until it can't corrupt a vault.
Related: Move and Rename do update links — Markdown links, wikilinks, and canvas references, via Obsidian's own link-updating rename. They do not rewrite raw HTML <img src="..."> or path strings stored in frontmatter. Duplicate cleanup needs none of this, since it only ever removes files nothing points at.
Everything runs locally in your vault.
Why not just use a free orphan finder? Because "lists possible orphans" and "safe enough to bulk-delete" are not the same thing.
If I trash a duplicate, will links to it break? No. "Trash duplicate copies" only removes copies that nothing links to, so there is nothing to break and nothing to repoint. If two duplicates are both linked, neither is trashed. See How duplicate cleanup decides.
Does Pro require an account? No. Pro uses a one-time offline license key.
Does Attachment Audit upload my files anywhere? No. It runs locally in your vault.
Bug reports, feature requests, and questions all go to the GitHub issue tracker. It is the only place I track them, so an issue will always get further than a review comment.
Small, local-first Obsidian plugins that each do one job and keep your data in your vault. All of them are in the community directory — search the name under Settings → Community plugins.
Search and views
.base file.Vault health
Writing and research
Time and billing
#billable notes into numbered invoices, so nothing is missed or billed twice.