Radek Svítil3 downloadsOpen external links in your preferred browser instead of the system default.
Choose which web browser opens HTTP and HTTPS links in the Obsidian desktop app, independently of the operating system's default browser.
Status: Public beta 0.2.3. Tested successfully on Windows with Chrome as the primary browser and Edge for Alt-click. Linux and macOS remain untested. Submitted for Community directory review; not yet approved.
window.open() link handling shortly after user clicks.To install outside the Community directory, install BRAT, select Add a beta plugin for testing, and enter Radouch/obsidian-external-browser. Alternatively, download both main.js and manifest.json from the GitHub Releases page and follow the manual installation instructions below.
Report bugs through GitHub Issues. Include your Obsidian version, OS, view mode, browser configuration and the result of both diagnostic commands.
window.open() calls made shortly after a user click (including some Live Preview links). In particular, links opened through other application APIs, keyboard-only triggers, or custom plugin handlers may remain unaffected. The window.open() interception is limited to 1.5 seconds after mouse input; other plugins using that API may conflict, and unrelated calls during that interval may be affected.PATH are tried; on macOS the system open -a launcher is used.If a link still opens in the system browser, run the primary-browser test from the Command palette. If that opens Chrome/Edge, the browser executable works and the link activation is bypassing the interceptor. In that case, report the Obsidian version, view mode (Reading/Live Preview/Source), link markup, and whether the link is in the note body or elsewhere. If the test fails, look at the developer console for the launch error (Ctrl+Shift+I on Windows/Linux).
To update a manual install, replace both main.js and manifest.json, then disable and re-enable the plugin (or restart Obsidian).
Requires Node.js 22+ and npm.
npm ci
npm test
npm run build
The build produces main.js at the repository root.
<vault>/.obsidian/plugins/external-browser/.main.js and manifest.json to that folder.To develop with automatic recompilation, run npm run dev, then reload the plugin in Obsidian after edits.
The plugin launches browser executables via Node.js child_process.spawn with shell: false. This triggers an expected security disclosure in automated plugin reviews because the plugin starts external programs. The executable is chosen from supported browsers or the user-provided custom executable, and the HTTP(S) URL is passed as a separate argument without shell interpolation.
Dependencies are locked in package-lock.json, builds use npm ci, and release artifacts include GitHub build provenance attestations. Obsidian 1.13+ uses searchable declarative settings; older versions continue using the legacy settings UI.
The plugin does not send telemetry or make its own network requests. Clicking a link sends that URL as a command-line argument to the configured browser; the browser itself handles the request. If you set a custom executable, you are responsible for trusting that program. The plugin only handles HTTP and HTTPS schemes and invokes executable commands without a shell.
Please test on your operating system and report reproducible problems with Obsidian version, OS, and browser. Read CONTRIBUTING.md and CHANGELOG.md. The license is MIT (see LICENSE). This implementation does not copy code from the earlier Open Link With project.