How to use multiple browsers effectively on MacOS with Finicky

https://github.com/johnste/finicky
https://www.johanbleuzen.fr/blog/open-right-browser-url-with-finicky
https://dev.to/oliverburn/using-finicky-to-handle-urls-8bo

I use several web browsers on my Mac.

Safari is my primary, trusted browser. It’s generally faster and lighter on memory than Chrome or other Chromium-based browsers on macOS and iOS. I avoid installing extensions in Safari—its extension ecosystem is limited anyway—and because it’s tied to my system keychain, where most of my passwords live. One downside: Safari’s bookmarks aren’t openly accessible, so they can’t be synced to other browsers without third‑party tools. Annoyingly, Apple provides iCloud bookmark sync for Windows but not for Mac; I used to keep a PC around just to bridge that sync. I’m not claiming Safari is the best browser, but I do trust it with most of my data—especially on iPhone—when I want to minimize what a malicious link could do to the broader system.

Brave is my go-to for general browsing. I don’t want to give all my data to Google, and Brave’s built‑in ad blocking is solid. Its peer‑to‑peer sync works well across my devices, and I can still earn a bit of BAT from their own ads. Plus, it supports all the Chromium extensions I use for Web3/DeFi.

I also keep a few task-specific browsers:

  • Chrome: for Telegram mini apps (no sync or saved passwords; it’s a sandbox)
  • Edge: for Microsoft Designer and Copilot
  • Comet: for Perplexity agent; handy for working with Google Docs
  • Firefox: for downloading YouTube videos

It sounds messy, but it works for me.

I’d been looking to automate this setup and finally settled on Finicky. I try to use open-source, free apps—not just to save money, but for privacy and security. Popular open-source tools benefit from community scrutiny. I first tried Velja when it was free, but it’s now a paid app (USD 8), and I’m wary it could turn into a subscription. Finicky has all the features I need and is fully open source. The UI isn’t as simple as Velja’s, but I rarely need to change the rules. I’ve set it up so all my Macs read from the same .finicky.js config.

Here’s the gist of my config:

  • Links opened from Apple Mail go to Safari. I keep Safari extension‑free to reduce the risk of buggy extensions being exploited by links.
  • Links opened from the Telegram app go to Chrome. I don’t sign into Chrome and don’t store passwords there; it’s just for mini apps.
export default {
  defaultBrowser: "Brave Browser",      
  handlers: [
    {
      match: (_url, { opener }) =>
        opener.bundleId === "ru.keepcoder.Telegram",
      browser: {
        name: "Google Chrome"
      }
    },
    {
      match: (_url, { opener }) =>
        opener.bundleId === "com.apple.mail",
      browser: "Safari"
    },
    {
      match: /^https:\/\/boinkers\.io\/.*$/,
      browser: "Google Chrome"
    },
    {
      match: /^https:\/\/medium\.com\/.*$/,
      browser: "Safari"
    }
  ]
}