Кодирование и декодирование URL

Превратите %20 и %3A в ссылке во что-то читаемое — или наоборот. Параметры запроса разбираются по одному.

Направление
Область

Обычный текст

Результат кодирования

Здесь появится закодированный результат

Введите URL или загрузите файл

Как работает кодирование URL

В URL допустим лишь ограниченный набор символов. Всё остальное записывается как знак процента и две шестнадцатеричные цифры: пробел становится %20, а кириллическая буква — несколькими байтами. Главное — понимать, какие символы образуют структуру и потому должны остаться нетронутыми.

Значение (encodeURIComponent)

Для отдельного значения параметра или сегмента пути. Разделители — : / ? # & = — тоже кодируются, потому что здесь они текст, а не структура. Это стандарт данных формы, поэтому пробел может выглядеть и как +.

hello world → hello%20world

Весь URL (encodeURI)

Для полного адреса. Символы, образующие структуру, остаются на месте, кодируются только недопустимые — например, пробел. Это то, что нужно, когда вы чините пробел в своей ссылке.

https://a.uz/q?s=hello world → https://a.uz/q?s=hello%20world

Какой символ и когда меняется

СимволКак значениеКак весь URL
пробел%20%20
:%3A:
/%2F/
?%3F?
#%23#
&%26&
=%3D=
+%2B+
@%40@

Разница ровно в этой таблице: режим значения кодирует разделители, режим целого URL их сохраняет. Поэтому кодирование целой ссылки как значения её ломает — результат корректен лишь тогда, когда эта ссылка встраивается внутрь другого URL.

Часто задаваемые вопросы

Чем «Значение» отличается от «Весь URL»?

Это два разных стандарта. Режим значения (encodeURIComponent) кодирует также : / ? # & =, что правильно для отдельного значения параметра или сегмента пути. Режим целого URL (encodeURI) их сохраняет и кодирует только недопустимые символы. Примените кодирование значения к целой ссылке — и https://… превратится в https%3A%2F%2F…, строку, которая уже не работает как ссылка и осмысленна только как значение внутри другого URL.

Почему + иногда становится пробелом?

Данные формы (application/x-www-form-urlencoded) записывают пробел как +. Поэтому в режиме значения декодирование превращает + в пробел — именно это нужно для строк запроса, скопированных из адресной строки браузера. Настоящий плюс кодируется как %2B. В режиме целого URL + не трогается, потому что в пути это обычный символ.

Когда нужно кодирование URL?

Всегда, когда значение попадает внутрь URL: поисковый запрос, адрес электронной почты, другая ссылка, что угодно, введённое пользователем. Незакодированные & или = ломают границы параметров, а пробел местами обрезает ссылку. Это не шифрование — оно ничего не прячет, а лишь отделяет текст от структуры URL.

Отправляются ли мои данные на сервер?

Нет. Кодирование, декодирование и разбор URL происходят в вашем браузере. После загрузки страницы инструмент не делает ни одного сетевого запроса, поэтому его безопасно использовать со ссылками, содержащими токен.