Link Router
Route each link to the right browser and profile, by rule.
Introducing Link Router: A rule-based tool that opens your links wherever you want them to open!
The Problem: Context switching with multiple browsers is broken
When managing multiple projects for different clients, and trying to separate your personal life from your work, you will most likely end up with multiple browser profiles or even browsers. I have a separate Google Chrome profile for every project I work on, plus Mozilla Firefox instance for privacy testing.
In theory, this keeps cookies, extensions, and browsing history nicely isolated. In practice, the operating system ruins the party.
When you click a link in Slack, Teams, Discord, or an email client, the OS hands that link to whichever browser window was active last. The result is a daily stream of small annoyances:
- The login loop: a private Jira link opens in your personal profile. You get a 404 or a login screen, forcing you to copy the URL, switch windows, and paste it manually.
- Accidental browsing history pollution: a work link gets stored in your personal browser history (or vice versa).
- Mixed Environments: a staging link opened on production, etc.
Browsers know how to manage profiles internally, but operating systems do not know which browser should open which link. That’s why I (and Claude!) built Link Router.
What Is Link Router?
Link Router (link-router) is a fast, lightweight cross-platform binary written in Go. You set it as your default system browser. When any desktop application requests to open a URL, Link Router evaluates it against set of rules defined by You, and uses the target browser/profile to open it.
┌──► jira.company.com ──► Work Profile (Chrome)
[ Link Clicked ] ──┼──► staging.app1.io ──► Client A (Firefox)
(Slack/Email) └──► youtube.com ──► Personal (Brave)
How It Works Under the Hood
Link Router sits silently between your OS and your installed browsers. It matches incoming URLs using two primary strategies:
- Host Globs (
match_host): fast glob pattern matching for domain names (e.g.,*.userlane.comorjira.*). - Full-URL Regex (
match_url): regex pattern matching on paths, query parameters, or specific protocols using Go RE2 syntax.
Additionally, it auto-detects installed browsers via system paths (Linux) and registry entries (Windows), allowing you to pass native flag templates like --profile-directory=Work or -P personal.
Who Is This For?
- Software Engineers & Consultants: Developers using multiple cloud developer portals, local dev servers, client environments, etc.
- Power Users & Freelancers: Anyone managing multiple Google, Microsoft, or AWS accounts across different client domains.
- Privacy Enthusiasts: Users who want specific domain classes (like tracking-heavy links) automatically forced into hardened browsers like LibreWolf or Tor.
What’s Next?
- July 2026: Initial engine release, TOML rule schema, and CLI dry-run capabilities.
- Why no rules editor/UI? I wanted to make it exist first ;)
- Unspecified future:
- A lightweight system tray application
- GUI/visual rule editor
- telemetry, tracking, ads and Link Router Plus plan (just joking!)