Anton96 downloadsFinds sync-conflict copies and safely resolves duplicates in your vault.
An Obsidian plugin that finds sync-conflict file copies and helps resolve them safely, change by change.
Install from the Obsidian Community directory
It is designed for vaults synchronized through Yandex Disk, iCloud Drive, Dropbox, Google Drive for desktop, Syncthing, Nextcloud, Resilio Sync, and similar tools that create conflict copies.
Conflict Resolver recognises these unambiguous filename formats:
| Service or format | Conflict copy example |
|---|---|
| Finder, Yandex Disk, and similar clients | Note (2).md, workspace (3).json |
| Syncthing | Note.sync-conflict-20260904-120000-DEVICEID.md |
| Syncthing case conflict | Note.case-conflict-timestamp-device.md |
| Google Drive for desktop | Budget_conf(1).xlsx |
| Dropbox, Nextcloud, Resilio-style clients | Plan (Alice's conflicted copy 2026-09-04).md |
| Conservative generic format | Plan - conflict 2026-09-04.md, Plan - duplicate.md |
For every candidate, the plugin also requires a file with the original name in the same folder. It intentionally ignores ambiguous names such as note-laptop.md.
(2), (3), (4), and so on.conflict and conflicted copy filename patterns.In Settings → Community plugins → Conflict Resolver, enable:
Delete copies already contained in the original
When enabled, the plugin deletes a conflict copy automatically only when:
The original may contain additional lines between copied lines. This handles an older synced copy whose contents were later expanded in the main file, without treating unrelated repeated lines as safe to remove.
The plugin does not automatically delete a file when:
Those cases remain available for manual diff resolution.
For a file named:
Projects/Plan (2).md
the plugin looks for:
Projects/Plan.md
If both files exist, they are treated as a conflict pair.
For differing files, Conflict Resolver calculates a local line-based diff. It groups adjacent differences into blocks and lets you choose Keep main or Use copy for every block. When you apply the selected changes, the plugin merges those choices into the original and deletes the resolved copy. No vault content is sent over the network.
You can also open the Conflict Resolver listing and select Add to Obsidian.
Download these files from the matching GitHub Release:
main.jsmanifest.jsonstyles.cssCreate this folder in your vault:
<vault>/.obsidian/plugins/conflict-resolver/
Put the three downloaded files in that folder.
Restart Obsidian.
Enable Conflict Resolver in Community plugins.
Requirements:
git clone https://github.com/toropanov/obsidian-conflict-resolver.git
cd obsidian-conflict-resolver
npm install
npm run dev
To test the plugin locally, copy or symlink these files into your vault:
main.js
manifest.json
styles.css
Target folder:
<vault>/.obsidian/plugins/conflict-resolver/
Before opening a pull request or publishing a release:
npm run build
npm test
npm run lint
Update the version in manifest.json and package.json.
Add the version-to-minimum-Obsidian mapping in versions.json.
Run:
npm run build
npm test
npm run lint
Create a GitHub Release whose tag exactly matches manifest.json version, for example 0.1.0.
Attach these release assets:
main.jsmanifest.jsonstyles.cssObsidian downloads plugin files from GitHub Releases, not from the repository branch.
1.6.60.1.2