finicky is a free, open source browsers & extensions project written in Go and released under MIT. It has 5,102 GitHub stars, 212 forks and 53 open issues, and was last pushed 36 hours ago. On this registry it ranks #61 of 101 tracked projects in Browsers & Extensions, with 5 head-to-head comparisons available.

What is finicky?

Finicky is an MIT-licensed macOS application that registers as your default browser and applies rules written in JavaScript or TypeScript to decide which browser or app opens each URL, built for people who routinely juggle more than one browser.

What it is

Finicky is a macOS application that takes over the system's default browser role and then routes every incoming URL to whichever browser or URL-handling application the user's rules select. It is written in Go and distributed as a macOS app, with its configuration supplied as a JavaScript or TypeScript file at ~/.finicky.js. The project is developed on GitHub under the MIT licence and has around 5,102 stars and 212 forks, with 53 open issues.

The concrete problem it solves is the single-default-browser limitation on macOS. The operating system lets you set one default browser, so every link from Mail, a chat client, or any other application lands in the same place. Finicky replaces that single setting with rule-based routing: match patterns can send bsky.app URLs to Firefox and google.com URLs to Google Chrome. It also rewrites URLs before they are opened, forcing HTTPS or removing tracking parameters, so the address changes as part of the same rule that chose the browser.

Key capabilities

  • A defaultBrowser setting plus a handlers array, where each handler pairs a match pattern with a browser such as "Firefox" or "Google Chrome".
  • Match patterns that accept a single string ("bsky.app/*") or an array covering several patterns and subdomains ("*.google.com*").
  • A rewrite array whose url function mutates the address before launch; the README example rewrites x.com/* to xcancel.com.
  • Rules written in JavaScript or TypeScript for complete control, with regular expressions and custom functions for complex routing logic.
  • One configuration file at ~/.finicky.js, with an example-config folder in the repository.
  • Browser extensions for Chrome and Firefox that add an "open with Finicky" action to links and make alt-clicking a link open it in Finicky directly.
  • Documented migration from Finicky 3 through a dedicated wiki page.

Who uses it and how

  • People separating work and personal browsing across different browsers without resetting macOS preferences each time.
  • Workflows that send social URLs such as Bluesky or Reddit to one browser and LinkedIn or Google Meet to another.
  • Privacy-minded users who rewrite tracking-heavy links before they load, as in the x.com to xcancel.com example.
  • Users wanting link-level control inside the browser, through the Chrome and Firefox extensions and their alt-click behaviour.
  • Anyone troubleshooting routing; starting Finicky manually opens the configuration and troubleshooting window instead of only registering as the default browser.

Getting started

Install with brew install --cask finicky, or download from the releases page. Then create a JavaScript or TypeScript configuration at ~/.finicky.js, start Finicky from Applications, Spotlight, Alfred, or Raycast, and allow it to be set as the default browser.

How it compares

The facts name one comparable tool: Browserosaurus, an open source macOS browser prompter by Will Stone, which asks the user to pick a browser through a graphical interface rather than deciding from rules. The README says the two work well together, which places Finicky as the automated, configuration-driven counterpart to a manual picker.

When to use it — and when not to

Finicky is macOS-only and only useful if you are willing to make it the default browser and maintain a JavaScript or TypeScript configuration file. Anyone who wants zero configuration, or who works mainly on Windows or Linux, should not choose it. The README is short and the full configuration documentation lives in the project wiki, so expect to follow external links for the details.

project readme (upstream, from github) — read inline
Finicky Logo



Always open the right browser

Finicky is a macOS application that allows you to set up rules that decide which browser is opened for every url. With Finicky as your default browser, you can tell it to open Bluesky or Reddit in one browser, and LinkedIn or Google Meet in another.

  • Route any URL to your preferred browser with powerful matching rules
  • Automatically edit URLs before opening them (e.g., force HTTPS, remove tracking parameters)
  • Write rules in JavaScript or TypeScript for complete control
  • Create complex routing logic with regular expressions and custom functions
  • Handle multiple browsers and apps with a single configuration
  • Keep your workflow organized by separating work and personal browsing

GitHub prerelease MIT License Finicky v4 release

Table of Contents

Installation

  • Download from releases
  • Or install via homebrew: brew install --cask finicky
  • Create a JavaScript or TypeScript configuration file at ~/.finicky.js. Have a look at the example configuration below, or in the example-config folder.
  • Start Finicky (in Applications, or through Spotlight/Alfred/Raycast) and allow it to be set as the default browser. Starting Finicky manually opens the configuration/troubleshooting window.

Basic configuration

Here's a short example configuration that can help you get started

// ~/.finicky.js
export default {
  defaultBrowser: "Google Chrome",
  rewrite: [
    {
      // Redirect all x.com urls to use xcancel.com
      match: "x.com/*",
      url: (url) => {
        url.host = "xcancel.com";
        return url;
      },
    },
  ],
  handlers: [
    {
      // Open all bsky.app urls in Firefox
      match: "bsky.app/*",
      browser: "Firefox",
    },
    {
      // Open google.com and *.google.com urls in Google Chrome
      match: [
        "google.com/*", // match google.com urls
        "*.google.com*", // also match google.com subdomains
      ],
      browser: "Google Chrome",
    },
  ],
};

See the configuration for all the features Finicky supports.

Configuration

Finicky has extensive support for matching, rewriting and starting browsers or other application that handle urls. See the wiki for the full configuration documentation explaining available, APIs and options as well as detail information on how to match on urls.

Migrating from Finicky 3

Please see the wiki page for updating info and migrating your configuration

Other

Browser extensions

Finicky has browser extensions for Chrome and Firefox. They add an "open with Finicky" on links, and alt-clicking links opens them in Finicky directly.

Building Finicky from source

See Building Finicky from source

Works well with

If you are looking for something that lets you pick the browser to activate in a graphical interface, check out Browserosaurus by Will Stone, an open source browser prompter for macOS. It works really well together with Finicky!

Questions

Have any other questions or need help? Please feel free to reach out to me on Bluesky or post an issue here

License

MIT

Icon designed by @uetchy

Frequently asked questions

Is finicky free to use?

finicky is open source under the MIT licence. There is no licence fee and no seat count — you can self-host it or, where the project offers one, pay a vendor for a managed version instead.

What does finicky do?

A macOS app for customizing which browser to start

What is finicky written in?

finicky is primarily written in Go. Its source is publicly available at https://github.com/johnste/finicky, and it has 5,102 GitHub stars.