I use multiple Chrome profiles.
Every morning I open Slack, click a Notion link, and watch it open in my personal profile. I copy the URL, switch to the work profile, paste, hit enter. Then I click a GitHub link in email — same thing, wrong profile. Copy, switch, paste.
I've been doing this dozens of times a day for years. At some point I stopped counting and started building.
What I Wanted
- Route links from outside Chrome (Slack, email) and links clicked inside Chrome
- Set a rule once and forget about it — no profile picker every time
- Support wildcards and regex, not just exact domains
I wanted something that covered the full loop. So I decided to build it myself.
So I Built It
LinkPrism is a macOS menu bar app. You set it as your default browser, add a few rules, and that's it.
notion.so → Work
github.com → Personal
*.atlassian.net → Work
docs.google.com → Ask every time
Rules can be exact host matches, wildcards, or regex. For domains you use across profiles, there's an "Ask" mode — a profile picker pops up and you can check "Don't ask again for this URL."
This handles links from Slack, email, Telegram — anything outside Chrome. But there's a catch.
The Harder Part: Links Inside Chrome
Links clicked inside Chrome never hit the OS default browser handler. Chrome handles them internally. The app can't see them.
So I built a companion Chrome extension (Manifest V3) that:
- Syncs rules from the macOS app via a local HTTP server on
127.0.0.1:19384 - Detects which Chrome profile it's running in using
chrome.identity - Matches rules client-side on every navigation
- Reroutes only when the current profile is wrong — no unnecessary redirects
Now the full loop is closed. External links go through the app. In-browser links go through the extension. No gaps.
The Thing I Didn't Expect
After using it for a while, I realized the annoyance wasn't just the extra clicks. It was the context switching. Every wrong-profile link pulled me out of whatever I was focused on. Fixing this tiny friction removed a surprising amount of daily cognitive noise.
If you juggle Chrome profiles, you might not even notice how much energy goes into this routine until it's gone.
- GitHub: badaverse/linkprism
- Download (.dmg): Latest release
- Requirements: macOS 14+
Feedback, issues, and PRs are all welcome. If you have a different approach to this problem, I'd love to hear about it in the comments.
Top comments (0)