Everything FlexiLink does

Here is every feature, what it does, and why you might care. Tags mark what matters most: Essential for the core, Time-saver for conveniences, Power user for advanced options.

The picker Essential

When you click a link and no rule matches, FlexiLink shows a small window with the link on top and a big icon for every browser and profile below. Click one – or press Alt and its number – and the link opens there. The window closes by itself.

  • A readable link. The site name is bold and the parts of the address are colored, so you can see where a link really goes before opening it. Long addresses wrap; press F2 to switch to a single scrolling line.
  • Remember this choice. Tick Always open github.com in the selected browser or profile and your pick becomes a rule for that site. Next time the link just opens.
  • Create Rule. One click opens the rule editor already filled in with this link, when you want something more specific than “this site”.
  • Copy the link. Ctrl+C copies the full address without opening anything.
  • Always on top, never in the way. The picker appears over your other windows and Esc closes it.

Why it matters: you stay in control. Even without a single rule, choosing the browser takes one click instead of copying the link, opening the right browser, and pasting.

FlexiLink picker window showing a GitHub link with the host in bold and a row of browser and profile icons
The picker for a link without a rule.

Rules Essential

Rules open links automatically, with no picker at all. Each rule has a match and a target: links like this open in that browser or profile.

Match typeExampleUse it for
Exact hostgithub.comOne website
Exact host + Include subdomainscontoso-bank.comA site and everything under it, like online.contoso-bank.com
URL wildcardhttps://docs.google.com/*Part of a site; * means “anything”
URL regex^https?://localhost(:\d+)?/Anything else – full regular expressions in Rust regex syntax; try them on regex101
  • First match wins. Rules are checked from top to bottom, so order is easy to reason about. Drag a rule by its handle to move it.
  • Turn rules on and off with a switch, without deleting them.
  • Private mode per rule – that site always opens in a private window.
  • Names. Give a rule a name, or let its pattern be its label.
  • Mistakes are caught. An invalid host or regex is flagged right away and never breaks link opening.
  • By app, too. Limit a rule to links clicked in one app – Thunderbird, Teams, Slack. See below.
  • Nothing gets lost. If a rule’s browser or profile disappears, the rule is kept and simply skipped; you can reassign all such rules to another browser in one step: on the Rules page, click ⋯ next to Add rule and choose Assign … unassigned rules to.

Why it matters: rules are what make FlexiLink invisible. Most people need three to five rules to never think about browsers again. See ready-made examples in the rules guide.

A FlexiLink rule being edited: match type Exact host with Include subdomains for contoso-bank.com, open with Google Chrome with Private mode on
Editing a rule.

Links from one app

A rule can also look at where you clicked the link. Fill in Source process – thunderbird.exe, or just thunderbird – and the rule applies only to links from that app. With the pattern * it takes every link from that app, whatever the site.

  • One click to set up. Click a link in, say, Windows Terminal and choose Create Rule in the picker: the rule editor already knows where the link came from. Click Use WindowsTerminal.exe under Source process.
  • Mix with sites. SharePoint links from Teams in your work profile, from everywhere else in your personal one: put the rule with the app above the one without – the first match wins.
  • Test it. The Test rules panel (⋯ › Test rules… on the Rules page) has a Source process box too.
  • When the app can’t be told – some apps hand links to Windows in a way that hides where they came from – rules limited to an app are skipped, and the others still apply.
The Source process field in the FlexiLink rule editor, empty (Any), with the hint “The app the link is clicked in” and a Use WindowsTerminal.exe link
After Create Rule in the picker: one click fills in the app.
Source processPatternOpens in
thunderbird.exe*Microsoft Edge – Work
ms-teams.execontoso.sharepoint.com + subdomainsMicrosoft Edge – Work
Anycontoso.sharepoint.com + subdomainsMicrosoft Edge – Personal
slack.exe*Firefox

Test rules

Not sure why a link opened where it did? On the Rules page, click ⋯ next to Add rule and choose Test rules…, paste the link, and FlexiLink lists the rules that match it in order – the winner first. If you typed example.com/path without https://, it assumes https for you.

The Test rules panel with a Jira link typed in and the rule that matches it

Link unwrapping Time-saver

Some email security filters and apps wrap the links they show you, so the real address hides inside theirs: Microsoft’s Safe Links in Outlook and Teams, Facebook’s link shim, Google’s and Slack’s redirects.

nam12.safelinks.protection.outlook.com/
    ?url=https%3A%2F%2Fcontoso.atlassian.net%2F…
→ contoso.atlassian.net/…

Turn on Unwrap links on the Settings page (the gear at the bottom left), and FlexiLink finds the real address before it matches your rules – so a rule for contoso.atlassian.net works for such wrapped links too.

  • Ready-made rules for Microsoft Safe Links (Outlook and Teams), Google redirects, Slack, Facebook and WordPress.com emails.
  • Your own rules. A regular expression whose (?<url>…) group is the real address; a percent-encoded one is decoded. Try any link right on the Unwrapping page.
  • Safe by default. The original link still opens, so Safe Links can check the site – or choose Open the unwrapped link. The picker shows the address that opens; hover it to see the other one.
  • Nothing is fetched. Unwrapping happens on your PC; links are never sent anywhere to see where they lead.

Why it matters: in many companies every link in email is wrapped, and chat and social apps wrap theirs too. Without unwrapping, rules would see only the wrapper’s address – never the site you’re actually going to.

The Link unwrapping page in FlexiLink Settings: a Safe Links address tried in the box at the top and unwrapped to the real site, above the list of unwrap rules

Browsers and profiles Essential

FlexiLink finds the browsers installed on your PC by itself – the same way Windows does – and lists every profile of the browsers that have them. You decide which ones appear in the picker.

  • Profile support for Google Chrome, Microsoft Edge, Brave, Vivaldi and Mozilla Firefox. Each profile gets its own entry, with its own picture where the browser provides one.
  • Any other browser registered in Windows – Opera, Chromium builds and others – appears too, as a single entry.
  • Hide what you don’t use. Switch off a browser or a single profile and it disappears from the picker and menus.
  • Always up to date. Install a new browser or create a new profile and it shows up the next time you open Settings.

Why it matters: the profile is what decides which account you are signed in with. Picking “Chrome” is not enough when you have three Chromes.

The Browsers page with auto-discovered browsers, Microsoft Edge expanded to show its Personal and Work profiles, each with an on/off switch

Private windows Time-saver

Open any link in a private window of the browser you choose – InPrivate in Edge, Incognito in Chrome, Brave and Vivaldi, Private Browsing in Firefox, private mode in Opera.

  • In the picker or Quick Access: hold Ctrl while you click.
  • In a rule: tick Private mode, and that site always opens privately.
  • With a profile: the private window uses that profile’s settings and extensions.

Why it matters: some sites – banking, gifts you’re shopping for, a colleague’s shared link – shouldn’t end up in your history or cookies. Now they don’t, without remembering to right-click.

The Rules page: five rules, each with its pattern, the browser or profile it opens and an on/off switch

Custom browsers Power user

Add anything that can open a web address: a portable browser, a browser started with special options, a Firefox profile in its own folder, a separate Chrome with a proxy, or even a non-browser app.

  • Drag and drop a program (.exe) or a shortcut (.lnk) onto the Browsers page. FlexiLink reads the shortcut’s command line for you.
  • Clone from an existing browser or profile to start from its command line and tweak the arguments: on the Browsers page, click ⋯ next to Add browser and choose Clone from. The copy is listed right after the original.
  • Put the link where you want it with {url} in the arguments; without it, the link is added at the end.
  • Private on purpose. A custom browser starts exactly as its command says, so Ctrl+click doesn’t change it and rules don’t offer Private mode for it – add the browser’s own switch, like --incognito, to make a private one.
  • Recognizable at a glance. A custom entry shows its program’s icon with a small badge, so you can tell it from the auto-discovered one. You can point it to any other .ico, program or DLL icon in the settings file.
  • Safe to delete. When you remove a custom browser that rules use, FlexiLink asks whether to delete those rules too or keep them for reassigning.

Why it matters: real setups are messy. If you can start it from a command line, FlexiLink can send links to it.

Editing a custom browser in FlexiLink: name, command line and arguments containing {url}

Tray icon and Quick Access Time-saver

FlexiLink lives in the notification area next to the clock, and starts with Windows.

  • Left-click opens Quick Access: a panel right above the icon with every browser and profile. Click one to open a new window in it. Ctrl opens a private window, Shift keeps the panel open, Esc or clicking elsewhere closes it.
  • Right-click shows a compact menu with the same browsers, plus Settings and Exit.
  • Notifications come from the tray icon – for example when a new version is available.
  • Don’t want it? Switch the tray icon off on the Settings page (the gear at the bottom left). Link routing keeps working either way.

Why it matters: it replaces a desktop full of “Chrome – Work”, “Chrome – Personal”, “Edge – Client” shortcuts with one icon.

Quick Access panel above the FlexiLink tray icon, with browser and profile icons in a grid
Quick Access, one click from the taskbar.

Default browser integration Essential

For FlexiLink to see your links, Windows has to send them to it – that is, FlexiLink has to be your default browser. Your real browsers keep working exactly as before.

  • Make default opens the right page of Windows Settings, pre-filtered to FlexiLink. You confirm with one click – Windows requires that, and FlexiLink respects it.
  • Status at a glance. Settings shows whether FlexiLink is currently the default.
  • Check on Startup. If another app takes over the default browser, FlexiLink tells you with a notification when you sign in. Click it to fix it.
  • Which links. FlexiLink routes standard HTTP and HTTPS links that Windows sends to your default browser. It doesn’t see mailto: or other app-specific links (like a Zoom or Teams meeting link that opens its app), links opened inside apps with their own built-in browser, apps that open a particular browser directly, or links you click inside a browser.
  • Clean uninstall. Removing FlexiLink removes its registration and its start-with-Windows entry, and opens Windows Settings on the browser you used before, so you can switch back with one click.

Why it matters: browser updates love to say “make me your default”. FlexiLink notices, so your rules don’t silently stop working.

FlexiLink Settings page with the Show tray icon switch and the Default Browser card saying FlexiLink is your default browser

Keyboard shortcuts Time-saver

Everything works with the mouse, but these make FlexiLink faster:

WhereKeysWhat happens
Picker, Quick AccessAlt+1 … Alt+9Open the link in the first … ninth browser
Picker, Quick AccessCtrl + clickOpen in a private window
Picker, Quick AccessShift + clickOpen, but keep the window open to pick another browser too
Picker, Quick AccessEscClose without opening anything
PickerCtrl + CCopy the link
PickerF2Wrap a long link, or show it on one line
PickerAlt+A, Alt+C, Alt+S“Always open”, Create Rule, Settings
Any appHold Shift while clicking a linkShow the picker even if a rule matches – handy for a one-off exception
Shift + click a link: Windows may show the picker as a flashing FlexiLink button on the taskbar instead of on top of your windows – click it. Windows doesn’t let new windows jump in front of you while you’re using the keyboard, and FlexiLink respects that instead of working around it.

Updates Time-saver

FlexiLink checks for a new version once a day and shows a Windows notification the first time it finds one. Click it to download. You can also check any time on the Settings page (the gear at the bottom left), or turn automatic checks off – and while a newer version is out, the About page shows a link to it next to the version number.

Updating is simply running the new installer: your settings and rules are kept.

Why it matters: you get fixes and new browser support without having to remember to look – and without an updater nagging you every hour.

Privacy and footprint

A small tool that does one job and leaves the rest of your PC alone.

Your links stay yours

FlexiLink never sends the links you open anywhere. Rules and settings live in a plain text file on your PC. No account, no analytics, no ads.

Online only for updates and your license

FlexiLink goes online only for a daily update check, which you can turn off, and to activate and verify your license. It never sends the links you open. Details in the privacy policy.

Native and lightweight

Built with Rust and WinUI 3. No bundled web engine, instant start, a few megabytes on disk.

No administrator rights

Installs only for your Windows user account, under your AppData folder. No administrator rights needed – where your organisation permits per-user apps and changing the default browser.

For power users and IT Power user

The settings file

Everything you set up is stored in %LOCALAPPDATA%\FlexiLink\config.yaml, a plain, human-readable file. Back it up, copy it to another PC, or edit it by hand while Settings is closed. If the file has a mistake, FlexiLink starts with default settings instead of failing, keeps a copy of your file as config-broken.yaml the next time it saves, and --log tells you what was wrong.

Here is a file that uses every setting:

show_tray_icon: true
check_default_browser_on_startup: true
check_for_updates: true
license_code: "XXXXX-XXXXX-XXXXX-XXXXX"

browsers:
  # Found by FlexiLink and refreshed on every save:
  # only "enabled" and the order are yours to change.
  - source: autodiscovered
    id: Google Chrome
    name: Google Chrome
    profiles:
      - id: Default
        name: Personal
      - id: Profile 1
        name: Work
        enabled: false

  - source: autodiscovered
    id: Firefox-308046B0AF4A39CB
    name: Firefox

  # Your own browsers.
  - id: firefox-dev
    name: Firefox Dev Profile
    command:
      exe: "C:\\Program Files\\Mozilla Firefox\\firefox.exe"
      args: ["-profile", "C:\\Dev\\Testing", "--new-window", "{url}"]
    # Listed right after Firefox, not first.
    after: Firefox-308046B0AF4A39CB

  - id: portable
    name: Portable browser
    enabled: false
    command: '"D:\Apps\Browser\browser.exe" --incognito'
    icon: "D:\\Apps\\Browser\\browser.exe,1"

rules:
  - id: jira
    name: Jira
    match:
      kind: domain
      value: contoso.atlassian.net
    target:
      browser: Google Chrome
      profile: Profile 1

  - id: bank
    match:
      kind: host
      value: contoso-bank.com
    target:
      browser: Google Chrome
    private: true

  - id: local-dev
    name: Local dev
    match:
      kind: regex
      value: '^https?://localhost(:\d+)?/'
    target:
      browser: firefox-dev

  # Every link from Thunderbird, whatever the site.
  - id: mail
    match:
      kind: wildcard
      value: "*"
      process: thunderbird.exe
    target:
      browser: Google Chrome
      profile: Profile 1

unwrap_links: true
open_unwrapped_links: false
unwrap_rules:
  - name: Microsoft Safe Links
    pattern: '^https?://[^/]+\.safelinks\.protection\.outlook\.com/.*[?&]url=(?<url>[^&]+)'

In double quotes, write every backslash twice ("C:\\Icons\\work.ico") – that’s how FlexiLink itself saves paths. In single quotes, write it once ('C:\Icons\work.ico').

SettingWhat it does
show_tray_iconThe tray icon with Quick Access, started with Windows. Default true.
check_default_browser_on_startupTell you at sign-in when FlexiLink is no longer the default browser. Default false.
check_for_updatesThe daily update check. Default true.
license_codeYour license key, as entered on the About page (the ? at the bottom left of Settings).
browsers, source: autodiscoveredBrowsers and profiles FlexiLink found. Refreshed every time the file is saved – set enabled: false on a browser or one of its profiles to hide it. Their order in the file is their order in the picker, Quick Access and the tray menu; move an entry to move the browser. The other fields are just for reading.
browsers: id, nameA browser of your own. The id is how rules refer to it and must be unique; the name shows in tooltips and menus.
enabledfalse hides a browser or profile, or switches a rule off, without deleting it. Default true.
command: exe, argsThe program and its arguments. {url} in an argument is replaced with the link; without it, the link is added at the end. Or give the whole command line as one string: command: '"D:\Apps\app.exe" --flag'.
iconThe picture shown for the browser: an .ico file, or a program or DLL. app.exe,1 takes the second icon inside it (,0 is the first); a negative number is a resource id, as in Windows shortcuts. Without it – or if it can’t be loaded – the program’s own icon is used, with a small badge.
afterOptional, for a browser of your own: the id of another browser – auto-discovered or your own – to list it right after (after all its profiles) in the picker, Quick Access and the tray menu. Clone from sets it to the browser you cloned. Without it, or if that browser is off or gone, your own browsers come first.
rules: id, nameA rule. The id must be unique; the optional name is its title in Settings.
match: processOnly links clicked in this app, like thunderbird.exe – case and the .exe don’t matter. Leave it out for any app. With kind: wildcard and value: "*", every link from the app.
match: kind, valuehost (exact host), domain (host and its subdomains), wildcard or regex (the whole URL) – see the rules guide.
target: browser, profileWhere matching links open: your own browser’s id, or a found browser’s id plus, optionally, one of its profile ids.
unwrap_linksFind the real address inside wrapped links before rules are matched. Default false.
open_unwrapped_linksOpen the unwrapped address instead of the original link. Default false, so Safe Links still checks the site.
unwrap_rules: name, enabled, patternTried in order, first match wins, again on the result. pattern is a regex over the whole link with a (?<url>…) group. Without the key, the built-in rules are used.
privatetrue opens matching links in a private window. For your own browsers FlexiLink doesn’t know the private-mode switch – put it in the arguments instead (--incognito, -private-window…).

Command line

CommandWhat it does
flexilink.exeOpens Settings (and the tray icon, if enabled)
flexilink.exe https://example.comRoutes that link as if you had clicked it
flexilink.exe registerRegisters FlexiLink as a browser in Windows without changing your default
flexilink.exe register uiRegisters and opens Windows “Default apps” to confirm FlexiLink as default, then starts the tray icon
flexilink.exe unregisterRemoves FlexiLink’s browser registration and its start-with-Windows entry; if FlexiLink is the default, first opens Windows “Default apps” for the browser used before
flexilink.exe checkExit code 1 if FlexiLink is the default browser, 0 if not
flexilink.exe quitCloses the running tray instance
--log, --log=pathAdd to any command to write a diagnostic log to %LOCALAPPDATA%\FlexiLink\flexilink.log, or to the file you give: --log="C:\Temp\flexilink.log"

Silent install

FlexiLink-Setup-26.10.0.exe /quiet installs without any windows – useful for scripted setups. The installer is per-user and needs no elevation.

See it on your own links

Free for 30 days, every feature included. If you like it, a license is $19 per PC (excl. VAT) – once, not every month.

Windows 10 (1809+) and Windows 11, 64-bit · Version 26.10