arghonis21 downloadsTake quick snapshots of notes and compare them, file recovery versions or git commits side by side with the live note. Highlights, an editable current side and one-click restore of changed blocks.
Take a snapshot of a note in one click, then compare any earlier version of it side by side with the live note: the whole file on both sides, with the changes highlighted word by word.

| Command | What it does |
|---|---|
| Take snapshot | Saves the current note immediately, with a timestamp. |
| Take named snapshot | Same, but asks for a name first. |
| Compare with previous version… | Opens the picker: the 5 latest snapshots, the 5 latest File recovery versions and the 5 latest git commits for the note. When there are more snapshots or File recovery versions, a Show all… row lists every one. |
| Compare with latest snapshot | Opens the diff with the newest snapshot, skipping the picker. |
| Delete a snapshot… | Moves a snapshot to the trash. |
The camera and compare icons in the ribbon, and the right-click menu on a note, offer the same actions. You can bind hotkeys to any command in Settings → Hotkeys. Inside a diff tab, Change… switches to another version and Open note opens the note in a regular tab.
| Setting | Default | |
|---|---|---|
| Snapshot folder | .snapshots |
Where snapshots are stored. A folder starting with a dot is hidden from the file explorer, search and graph. Changing it doesn't move existing snapshots. |
| Ask for a name on every snapshot | Off | When off, Take snapshot saves instantly; Take named snapshot always asks. |
| Maximum snapshots per note | 5 | When a new snapshot goes over the limit, that note's oldest snapshots are deleted. Set to 0 for no limit. |
| Collapse unchanged sections | Off | Fold long unchanged stretches in the diff. |
| Show restore arrows | On | Show the arrows that copy a block back into the note. |
You can change the snapshot limit to whatever suits you. High limits aren't recommended, especially in large vaults: every snapshot is a full copy of its note.
Each snapshot is a Markdown file named after the note, the date and the time
(plus your name for it, if you gave one), for example
.snapshots/Chapters/Chapter 6/Chapter 6 2026-10-05_14-30-12.md. It survives
restarts and you can open it with any tool. When you rename or move a note,
its snapshots move with it, and renaming also updates their file names.
Snapshots deleted with Delete a snapshot… go to your system trash (or the
vault's .trash folder). Snapshots removed by the per-note limit are deleted
permanently.
If your vault is a git repository, add the snapshot folder to its .gitignore:
.snapshots/
git
in the vault folder with read-only commands (git log and git show). It
never commits, checks out or changes anything in the repository. If git isn't
installed, or the vault isn't in a repository, commits don't appear.
On mobile, git is never used.From Obsidian: open Settings → Community plugins → Browse, search for "Snapshot Diff", install it and enable it.
Manually: download main.js, manifest.json and styles.css from the
latest release into
<vault>/.obsidian/plugins/snapshot-diff/, then enable Snapshot Diff in
Settings → Community plugins.
npm install
npm run dev # rebuild on every change
npm run build # type-check and build for release
Both write the plugin to snapshot-diff/ (main.js, manifest.json,
styles.css). Copy or symlink that folder into a test vault's
.obsidian/plugins/ folder.
To release, run npm version patch (or minor, major). This updates
manifest.json and versions.json and creates the tag. Then
git push --follow-tags: a GitHub Actions workflow builds the plugin and drafts
a release with the three files for you to publish.
This plugin was developed with the help of Claude, Anthropic's AI assistant, used for writing and reviewing code and documentation. All changes were reviewed and tested by the author.