A smart macOS menu bar app that routes URLs to the right browser based on custom rules.
- Universal Binary — runs natively on both Apple Silicon (M1/M2/M3) and Intel Macs
- Dark Mode Native — fully supports macOS system appearance changes
- Domain rules — route
github.comto Chrome,twitter.comto Safari - Regex rules — match any part of a URL with regular expressions
- Source app rules — route based on which app opened the link (e.g. Slack → Work Chrome)
- URL Redirector Decoding — automatically "sees through" Teams, Outlook, Proofpoint, and Slack link wrappers
- Update Notifications — stay informed when a new version is released on GitHub
- Browser profiles — target specific Chrome/Edge/Brave profiles
- Incognito mode — open matched URLs in private windows
- Menu bar app — lives in the menu bar, no Dock icon
Download the latest Universal DMG from GitHub Releases, open it, and drag Browserly to your Applications folder.
Since the app is not notarized, macOS will block it on first launch. Remove the quarantine flag:
xattr -d -r com.apple.quarantine /Applications/Browserly.app- Open Browserly — it appears in your menu bar.
- Click the menu bar icon and press Set Default to register as your system's default browser.
- Check the Launch at Login box to automatically start Browserly when you turn on your Mac.
- Edit your configuration to define routing rules.
- All intercepted URLs are now routed based on your rules.
Pass a URL directly to test routing without any system registration:
swift run Browserly "https://github.com"The app processes the URL, opens the matched browser, and stays in the menu bar.
Config file location:
~/Library/Application Support/Browserly/config.json
| Type | Matches against | Example pattern |
|---|---|---|
domain |
URL hostname | github.com |
regex |
Full URL | .*[?&]debug=true.* |
sourceApp |
Sending app's bundle ID | com.tinyspeck.slackmacgap |
| Field | Description |
|---|---|
profileDirectory |
Target a specific Chromium profile folder (e.g. Profile 1) |
isIncognito |
Set true to open in a private/incognito window |
Full configuration example
{
"defaultBrowserId": "com-apple-safari",
"browsers": [
{
"id": "com-apple-safari",
"name": "Safari",
"bundleId": "com.apple.Safari",
"isIncognito": false
},
{
"id": "google-chrome",
"name": "Chrome",
"bundleId": "com.google.Chrome",
"isIncognito": false
},
{
"id": "chrome-work",
"name": "Chrome (Work Profile)",
"bundleId": "com.google.Chrome",
"profileDirectory": "Profile 1",
"isIncognito": false
}
],
"rules": [
{
"id": "550e8400-e29b-41d4-a716-446655440000",
"name": "Work Domain",
"type": "domain",
"pattern": "github.com",
"targetBrowserId": "chrome-work"
},
{
"id": "6ba7b810-9dad-11d1-80b4-00c04fd430c8",
"name": "Social Media (Regex)",
"type": "regex",
"pattern": ".*(twitter|facebook|instagram)\\.com",
"targetBrowserId": "com-apple-safari"
},
{
"id": "7da7b810-9dad-11d1-80b4-00c04fd430c9",
"name": "Slack Links",
"type": "sourceApp",
"pattern": "com.tinyspeck.slackmacgap",
"targetBrowserId": "chrome-work"
}
]
}Requires Swift 5.9+ and macOS 14 (Sonoma) or later.
swift build # debug build
swift build -c release # release build
swift Tests/Validate.swift # standalone routing validation (no Xcode needed)
swift test # full test suite (requires Xcode)