Open In

“Open In” adds a toolbar button to your browser which allows you to open the current page in another browser of choice. A context menu item is also appended when right-clicking over links. This item allows you to open links in other browsers.


  • Open current page in another browser
  • Open selected link in another browser
  • Supports Firefox, Opera, Chrome, Yandex, Safari, Internet Explorer, and Microsoft edge as the destination browser


1: What is “Open In” extension and how does it work?

“Open In” aims to provide a simple solution to open links in another browser as simple as clicking a toolbar button. These set of extensions allow you to basically transfer any link in Chrome, Opera, and Firefox browsers to another browser of choice. Currently, link opening supports Firefox, Opera, Safari, Yandex, Microsoft edge, and Internet Explorer.

2: How does “Open In” extension work?

“Open In” uses a minimal NodeJS native client to find your browser of choice and transferring the link to this browser. After installation, upon first link opening, you will get directed to a page containing instruction on how to install the native client. This native client is mandatory for the extension to operate. Note that no extension has access to an external process (another browser in this case); hence the extension needs a native client (bridge) to call native commands. The installation process of the native client is very simple. Please follow FAQ3 for the steps.

3: What web browser should I use?

It really depends on your usage. It is normally recommended to use each browser for one particular purpose. Sometimes privacy matters and sometimes speed. You can even have some browsers with your credentials stored so that you are already logged in, but for some others, you can keep yourself anonymous. It is even possible to install the open-in’s extensions on all your browsers to make sure you can easily send one link from one browser to another browser. Note that each open-in extension has an option to close the tab that has just been sent to the destination browser too. To know more about the browser’s security and privacy notes take a look at Best Browsers for Privacy and Security-Focused blog post

4: How can I install the native client?

Open native-client/releases in a browser tab. Find the latest released version of the client for your OS and download it. Once the download is completed, extract the downloaded file in a local directory.

On Windows OS, find “install.bat” file and right-click over it. Select “Run as administrator” and wait for the script to copy files

On Linux and Mac OSs, open a terminal window at the root directory of the downloaded file and run ./ Wait for the script to copy files and print the successful message

The installer script basically generates a manifest.json file for you and place it in two different places so that Opera, Chrome, and Firefox browsers can find the location of the native client

The native client itself is a minimal NodeJS application. This small application is a bridge between the “Open In” and native environment. Note that by default, the script tries to use the installed NodeJS. If NodeJS is found in your system, the attached NodeJS executable is not going to get copied. If no NodeJS instance is detected, however, the packaged NodeJS executable will be used. So if you have NodeJS installed on your system, make sure it is the current version.

5: How does the extension detect and open links in another browser?

It really depends on your operation system. In Mac, the extension uses open -a firefox link to open link in for instance Firefox browser. In Linux, browser name along with URL of the link is called. In Windows OS, the extension looks for the browser in “%ProgramFiles%” directory and the executable is called with URL as the argument.

If for any reason the application throws an error, you will get an alert box in Chrome and Opera. In Firefox you will get an error message in the console. To open the browser console in Firefox hit (Ctrl + Shift + J).

6: Can I build the native client project instead of using the releases?

Yes, Take a look at .travis.yml file to see how to build the native client *.zip files. You can also check the log file of the actual build process (latest release of GitHub) here

7: Is this important whether I use x86- or x64-bit system when installing the native client?

On Windows OS we use the 32-bit version of NodeJS which works fine on both 32- and 64-bit systems. On Mac and Linux only 64-bit are supported by default. If you have a 32-bit system make sure you have NodeJS installed before installing the native client. This way the system NodeJS executable will be used.

If you already have installed the native client, simply open the container folder and paste the right NodeJS executable there.

8: During native client installation, when I pasted the command into “terminal” I got the message: “No such file or directory”. What am I doing wrong?

You need to switch your terminal directory to the root of the extracted folder. You can do this by using cd directory-path-here command. In Mac OS, type cd followed by a space. Now drag the folder and drop it in the terminal application and press the Enter key. To verify current directory is changed, type pwd and press the Enter key. This command prints the current directory in the terminal. Now follow the instruction one more time.

9: Can I use this extension on Chrome OS?

Unfortunately, not. Chrome OS does not allow installation of the native client and hence these extensions are not operational.

10: Is it possible to automatically send links that match a pattern to an external browser?

The new release of open-in extensions will have a new list in the options page to define hostnames that you prefer the extension to open them in the destination browser with just left-clicking on the links. Define the comma-separated list of domains and when you click on a link that its domain matches with an entry in the list, the link will be opened in the destination browser.

11: What is the newly introduced managed storage and how can I use it?

Managed storage is used by administrators to set the default list of hostnames and URLs to be opened by the external browser on all computers on this network. For instance for the “Open in Chrome” extension that is installed on Firefox browser to open “” hostname in Google Chrome browser, create “{086f665e-6a55-4107-9147-f9a14e72b137}.json” file with the following content and place it in the “ROOT_DIR/ManagedStorage” directory. To find the root directory for your operating system see WebExtensions/Native_manifests.


  "name": "{086f665e-6a55-4107-9147-f9a14e72b137}",
  "description": "managed storage for Open-in-Chrome extension",
  "type": "storage",
    "hosts": [""],
    "urls": []

Note: “{086f665e-6a55-4107-9147-f9a14e72b137}” is the GUID of the extension for Firefox browser.

12: Why the destination browser closes itself when I close my Firefox (the browser that the link is sent from)? This only happens if the link is sent from the Firefox browser and when the destination browser is not already opened.

Firefox opens the backend NodeJS as a child process and if NodeJS is a child process, whatever executable that is initiated by this NodeJS process is still a child of the parent executable which basically is your Firefox executable. So if the destination browser is not open and Firefox initiated it, when you close your Firefox, all the child processes that belong to this process will get closed by your operating system. This issue only happens if you start a process that is not already initiated from Firefox on Windows OS. I am not sure if there is any workaround to resolve this issue.

13: Can I use this extension to open the destination browser in the private mode or incognito mode?

These set of extensions do not accept command-line arguments. So you can create a batch script and insert the actual command that opens the external browser with whatever command-line options that you need (-incognito for instance). Just make sure that the script reads the input arguments and use these arguments as the destination URLs). Now go to the options page of the extension and use the script’s path as the executable path. This way the extension sends the links to the script instead of the actual browser.

14: What is the Tor network? Should I use it?

Tor is a network that allows users to access the internet anonymously. This network is meant to keep the user’s identity anonymous. The idea is to hop each request that is sent to a remote server through multiple intermediate nodes which makes it hard for the server to identify the actual client that is requested this service. Tor offers a native application for Windows, Mac, and Linux (for Android, the native application is called Orbot) to allow users to get connected to the Tor network. For the other local applications on the user’s machine to be able to access the internet through the Tor native software, there is a standard protocol which is called SOCKS5. A desktop application (like your web browser) can use this SOCKS5 protocol to communicate to the Tor client and then the Tor client sends these requests to the internet and gets the replies and redirects them to the desktop applications. Since this might be a bit confusing to get things ready, the Tor project also offers ready-to-use Tor browser which has an internal Tor client embedded and all the complexity of getting connected to the Tor network is performed automatically. To read more about the privacy of the Tor browser, take a look at the Privacy & Security of TOR Browser blog post. Also, note that you can even use the Tor network over a VPN to increase your online privacy. This way the Tor application uses your VPN IP address for communication with the outside world. In How to Use TOR with a VPN blog post, steps to set up a private VPN that connects to the Tor network is explained. Note that even if your communication with the outside world is completely anonymous, still your identity can get tracked using browser’s cookies or browser’s fingerprint. Make sure you have proper extensions installed to protect against these tracking methods.

15: How can I configure policies for open-in extensions on Windows OS?

You need to set each policy as a “string value” in the Windows registry. Here is an example to set two URLs in the list of “Open in Firefox” extension for Google Chrome:

Windows Registry Editor Version 5.00

"urls"="[\"\", \"\"]"


Save this as a text file with *.reg extension. Then double-click to apply it. You can always use the regedit.exe application to see and edit windows registries. Once the file is loaded to the registry, open “chrome://policy” in a browser tab to see the applied policies. You can also use the background page of the extension to see the policies for this extension. To print all the configured policies, use “, p => console.log(p))” command. This command printa all the policies for you. To see the name of policies that this extension accepts, visit schema.json file. For more info visit Configuring Apps and Extensions by Policy.

16: One use case for the reverse mode is to open a particular page for any reason in a specific browser but send all the targeting links of the page to the default browser. Here is the guide by markstos:

want to use Firefox for most of my browsing but on Linux Chrome has a great feature that Firefox does not. Chrome allows you to create an “app” from any website using “More Tool… / Create Shortcut / Open in New Window”. Once created, the an icon appears for the app in the launcher and the app can be launched separately from the browser and will appear with no browser URL bar or tabs– for the most part it works like it’s own app.

For example, this is great for treating “Fastmail” or “Gmail” as it’s own app. It’s also useful for other sites you might like to treat as an “app”, like Jira, Slack, Google Calendar or Spotify.

Normally external links in these “apps” open in a new, normal Chrome window that belongs to the same profile as an app.

By using this extension and “Reverse Mode”, I’m able to whitelist the URLs that belong to the “app” and open external links in Firefox. Once done, it feels irrelevant that the “app” is implemented with Chrome.

This feature may also be of interest to people who using memory hogging Electron apps like Spotify or Slack. Now they can run in existing browser without installing another huge copy of the Chromium project.

To take it a step further, I want my personal email “app” to open links in a personal Firefox profile and my work email “app” to open in a work Firefox profile.

To handle this, I created two Firefox profiles. The each have their own .desktop file with a custom icon. They are launched with custom WM_CLASS as well. In this way the window manager also treats it like have two completely unique Firefox apps, although there is only one install.

Here’s a “work” Firefox .desktop file I added to ~/.local/share/applications/firefox-work.desktop

[Desktop Entry]
GenericName=Work Firefox Browser
Comment=Browse the World Wide Web
Exec=/usr/lib/firefox/firefox -P Work --class firefox-work %u

[Desktop Action new-window]
Name=New Window
Exec=/usr/lib/firefox/firefox -P Work --class firefox-work --new-window %u

[Desktop Action new-private-window]
Name=New Private Window
Exec=/usr/lib/firefox/firefox -P Work --class firefox-work --private-window %u


Notice the Icon has been changed to firefox-symbolic which is an alternate icon that allows me to tell apart the two profiles.

Finally, it seems this app requires calling a single executable on the command line with no arguments, so I added a new bash script in ~/.local/share/bin/firefox-work 

/usr/bin/firefox -P Work --class firefox-work "$1"


Putting the pieces together I can have a “Work email app” (running in Chrome) that opens links in “Work Firefox”.

For more info visit open-in/issues/6

17: On Mac OS, I am getting “permission denied” error message although the native client is installed. How can I fix the issue?

Open Mac’s “Security & Privacy” and under “Full Disk Access” category add “/bin/bash” (you may be able to add the bash executable to the “Files and Folders” category instead). Then open “” script and change “#!/usr/bin/env bash” to “#!/bin/bash”. This way you are asking the script to use bash executable which has the full disk access and hence it is allowed to run any executable no matter what the path is.