chmod777h1 downloadsSynchronize scrolling across selected PDF panes and popout windows, with page alignment, reading progress, and manual offsets.
Scroll matching PDFs together in Obsidian. Select two or more panes, including popout windows, and move any selected pane to keep the others aligned.
中文说明 · Compatibility · Release guide · Changelog

Obsidian desktop 1.14.4 or later. macOS 1.14.4 is the verified baseline. Windows and Linux have not been application-tested. Mobile is intentionally excluded. Future app versions may require plugin updates because the built-in PDF viewer's DOM is not a stable public API. See the compatibility report.
Use vertical, continuous scrolling with no page spreads in each PDF viewer. Horizontal, wrapped/grid, non-continuous page modes, and two-page spreads are unsupported.
The Obsidian Community listing is published. Automated community review was pending at submission on October 17, 2026; see the listing for the current status. Release files are also available from GitHub Releases.
For manual installation:
main.js, manifest.json, and styles.css from the same release.pdf-sync-scroll under the plugins folder in your vault's configuration directory (normally .obsidian/plugins/pdf-sync-scroll).For an existing local installation, back up the old plugin folder and replace only those three files. Keep data.json to retain your settings. The plugin ID and command IDs have not changed. Pane selections may need to be chosen again after workspace changes.
After directory approval, installation will also be available through Settings → Community plugins → Browse. This documentation does not imply approval has already happened.

The command preserves relative offsets and resumes synchronization. Reset alignment clears offsets. Offsets are temporary: changing group membership, reconnecting, pausing/resuming, switching modes, replacing a file, or restarting clears them. If a hidden pane rejoins, realign if necessary.
| Command | Effect |
|---|---|
| Select PDF panes | Open the pane selector |
| Toggle synchronization | Pause or resume |
| Align at current positions | Capture offsets and resume |
| Reset alignment | Match page numbers or progress again |
Obsidian prefixes these with the plugin name. No default hotkeys are assigned.
No network requests, telemetry, accounts, advertisements, payment, external services, or access to files outside the vault are required by this plugin. It reads PDF pane layout and scroll positions, not PDF text, and never edits PDF files. Settings store the synchronization mode, enabled state, and selected pane identities/file paths in the plugin's local data.json. Do not publish that file. Obsidian's own update checks are separate from this plugin.
If the status says it is waiting, show at least two compatible PDF tabs, wait for rendering to finish, and check each viewer's scrolling and spread settings. Refresh the selector if panes have changed. Select your panes again after recreating the workspace. If an Obsidian update changes the PDF viewer, report the app/installer versions, OS, plugin version, and reproduction steps with synthetic files if possible.
main.js is the complete, readable CommonJS source and shipped runtime. There are no runtime dependencies or transpilation steps. require('obsidian') is provided by the host application.
Use Node.js 22 or newer and pnpm 11.25.0:
pnpm install --frozen-lockfile
pnpm verify
verify checks JavaScript syntax, runs the official Obsidian ESLint preset for JavaScript, runs regression tests, and stages exactly three installable files in dist/. It also writes SHA-256 checksums under artifacts/. TypeScript-only API lint checks do not apply to this plain JavaScript project; runtime/API compatibility is documented separately.
To additionally create install/source ZIPs, run python3 scripts/package.py after verification (Python 3.9+; standard library only).
The included CI runs these checks on macOS, Windows, and Linux once hosted on GitHub. CI configuration alone is not proof that those platforms have passed. A matching version tag creates a draft release with attachments; see the publishing guide.