BrowserRouter Download

macOS app · free

Every link, in the right browser.

Work links to the work profile. Client links to the client one. Everything else wherever you like. BrowserRouter sits where your default browser used to and sends each link on, by a table you can read.

Free · macOS 14+ · signed and notarized by Apple

0
accounts, servers or analytics. Your rules are a JSON file on your Mac, and nothing about a link leaves it
1
rule to send every GitHub link to your work Chrome profile, instead of whichever window happened to be open
3
ways to drive it without opening the window — a command line tool, an MCP server and an AppleScript dictionary

BrowserRouter never opens a page itself. It reads the link, decides, and hands it to a real browser — which is why it works with whatever you already use.

How it works

You set it as your default browser. It never opens a page.

macOS sends every link to your default browser. BrowserRouter takes that job, looks the link up in your rules, and passes it to the browser that should have had it — before anything has rendered.

Match on the host

The obvious one, and the one most rules are. github.com covers gist.github.com too, because subdomains are almost always what people mean.

Match on anything else

A substring anywhere in the link for the paths that matter — /pull/, /admin — or a full regular expression when a site needs splitting more finely than that.

Match on where it came from

Links from Slack to one browser, the same links from Mail to another. The app the link was clicked in is part of the rule, not a separate mode.

Or stop and ask

Any rule can open a chooser instead of deciding. Answer once with “always open this site this way” and the answer becomes a rule.

Profiles

Not just which browser. Which you.

If you keep a work profile and a personal profile in Chrome, “open it in Chrome” was never the whole answer — the link still landed in whichever window you last touched.

A rule can name the profile as well, and the link opens as the right person. Chrome, Edge, Brave, Vivaldi and other Chromium browsers list their profiles by the names you gave them.

Safari has profiles but no way to choose one when opening a link, and Firefox can only switch profiles when it is not already running. The same goes for browsers built on them — Orion follows Safari here, Zen follows Firefox. Links still route to all of them; BrowserRouter just lists profiles for the browsers where choosing one genuinely works, and none for the ones where it would only work sometimes.

A rule with a profile

github.com Chrome · Work
personal-bank.example Chrome · Personal
figma.com Firefox
Everything else Safari

For the terminal

Three ways in, besides the window.

The rules are a file. The window is one way to edit it, and not the fastest one when the change touches twenty rules at once.

# where would this link go, and which rule decided?
$ browserrouter resolve https://github.com/acme/app/pull/128
Google Chrome — Work
matched: URL contains /pull/  70dbfc33

# add a rule, at the top so it beats the general one below
$ browserrouter add figma.com --browser Firefox --at 1

# bring your Finicky config across
$ browserrouter import-finicky

Coming from Finicky

Bring your config with you.

Point BrowserRouter at your .finicky.js and it reads it — hostname lists, globs, regular expressions and profiles, in the order you wrote them.

The two things it cannot express — a match written as a function, and URL rewrites beyond the two switches above — are reported rather than quietly dropped, so you know what to look at. It exports back the same way, which is the honest version of asking you to switch.

Import

Imported 26 rules from ~/.finicky.js

1 URL rewrite was skipped — BrowserRouter
routes links, it does not change them.

The rest of it

Small, and out of the way.

Menu bar, Dock, or both

It lives in the menu bar by default and never takes focus when it routes a link — which is also how it knows which app the link came from.

Rules you can read

A JSON file in Application Support, editable in the window, in your editor, or from the terminal. Change it anywhere and the app picks it up.

Nothing to sign up for

No account, no server, no analytics. Recently opened links are kept in memory only and go away when you quit.

Hands the job back

Set any browser as the default again from inside Settings. Taking over every link on your Mac should be as easy to undo as it was to do.

The BrowserRouter app icon

Stop dragging links between windows.

It’s free. Set it as your default browser, and the first link you click goes where it should have gone all along.

Download BrowserRouter

macOS 14+ · Apple silicon & Intel · signed and notarized

Does it slow links down?

It decides before a page has started loading — reading a link and handing it on is the whole of the work. What you notice is the browser opening, the same as it would have anyway.

Which browsers can it open?

Any of them. It asks macOS which apps can handle a web link rather than carrying a list of names, so Orion, Zen, Arc or a browser you installed this morning shows up without BrowserRouter having heard of it. Profiles are the one part that depends on the engine: they work for Chromium browsers — Chrome, Edge, Brave, Vivaldi and the rest.

What happens if a rule points at a browser I’ve uninstalled?

The link still opens. It falls through to your fallback browser, and the rules window marks the broken rule so you can fix it when you get to it.

Is it safe to install?

It’s signed with a Developer ID and notarized by Apple, so it opens with a double-click — no right-click-to-open workaround.

Why isn’t it on the Mac App Store?

Its whole job is launching other applications and reading the list of browsers you have installed, and neither works from inside the App Store sandbox. It is a notarized direct download instead.

Can I undo it?

Yes. Settings has a “hand back to” menu that makes any browser the default again, and uninstalling is dragging the app to the Trash.

Built with AI

I built BrowserRouter with heavy use of AI coding tools.

Saying so seems more useful than leaving you to guess.