TrafficControl
Link router for macOS

Every link, cleared for the right browser.

TrafficControl sits between your apps and your browsers. Each link you click goes to the right browser, Chrome profile or desktop app, by rule or by your pick.

Download for Mac Free · macOS 14+
Apple Silicon & Intel
Approach · 5 linksUTC
  • LNRlinear.app/acme/issue/ENG-142→ LinearAPP
  • DOCdocs.google.com/document/d/1x…→ open tabTAB
  • GHBgithub.com/acme/api/pull/88→ Chrome · WorkRULE
  • HNWnews.ycombinator.com/item?id=4…→ your pickASK
How a link is routed

Five checks, in this order

Each click goes down this list and stops at the first step that knows where the link belongs.

  1. Desktop app

    Linear, Notion, Zoom and Spotify links open in their app when it's running.

  2. Open tab

    If the page is already open in Safari or a Chrome-based browser, that tab comes to the front.

  3. Your rules

    Matched on domain, URL, path or the app you clicked in. The first match wins.

  4. Default

    Your primary browser, the only one running, or the one you used last. You decide.

  5. Picker

    Anything left appears at your cursor. Your usual choice for the domain is already selected.

Hold ⇧ while clicking to go straight to the picker. Prefer ⌥ or ⌘? Pick the key in Settings, and use held keys in rules too.

What it handles

Built for people with too many browsers

Picker

Choose at the cursor

1–9 or a browser's first letter opens it. ⇧ opens in the background, ⌘C copies the link.

Profiles

Work and personal, kept apart

Every Chrome profile is its own choice, with its account picture. Also Brave, Edge, Vivaldi and Chromium.

Rules

Set it once

Send github.com/acme to your work profile and the rest of GitHub to your personal one, or everything from Slack to work. Wildcards and regex too.

Desktop apps

Linear opens in Linear

Issues, docs and meetings land in the app you already have open instead of another browser tab.

Open tabs

No duplicate tabs

A link you already have open brings that tab forward. Tracking parameters and #anchors don't count as a different page.

Recent domains

Rules from your habits

TrafficControl lists the domains you open and where they went. One click turns a domain into a rule.

Install

Up and running in a minute

With Homebrew
brew install --cask hakubo/tap/trafficcontrol
  1. Download TrafficControl.dmg, open it and drag TrafficControl into Applications.
  2. Open TrafficControl. It lives in the menu bar, not the Dock.
  3. In Settings, click Make Default and confirm the macOS prompt. Click a link anywhere to try it.

After that it keeps itself up to date: TrafficControl checks for new versions daily and installs them for you.

macOS says it can't verify the app?

Releases aren't notarized by Apple yet. After the first attempt to open it, go to System Settings → Privacy & Security and click Open Anyway. Or run this in Terminal:

xattr -dr com.apple.quarantine /Applications/TrafficControl.app

TrafficControl is free. If it saves you some tab juggling, you can buy me a coffee.

Privacy

Stays on your Mac

TrafficControl makes no network requests of its own. Settings and the list of domains you've opened are plain JSON files in ~/Library/Application Support/TrafficControl. History lives in history.json there and never leaves your Mac: each domain with how often you opened it and where its links went, and a link's first path segment (like a GitHub username) only when you picked a different browser for it than that domain usually gets. Switch off Remember in Settings → History, or clear the list, any time. It reads your browsers' open tabs only to switch to one, and only after macOS asks for your permission.

This page is self-contained: fonts are served from the same place as the page, and the only outside request it makes is to GitHub, to show the latest version number next to the download button.