--- title: Navigator.registerProtocolHandler() slug: Web/API/Navigator/registerProtocolHandler translation_of: Web/API/Navigator/registerProtocolHandler ---
In progress. Allows web sites to register themselves as possible handlers for particular protocols.
For security reasons, by default, web sites may only register protocol handlers for themselves — the domain and protocol of the handler must match the current site. However, users may set a preference in Firefox to allow cross website installation, by setting the gecko.handlerService.allowRegisterFromDifferentHost pref to true in about:config.
Extensions can register protocol handlers targeting other sites: see the 'See Also' section for how to use them from XPCOM.
window.navigator.registerProtocolHandler(protocol, url, title);
protocolurltitleSecurityErrorSyntaxErrorFor security reasons, registerProtocolHandler() has restrictions on which schemes may be registered. A custom scheme may be registered as long as the scheme's name begins with "web+", is at least five characters long (including the "web+" prefix), and has only lower-case ASCII letters in its name. For example, "web+burger", as shown in the Example below.
Otherwise, the scheme must be one of the schemes on the whitelist below:
bitcoingeoimircircsmagnetmailtommsnewsnntpsipsmssmstosshtelurnwebcalwtaixmppIf your web application is located at http://www.google.co.uk, you can register a protocol handler for it to handle "web+burger" links like this:
navigator.registerProtocolHandler("web+burger",
"https://www.google.co.uk/?uri=%s",
"Burger handler");
This creates a handler that allows web+burger:// links to direct the user to your web application, inserting the burger information specified in the link into the URL. Recall that this script must be run from the same domain (so any page location at google.co.uk) and the second argument passed must be of http or https scheme (in this example it is https) .
The user will be notified that your code has asked to register the protocol handler, so that they can decide whether or not to permit it. See the screenshot below for an example.

"Register a webmail service as mailto handler" shows how to do this from XPCOM scope.
| Specification | Status | Comment |
|---|---|---|
| {{SpecName('HTML WHATWG', 'webappapis.html#dom-navigator-registerprotocolhandler', 'registerProtocolHandler()')}} | {{Spec2('HTML WHATWG')}} | Initial definition |
registerProtocolHandler from XPCOM scope.