Загрузить файл
  1. base64hub
  2. Веб и токены
  3. URL decode

URL decode: декодирование URL (percent-decoding)

Вставьте закодированный URL, query-строку или строку из лога, чтобы превратить %20, %2F и %C3%A9 обратно в текст. Полный URL заодно раскладывается на хост, путь и декодированные параметры запроса.

Бесплатно без регистрации и ограничений Локально ничего не загружается Повторно снимает двойное и тройное кодирование, до 5 проходов Обновлено 27 окт. 2026 г.
Ввод 0Результат 0

Обработка идёт в браузере. Эта страница не может никуда отправить ваши данные – откуда мы это знаем

Как декодировать URL

  1. Вставьте закодированный текст в поле Закодированный URL или текст.
  2. Для query-строк и данных форм оставьте Считать + пробелом включённым, а для путей и значений в Base64 выключите.
  3. Если в результате остались последовательности %XX, строка статуса подскажет: отметьте Декодировать повторно.
  4. Для лог-файла или столбца значений отметьте Каждую строку отдельно, чтобы каждая строка декодировалась сама по себе.
  5. Если исходник был не в UTF-8, выберите Кодировка, затем нажмите Скопировать результат.

Если на входе полный URL, таблица под полями показывает схему, хост, декодированный путь, каждый параметр запроса отдельной строкой и фрагмент. Это самый быстрый способ прочитать длинную ссылку с трекингом или редиректом.

Примеры

ЗакодированоДекодированоКомментарий
q=base64%20%26%20%22url-safe%22q=base64 & "url-safe"%26 даёт &, а %22 даёт "
lang=%E6%97%A5%E6%9C%AC%E8%AA%9Elang=日本語по три байта на символ в UTF-8
%F0%9F%98%80😀эмодзи занимают четыре байта
q=a+b%2Bcq=a b+cс Считать + пробелом
next=%252Fhome%253Ftab%253D1next=/home?tab=1двойное кодирование, два прохода
caf%E9caféWindows-1252 или ISO-8859-1, а не UTF-8

Двойное кодирование

Каждый раз, когда уже закодированную строку кодируют снова, каждый % превращается в %25. Так / становится %2F, затем %252F, затем %25252F. Это случается, когда URL редиректа проходит через несколько сервисов или когда фреймворк кодирует значение, которое код уже закодировал.

Чтобы прочитать такую строку, декодируйте её, пока не исчезнут escape-последовательности; Декодировать повторно делает именно это и сообщает число проходов. Чтобы устранить причину, найдите слой, который кодирует второй раз. Законно вложенному URL, например в параметре next= или url= с другим адресом внутри, нужен ровно один дополнительный слой, не больше.

Такую вложенность часто дают почтовые шлюзы безопасности. Ссылка Microsoft Defender Safe Links выглядит как https://eur01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fexample.com%2Freset%3Fid%3D42&data=…; вставьте её, и таблица параметров покажет реальный адрес назначения, https://example.com/reset?id=42, без единого клика по ссылке.

Битые escape-последовательности и старые кодировки

После % должны идти ровно две hex-цифры. 100%, %zz или URL, обрезанный посреди последовательности, считаются ошибкой. Декодер не гадает и сообщает Битая escape-последовательность в позиции N. decodeURIComponent в JavaScript в тех же случаях бросает URIError: URI malformed, а unquote в Python оставляет последовательность как есть.

Второй источник ошибок связан с кодировкой. Percent-последовательности кодируют байты, а одиночный %E9 не образует корректный UTF-8. Python декодирует его в символ замены, JavaScript бросает исключение. Если в Кодировка выбрать Windows-1252 или ISO-8859-1, получится é. В том же списке есть Shift_JIS, GBK, EUC-KR, KOI8-R и другие старые кодировки.

URL decode в коде

decodeURIComponent("a%20b%26c")                   // "a b&c"
new URLSearchParams("q=a+b%2Bc").get("q")          // "a b+c"
from urllib.parse import unquote, unquote_plus, parse_qs
unquote("caf%C3%A9")                     # 'café'
unquote("caf%E9", encoding="latin-1")    # 'café'
unquote_plus("q=a+b%2Bc")                # 'q=a b+c'
parse_qs("q=a+b%2Bc&tag=x&tag=y")        # {'q': ['a b+c'], 'tag': ['x', 'y']}

decodeURIComponent не превращает + в пробел, а URLSearchParams и unquote_plus превращают. Выбирайте тот вариант, который соответствует тому, как строку закодировали. Для кодирования есть URL encode, а для Base64, пришедшего через URL, подойдёт декодер Base64URL.

Вопросы и ответы

Как декодировать строку в URL-кодировке?

Вставьте её выше, и декодированный текст появится по мере ввода. В JavaScript используйте decodeURIComponent(s), в Python urllib.parse.unquote(s) или unquote_plus(s), если + означает пробел.

Почему в декодированном URL всё ещё есть %20 или %3A?

Его закодировали дважды. Один проход превращает %2520 в %20, второй даёт пробел. Отметьте Декодировать повторно: декодер будет продолжать, пока не останется escape-последовательностей (до пяти проходов), и сообщит, сколько их понадобилось.

Почему decodeURIComponent выдаёт URI malformed?

Либо после % нет двух hex-цифр, как в 100%, либо байты не складываются в корректный UTF-8, как %E9 из системы на Windows-1252. Этот декодер показывает точную позицию ошибки, а опция Кодировка декодирует старые кодировки.

Нужно ли декодировать + как пробел?

Нужно в query-строках и телах форм, поэтому Считать + пробелом включено по умолчанию. Для путей в URL и значений, где может быть Base64, снимите галочку: там + означает буквальный плюс.