v-491 downloadsPosition two Markdown panes independently, then lock relative scrolling without jumping. Hold Alt to adjust one pane.
Position two panes independently. Lock them in place. Scroll together.
简体中文 · Download · Report an issue
Compare a source passage with a revision elsewhere in the same long note, or compare two different notes. Locking preserves both starting positions. Neither pane jumps to the other pane's location.

The screenshot shows an isolated test vault with synthetic content. The UI follows Obsidian's language: Chinese for Chinese locales, English otherwise.
Hold Alt while scrolling to adjust only the pane under the pointer. Release Alt to resume synchronization from the new positions. The ribbon and note-header lock buttons work like the status-bar button.
Unlike native linked tabs, this plugin preserves an arbitrary starting offset. It synchronizes movement, not matching text, line numbers, or percentages. Different passage lengths can drift; use Alt or unlock to adjust.
If the two panes are already natively linked, clicking Lock removes their native link. Unlocking or disabling the plugin does not restore it. You can recreate the native link from the tab context menu.
Available in Obsidian Community Plugins.
In Obsidian, open Settings → Community plugins → Browse, search for Relative Scroll Lock, install, and enable it. You can also open the community page and select Add to Obsidian.
relative-scroll-lock-1.0.2.zip from the latest release.relative-scroll-lock folder into your vault's plugin directory, normally .obsidian/plugins/. If you use a custom configuration directory, use its plugins/ directory instead.The plugin folder must contain main.js, manifest.json, and styles.css. These files are also available individually on the release page. GitHub's automatic source-code archives require a build and are not installable packages.
No default shortcut is assigned. In Settings → Hotkeys, search for Relative Scroll Lock and assign a shortcut to Lock / unlock. For example, use Ctrl + Alt + L if it is available. The command palette also provides Lock / unlock and Unlock.
No network requests, telemetry, account, payment, note-body access, or frontmatter changes. No third-party runtime dependencies; the plugin uses Obsidian's API.
The plugin accesses current views, note paths, layout, and scroll containers. Locking can remove the pair's native tab link; Obsidian saves that workspace state. No scroll positions or pair relationships are persisted by the plugin.
npm ci
npm run check
npm run package
Source lives in src/main.js; esbuild produces the release main.js. The package command stages installable files in dist/relative-scroll-lock/.
See validation notes for the distinction between automated regression coverage and real Obsidian checks. Source mode uses the same editor scroll container but has not had a separate real-app scenario run.
Developed with AI assistance for a real review workflow. All public screenshots and examples use synthetic text.
MIT. Free and open source. Not affiliated with Obsidian.
Please include your Obsidian version, OS, pane modes, and reproduction steps when reporting an issue. Remove personal information from examples.