Кодировщик / декодировщик URL
Кодируйте в процентном формате или декодируйте URL или один компонент URL прямо во время ввода. Ничего из введённого никуда не отправляется.
Компонент vs полный URI
Они кодируют разные символы.
Кодирование компонента экранирует всё, что небезопасно внутри одного сегмента URL, включая &, = и ?, используйте его для значения параметра запроса. Кодирование полного URI оставляет эти символы нетронутыми, поскольку они структурно значимы в полном URL, используйте его при кодировании целого адреса, а не одной его части.
Зачем вообще кодировать URL
URL может содержать лишь ограниченный набор ASCII-символов. Пробелы, буквы с диакритикой, эмодзи и зарезервированные символы вроде & или # нужно кодировать в процентном формате (например, %20 для пробела), чтобы они уцелели при передаче в составе ссылки, не сломав её.
Как это работает
Кодирование вызывает собственные функции браузера encodeURIComponent или encodeURI, те же самые, что использует JavaScript-код, поэтому вывод в точности совпадает с тем, что произвёл бы браузер или HTTP-библиотека. Каждый небезопасный байт превращается в знак процента плюс два шестнадцатеричных символа его UTF-8-кодировки: пробел становится %20, а многобайтовые символы разворачиваются в несколько escape-последовательностей (é это %C3%A9).
Два режима кодирования существуют потому, что «закодировать URL» означает две разные вещи. Режим компонента экранирует всё, что не является буквой, цифрой или горсткой безопасных символов, включая / ? & = :. Это то, что нужно для одного значения, попадающего в строку запроса, иначе амперсанд внутри значения разобьёт ваш параметр надвое. Режим полного URL оставляет структурные символы нетронутыми, чтобы полный URL продолжал работать, и экранирует только те символы, которые вообще не могут появляться в необработанном виде. Использование кодирования компонента для целого URL ломает его; использование кодирования полного URL для значения параметра — это готовая уязвимость для инъекции. Выбирайте исходя из того, что кодируете, а не по привычке.
Режим декодирования запускает decodeURIComponent с одним практичным дополнением: плюсы сначала преобразуются в пробелы, потому что кодирование HTML-форм (формат application/x-www-form-urlencoded, который вы видите в строках запроса) исторически записывает пробелы как +. Некорректный ввод, например одинокий %, за которым не следуют два шестнадцатеричных символа, вызывает URIError, который инструмент перехватывает и сообщает вместо показа наполовину декодированного текста. Если после одного декодирования всё ещё остаются последовательности %25xx, значит строка была закодирована дважды; пропустите её через декодирование ещё раз.
Оба направления — это единичный вызов встроенной функции в вашей вкладке. Панель Network в DevTools не показывает никакого трафика во время ввода, так что токены и URL с секретами остаются только на вашем компьютере.