If you register a protocol handler with navigator.registerProtocolHandler() and follow a link for that protocol containing a space, then the space will be escaped as "%20" instead of "+". This makes Chrome consistent with other browsers such as Firefox.


* Improve interoperability with the other browser implementing registerProtocolHandler * Make consistent with other escaped characters. * Adhere to the specification.


Specification link

Specification being incubated in a Community Group

Status in Chromium


No active development (tracking bug)

Consensus & Standardization

After a feature ships in Chrome, the values listed here are not guaranteed to be up to date.



Here is an example (be sure to follow usual registerProtocolHandler restrictions e.g. same-origin and https): <script> navigator.registerProtocolHandler("mailto", "https://example.org/?value=%s") </script> <a href="mailto:frederic wang@example.com">send email</a> this would redirect to https://example.org/?value=frederic%20wang@example.com rather than https://example.org/?value=frederic+wang@example.com which is handled the same by e.g. URLSearchParams

Last updated on 2020-11-09