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

Кодируйте параметры или целые URL — правильной функцией для каждой задачи.

🔒 Работает локально в браузере — ничего не загружается.

Парсер query string

Измените любое имя или значение ниже — полный URL будет пересобран и заново закодирован.

Об этом инструменте

Пробелы, диакритика, &, = и большинство символов нельзя вставлять в URL как есть — они должны стать последовательностями %XX (percent encoding). Критичен выбор функции: encodeURIComponent экранирует всё, включая &, = и ? — верно для значений параметров; encodeURI сохраняет структурные символы URL и подходит только для кодирования целого URL.

Их путаница — классический баг: encodeURI на параметре незаметно ломает значения с & или =. Полное сравнение — в encodeURI vs encodeURIComponent. Парсер query string ниже раскладывает каждый параметр вставленного URL в редактируемую таблицу — измените имя или значение, и полный URL будет пересобран. Всё работает в браузере — больше инструментов на dec0de.dev.

URL-кодирование (процентное) заменяет символы, которые иначе сломали бы URL, на % и байтовое значение в шестнадцатеричном виде — пробел становится %20, амперсанд %26. Так вы безопасно помещаете поисковые запросы, адреса редиректов, токены и не-ASCII текст в ссылку или строку запроса. Зарезервированные символы (: / ? # [ ] @ ! $ & ' ( ) * + , ; =), пробелы и всё, что вне незарезервированного набора (буквы, цифры и - _ . ~), кодируются; остальное остаётся читаемым.

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

encodeURIComponent или encodeURI — что использовать?

Для отдельного значения запроса или сегмента пути используйте encodeURIComponent — он кодирует &, =, ?, / и др. encodeURI применяйте только к целому URL, который не хотите сломать. Кодировать значение через encodeURI — классическая ошибка.

Почему пробел то %20, то +?

В пути URL пробел — это %20. В строке запроса формата form-urlencoded пробел часто пишут как +. Оба декодируются обратно в пробел, а переключатель «+ — это пробел» меняет режим.

Можно закодировать сразу целый список значений?

Да. Включите «Пакетно: по одному значению в строке» — каждая строка обрабатывается независимо, порядок и пустые строки сохраняются. Результат можно скопировать или скачать текстовым файлом.

Какие символы действительно нужно кодировать?

Зарезервированные символы (: / ? # [ ] @ ! $ & ' ( ) * + , ; =), пробелы, не-ASCII текст и управляющие символы. Незарезервированный набор — буквы, цифры и - _ . ~ — всегда остаётся как есть.

Почему декодирование падает с «недопустимая escape-последовательность»?

За % должны идти ровно две шестнадцатеричные цифры, а полученные байты — быть корректным UTF-8. Незакодированный литеральный % (пишите %25), обрезанная последовательность вроде %2 или байты другой кодировки ломают декодирование. Инструмент называет проблемную последовательность и её позицию и переходит к ней.

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

Да. Кодирование, декодирование и разбор строки запроса выполняются в браузере. Ввод сохраняется только в local storage этого браузера, чтобы пережить перезагрузку, — кнопка «Очистить» его стирает. Ничего никуда не загружается.