.md

Open every link in the right Chrome profile on your Mac

Junction is a free, open-source macOS app that becomes your default browser and routes each link by your rules. One rule can send Jira, Google Docs, or any other site to a specific Chrome profile, so work links stop landing in your personal browser window. (Just want a different browser per site? See a default browser per website.)

Write a rule that matches the link and opens it in Chrome with a profile. Junction launches Chrome with that profile no matter where you clicked.

  • Match the sites with wildcard patterns: *.atlassian.net/* covers every Jira subdomain and the apex domain.
  • Open with { "app": "com.google.Chrome", "profile": "Profile 1" }. The profile is Chrome’s profile directory, not its display name.
  • Order matters: rules run top to bottom and the first match wins, so put specific rules above broad ones.
rule
{
  "name": "Work tools → work profile",
  "match": { "patterns": ["*.atlassian.net/*", "app.clickup.com/*", "docs.google.com/*"] },
  "action": { "app": "com.google.Chrome", "profile": "Profile 1" }
}

Check it without opening anything:

junction test
$ junction test "https://acme.atlassian.net/browse/ENG-42"
input:       https://acme.atlassian.net/browse/ENG-42
rule:        [1] Work tools → work profile
action:      open in com.google.Chrome profile "Profile 1"
url:         https://acme.atlassian.net/browse/ENG-42

How do I find a Chrome profile’s directory name?

Settings → Browsers in Junction lists every Chrome profile with its directory name. Listing them needs Full Disk Access, which Junction uses only to read Chrome’s list of profiles.

Profile Directory
The first one Chrome created Default
Each one added after it Profile 1, Profile 2, …

Without Full Disk Access, a Chrome profile rule still works if you type the directory into the config file yourself. Chrome also shows it: open chrome://version in that profile and read the last part of Profile Path.

Can a second Google account open in its own profile?

Yes — match the authuser query parameter with a regex. Wildcard patterns ignore the query string, so a regex is the way to tell ?authuser=1 links apart.

rule
{
  "name": "Google account #2 → Profile 2",
  "match": { "regex": "[?&]authuser=1(&|$)" },
  "action": { "app": "com.google.Chrome", "profile": "Profile 2" }
}

Put this rule above any broad Google rule, or the broad one wins first.

Does this work with Edge and Brave profiles?

Yes. Edge and Brave are built on Chromium, and Junction opens their profiles the same way: name the browser by its bundle ID and the profile by its directory.

Browser Bundle ID
Google Chrome com.google.Chrome
Microsoft Edge com.microsoft.edgemac
Brave com.brave.Browser

A common setup sends Microsoft 365 to an Edge profile signed in to the company account — see Microsoft 365 links.

Firefox profiles work too, with a different kind of name — see Firefox profiles.

Yes. A rule can match the app you clicked in instead of the link itself — see routing links by the app you click them in.

Yes — a catch-all rule you switch on from the menu bar before a demo. See menu-bar rule toggles.

Get Junction

Junction is free and MIT-licensed, for macOS 13 or later on Apple silicon and Intel. Install it with Homebrew or the DMG, then follow the first-launch steps.