URL decode и encode

Раскодирует ссылку, закодирует параметр и разберёт адрес на части

Исходный
Можно нажать Ctrl V или перетащить файл — результат появится справа
Пусто
Результат

Как пользоваться

  1. Вставьте ссылку, часть адреса или текст в поле «Исходный»
  2. Направление выберется само: если в строке есть %XX, это «Декодировать», иначе «Кодировать»
  3. Для целой ссылки под результатом появится таблица: протокол, хост, путь, параметры и якорь
  4. Скопируйте результат или значение нужного параметра

Примеры

Раскодировать кириллицу в ссылке

Ссылка из письма или лога выглядит нечитаемо, а после декодирования понятна: %D0%9F%D1%80%D0%B8%D0%B2%D0%B5%D1%82 превращается в «Привет». Каждая русская буква при этом занимала два байта, то есть шесть символов в адресе: %D0%9F — это «П».

https://example.ru/search?q=%D0%9F%D1%80%D0%B8%D0%B2%D0%B5%D1%82%20%D0%BC%D0%B8%D1%80

Разобрать ссылку с UTM-метками

Вставьте рекламную ссылку целиком, и параметры лягут в таблицу построчно: utm_source, utm_medium, utm_campaign с раскодированными значениями и кнопкой «Копировать» у каждого. Если один из параметров сам является ссылкой, как redirect ниже, мы раскодируем и его и покажем вложенно.

https://shop.example.ru/catalog?utm_source=yandex&utm_medium=cpc&utm_campaign=%D0%BA%D0%BE%D0%B1%D0%B5%D1%80%D0%B5%D0%B3%D0%BD%D0%B8%D0%BA%D0%B8&redirect=https%3A%2F%2Fexample.ru%2Fa%3Fb%3D1

Закодировать значение параметра

Строку «Привет мир&a=1» нужно кодировать как значение: иначе знак & будет принят за начало следующего параметра. Результат: %D0%9F%D1%80%D0%B8%D0%B2%D0%B5%D1%82%20%D0%BC%D0%B8%D1%80%26a%3D1. Для этого есть режим «Значение параметра».

Привет мир&a=1

Что такое URL-кодирование

В адресе можно использовать только ограниченный набор знаков. По RFC 3986 это латинские буквы, цифры и четыре знака: дефис, подчёркивание, точка и тильда. Остальное, включая кириллицу, пробелы и служебные символы, записывается в виде %XX, где XX — байт в шестнадцатеричной записи. Такую запись называют процентным кодированием, percent-encoding, а в быту — urlencode.

Для букв за пределами ASCII сначала берутся байты в UTF-8, и каждый байт записывается отдельно. Поэтому «П» превращается в %D0%9F: у этой буквы два байта, D0 и 9F. Пробел — это %20, а знак «&» — %26.

Декодирование делает обратное: превращает %XX обратно в байты, а байты в текст. Если в строке после % идут не две шестнадцатеричные цифры, например %ZZ или одинокий %D0 в конце, мы покажем ошибку с позицией и объясним, что не так.

Закодировать значение или ссылку целиком

Тут легко ошибиться, потому что есть два разных действия. Если вы кодируете значение параметра, нужно закодировать всё, кроме безопасных знаков: так ?, &, =, # и / внутри значения перестанут влиять на структуру адреса. Именно это делает режим «Значение параметра», и он работает так же, как encodeURIComponent: нетронутыми остаются A–Z, a–z, 0–9, а также дефис, подчёркивание, точка, восклицательный знак, тильда, звёздочка, апостроф и круглые скобки.

Если вы кодируете ссылку целиком, структура адреса должна сохраниться. В режиме «Ссылка целиком» кодируются только кириллица, пробелы и недопустимые символы, а знаки : / ? & = # остаются на месте. Так адрес вида https://пример.рф/путь к файлу превращается в рабочую ссылку.

Не кодируйте дважды. Если ссылку уже закодировали, а вы кодируете её снова, знак % превратится в %25, и вместо %D0%9F получится %25D0%259F. Такие строки легко узнать по частому «%25». Раскодируйте их ещё раз, и всё встанет на место.

Плюс, пробел и формы

В адресной строке пробел записывается как %20. Но в данных HTML-форм (тип application/x-www-form-urlencoded) пробел традиционно пишут знаком «+». Поэтому при декодировании мы по умолчанию читаем «+» как пробел, и это можно отключить переключателем «+ как пробел». Отключите его, если «+» в вашей строке — настоящий плюс, например в номере телефона или в Base64.

При кодировании пробел всегда становится %20; если нужен вариант для форм, включите «Пробел как +».

Разбор параметров, UTM и редиректов

Когда вы вставляете ссылку целиком, под результатом появляется таблица. В ней отдельно показаны протокол, хост, путь, каждый параметр запроса и якорь (то, что после #). Имя и значение параметра раскодированы, у значения есть кнопка «Копировать». Это удобно, когда нужно проверить UTM-метки (utm_source, utm_medium, utm_campaign, utm_term, utm_content) или найти нужный параметр в длинной ссылке.

Если значение параметра само похоже на ссылку или JSON, мы раскодируем его ещё раз и покажем вложенно. Так читаются редиректы вида ?redirect=https%3A%2F%2F… и параметры, в которых лежит целый объект.

Если в хосте кириллический домен, мы покажем его в обоих видах: читаемом и в Punycode. Отдельно перевести домены можно в конвертере Punycode.

Старые кодировки и функции в коде

Иногда в ссылке байты не складываются в UTF-8. Так бывает с адресами из старых сайтов и систем: %CF%F0%E8%E2%E5%F2 — это «Привет» в Windows-1251. Мы распознаём такой вариант и пишем «Закодировано в Windows-1251».

В JavaScript для этого есть encodeURIComponent и decodeURIComponent для значений, а также encodeURI и decodeURI для целых ссылок. В Python — urllib.parse.quote, unquote и urlencode, в PHP — rawurlencode и urlencode. Разница между ними как раз в пробеле и в том, что считать безопасным.

Частые вопросы

Как декодировать ссылку с %D0%9F онлайн

Вставьте ссылку в поле «Исходный». Если в ней есть %XX, направление «Декодировать» включится само, и вы сразу увидите читаемый текст.

Почему вместо кириллицы в ссылке %D0%9F

Адрес может содержать только ограниченный набор знаков, поэтому каждый байт буквы записывается как %XX. Браузер при этом часто показывает адрес читаемо, а в буфер обмена кладёт закодированный.

Как закодировать параметр для запроса

Выберите «Кодировать» и режим «Значение параметра». Работает как encodeURIComponent: служебные знаки, включая & и =, будут закодированы, а пробел станет %20. Без изменений остаются буквы, цифры, дефис, подчёркивание, точка, восклицательный знак, тильда, звёздочка, апостроф и круглые скобки.

Чем encodeURI отличается от encodeURIComponent

encodeURI сохраняет знаки структуры адреса вроде ? & = # и подходит для целой ссылки. encodeURIComponent кодирует и их, поэтому применяется к значениям. В нашем инструменте это режимы «Ссылка целиком» и «Значение параметра».

Что делать, если получилось %25D0

Строку закодировали дважды: знак % стал %25. Раскодируйте её второй раз.

Как разобрать UTM-метки в ссылке

Вставьте ссылку целиком: под результатом будет таблица со всеми параметрами, где значения utm_source, utm_medium и других уже раскодированы.

Куда уходят мои данные

Никуда. Всё обрабатывается в браузере, а запросы на чужие адреса запрещены заголовком безопасности. Сайт загружает только свои страницы и файлы — это легко проверить во вкладке «Сеть» в инструментах разработчика.

Другие инструменты