Version history for Obsidian — Google Docs-like version tracking for your notes.
Obsync automatically tracks changes to your markdown files and stores version history locally using diffs. View what changed between versions and restore previous versions with ease.
- Automatic version tracking — Saves versions automatically when files are modified
- Efficient diff storage — Uses a hybrid approach with diffs and periodic checkpoints to minimize storage
- Local-first — All data stored in a SQLite database within your vault
- Startup scan — Detects new, modified, and deleted files when Obsidian launches
- Configurable checkpoints — Adjust the checkpoint interval to balance storage vs. reconstruction speed
Obsync monitors your markdown files and creates version snapshots:
- Diffs — Most versions are stored as compact diffs from the previous version
- Checkpoints — Full snapshots are saved periodically (default: every 10 versions) for fast reconstruction
- SQLite database — All history is stored in
history.dbwithin the plugin folder
- Open Settings → Community plugins
- Select Browse and search for "Obsync"
- Select Install, then Enable
- Download
main.js,manifest.json, andstyles.cssfrom the latest release - Create a folder:
<YourVault>/.obsidian/plugins/obsync/ - Copy the downloaded files into the folder
- Restart Obsidian and enable the plugin in Settings → Community plugins
| Setting | Default | Description |
|---|---|---|
| Checkpoint interval | 10 | Number of versions between full snapshots. Lower values mean faster version reconstruction but more storage usage. |
| Debug mode | false | Enable detailed debug logging in the console for troubleshooting. Requires plugin reload. See Debug Logging for details. |
- Node.js 18+
- npm
npm installnpm run devnpm run buildnpm run lintnpm run testSee docs/architecture.md for detailed technical documentation.
Key design decisions:
- Markdown only — Focuses on
.mdfiles; binary files don't diff efficiently - UUIDv7 IDs — Time-sortable and globally unique for future sync support
- sql.js — WebAssembly SQLite that works in Obsidian's Electron environment
- diff-match-patch — Battle-tested diffing algorithm for text