A native macOS menu bar app that becomes your default browser and sends every link to the right browser and profile — automatically with rules, or with a quick picker.
Juggling a personal Chrome, a work Chrome profile, and Firefox for clients? Stop opening links in the wrong place. Browser Picker routes each link to the exact browser and profile you want — so work links land in your work profile, personal links in your personal one, automatically.
A universal build that runs natively on both Apple Silicon and Intel Macs (macOS 14.0+). Every release is signed with a Developer ID certificate and notarized by Apple, so it opens without Gatekeeper warnings.
- Download
BrowserPicker-X.Y.Z.dmgfrom the latest release. - Open the DMG and drag Browser Picker into your Applications folder.
- Launch it from Applications — the icon appears in your menu bar.
brew install --cask mertizci/tap/browser-picker- 🎯 Browser + profile routing — not just "open in Chrome", but "open in Chrome → Work" or "Firefox → Client A". Each link lands in the right account, ready to go.
- 🧭 Menu bar control — pick the active browser + profile (Safari, Chrome, Edge, Brave, Vivaldi, Dia, Firefox) in one click.
- 🔀 Automatic routing rules — match links by URL contains, host equals, or host suffix. First match wins; reorder by dragging.
- 🪃 Two fallback modes when no rule matches:
- Silent — open in your current menu bar selection.
- Picker — prompt for the browser/profile each time.
- 👤 Profile discovery
- Chromium browsers (Chrome, Edge, Brave, Vivaldi, Dia) — from each browser's
Local State. - Firefox — from
profiles.iniand Firefox Profile Groups (selectable profile names). - Safari — from
SafariTabs.db, with a menu scan fallback. - Dia ignores command-line arguments, so links are handed to it by automation: an existing window of the target profile is reused, otherwise the link is moved into that profile.
- Chromium browsers (Chrome, Edge, Brave, Vivaldi, Dia) — from each browser's
- 🧑🏫 Guided onboarding that requests and live-tracks the required permissions.
- ✨ Polished UI — window-style menu bar popover, redesigned Settings, rule editor with live preview, built-in FAQ and About.
- 🖼️ Native browser icons from installed apps, with Simple Icons SVG fallback.
| Permission | Why it's needed |
|---|---|
| Accessibility | Drive Safari's File → New … Window menu, and Dia's profile menu, to open links in a specific profile. |
| Full Disk Access | Read Safari profile names from the protected SafariTabs.db. |
On first launch an onboarding window walks you through both. After granting Accessibility, quit and reopen the app — macOS only applies that permission on a fresh launch.
To run:
- macOS 14.0 (Sonoma) or later
- Apple Silicon or Intel — ships as a universal binary
To build from source:
- Xcode 15+
- An Apple Development signing certificate (a stable code signature keeps the Accessibility grant across rebuilds)
brew install xcodegen # once
xcodegen generate
xcodebuild -scheme BrowserPicker -destination 'platform=macOS' -configuration Debug build
open ~/Library/Developer/Xcode/DerivedData/BrowserPicker-*/Build/Products/Debug/BrowserPicker.appOr open BrowserPicker.xcodeproj in Xcode and press ⌘R.
Signing is configured in
project.yml(CODE_SIGN_IDENTITY). Ad-hoc signatures change on every build and break the Accessibility grant, so a real "Apple Development" identity is recommended.
- Launch Browser Picker — the icon appears in the menu bar.
- Complete the onboarding (grant Accessibility + Full Disk Access).
- Choose Set as Default Browser… from the menu bar.
- Pick your default browser and profile.
- Open Settings → Rules to add routing rules (e.g. URL contains
r2o→ Firefox · Work).
Settings are stored as JSON at:
~/Library/Application Support/BrowserPicker/config.json
BrowserPicker/
├── BrowserPickerApp.swift # App entry, AppDelegate, URL handling
├── Core/ # Models, SettingsStore, RuleEngine, URLRouter
├── Browsers/
│ ├── BrowserLauncher.swift # Chromium/Firefox/Safari dispatch
│ ├── SafariLauncher.swift # AppleScript profile targeting
│ ├── AutomationPermissionService # PermissionMonitor (Accessibility + FDA)
│ └── ProfileDiscovery/ # Per-browser profile discovery
├── UI/ # Menu bar, Settings, Rules, Onboarding, FAQ, About
└── Resources/ # faq.html, browser SVG icons
# After making Browser Picker the default browser:
open "https://example.com"- Accessibility shows "not granted" after granting — quit and reopen the app (use Quit & Reopen); macOS applies it only on a fresh launch.
- Safari profiles missing — grant Full Disk Access, or open Safari and use Scan Safari Profiles in Settings → Browsers.
- App icon looks blank — quit/reopen; if it persists, log out and back in to clear the macOS icon cache.
Developed by Mert IZCI — mertizci@gmail.com.
Browser Picker application code is provided as-is. Browser SVG fallbacks use Simple Icons (MIT). See BrowserPicker/Resources/Icons/browsers/ATTRIBUTION.md.