Finicky: always open the right browser

Open-source macOS app that sits in place of the default browser and sends each link to the browser you choose, with rules in JavaScript. How I use it to keep work links in Edge.

Finicky sets itself as the macOS default browser, then hands every link to the browser your rules pick. A link clicked in Slack, Mail, a terminal or a PDF goes through Finicky, which decides in milliseconds: work links to 1 browser, everything else to another, a specific site to a specific profile.

The Finicky logo: a white pointing hand on a purple-to-blue rounded square, next to the word Finicky in black

The rules live in 1 file, ~/.finicky.js, written in JavaScript or TypeScript. Save the file and Finicky reloads it.

Why I use it

I run 2 browsers. Microsoft Edge holds my work sessions: Microsoft 365, the company sign-in, the sales tools. Google Chrome holds everything else. Before Finicky, every link from Teams, Outlook or a Markdown note opened in whichever browser was the default, and half of them landed in the wrong one, signed out.

Now the work hosts open in Edge and the rest in Chrome, with no prompt and no thinking. I set it up on 28th October 2026 with the work host list taken from 90 days of Edge history.

What it does

Feature What it means
Handlers Rules that pick the browser for a URL: by wildcard, regex, function or a list
Rewrites Change the URL before it opens: force HTTPS, strip tracking parameters, swap a domain
Browser profiles Open a Chromium browser in a named profile: "Google Chrome:Personal"
Modifier keys Hold Shift, Option, Command or Control while clicking to change the target
Opener Match on the app the link came from (name, bundle ID or path)
Background opening Open the tab without bringing the browser to the front
Browser extensions Chrome and Firefox add "Open with Finicky", and Option-click sends a link to it

Rules run in order: rewrites first, then handlers, then defaultBrowser for anything that matched nothing.

My config, simplified

The real list names my employer's tools, so this is the shape, not the content:

// ~/.finicky.js
const EDGE = "Microsoft Edge";
const CHROME = "Google Chrome";

const workHosts = [
  /(^|\.)cloud\.microsoft$/,      // Microsoft 365
  "teams.microsoft.com",
  /(^|\.)microsoftonline\.com$/,  // Microsoft sign-in
  /(^|\.)example-crm\.com$/,      // a work SaaS tool, 1 line each
];

export default {
  defaultBrowser: CHROME,
  options: {
    checkForUpdates: false,       // Homebrew updates it
    logRequests: false,
  },
  handlers: [
    { match: () => finicky.getModifierKeys().shift, browser: EDGE },    // Shift-click: force Edge
    { match: () => finicky.getModifierKeys().option, browser: CHROME }, // Option-click: force Chrome
    { match: finicky.matchHostnames(workHosts), browser: EDGE },
  ],
};

Things I learned setting it up:

  • Put the modifier rules first. Handlers run top to bottom, so Shift and Option win over the host list. That gives a 1-click override for the odd link the list gets wrong.
  • Match hosts, not URLs. finicky.matchHostnames() with a regex per domain (/(^|\.)office\.com$/) catches every subdomain and never matches a look-alike such as office.com.example.net.
  • Safe Links need their own line. Links in Outlook mail are wrapped in *.safelinks.protection.outlook.com, so that host goes in the work list, or every link from work email opens in the wrong browser first.
  • In Ghostty, Cmd-click already holds Command, so the override becomes Shift+Cmd+click.
  • Start Finicky by hand to debug. Opening the app from Applications or Spotlight shows its configuration and troubleshooting window.

Install

brew install --cask finicky

Then create ~/.finicky.js, start Finicky once, and accept it as the default browser in the macOS prompt. Version 4.2.2 is current (October 2025). Version 4 (May 2025) was a rewrite in Go with a new configuration format: configs from Finicky 3 need the migration guide.

Alternatives

App How it decides Price
Finicky Rules in a JavaScript file Free, open source
Velja Rules in a settings window, plus a picker Mac App Store
Choosy Rules or a browser picker Paid
OpenIn Rules and a picker, also for mail and files Paid
Browserosaurus A picker on every click Free, repository archived in 2025

Finicky is the one for a rule set that lives in a text file, sits in a backup or a dotfiles repo, and that an agent can edit. A picker suits someone who wants to choose by hand each time.

Further Reading

NicAI
Written by NicAI, Nic's AI assistant, for his personal knowledge base. Researched and drafted by the model, not hand-written by Nic. Verify anything you plan to act on.