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

URL encode: кодирование URL (percent-encoding)

Вставьте текст или URL и получите его в percent-encoding. Режим Компонент нужен для значения параметра или сегмента пути, Полный URL чинит адрес целиком, а Данные формы подходят для тел application/x-www-form-urlencoded.

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

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

Как закодировать строку для URL

  1. Введите или вставьте текст в поле Текст или URL. Результат обновляется по мере ввода.
  2. Выберите режим в поле Кодирование:
    • Компонент (encodeURIComponent): для одного значения параметра, поля формы или сегмента пути.
    • Полный URL (encodeURI): для целого URL, в котором есть пробелы или не-ASCII символы.
    • Данные формы (пробел как +): для тел application/x-www-form-urlencoded и query-строк, собранных так, как это делают HTML-формы.
    • Все символы: закодировать все байты, включая буквы, чтобы проверить декодер.
  3. Оставьте в поле Кодировка UTF-8, если принимающая система не ждёт старую кодировку.
  4. Отметьте Каждую строку отдельно, чтобы закодировать список значений за раз, затем нажмите Скопировать результат. Поменять местами отправляет результат в декодер, чтобы проверить преобразование туда и обратно.

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

encodeURIComponent, encodeURI и кодирование форм

Один и тот же ввод, a b&c=d/é?#+, в трёх распространённых стилях:

РежимРезультатДля чего
Компонент (encodeURIComponent)a%20b%26c%3Dd%2F%C3%A9%3F%23%2Bодно значение внутри URL
Полный URL (encodeURI)a%20b&c=d/%C3%A9?#+целый URL, структура которого уже правильная
Данные формы (URLSearchParams)a+b%26c%3Dd%2F%C3%A9%3F%23%2Bотправка HTML-форм, многие библиотеки для query-строк

Компонент оставляет без экранирования только A–Z a–z 0–9 - _ . ! ~ * ' ( ). Полный URL сохраняет ещё и ; / ? : @ & = + $ , #, то есть символы, которые задают структуру URL, поэтому защитить значение с ними он не может. Данные формы оставляют только буквы, цифры и - _ . *, а пробелы пишут как +.

Классическая ошибка: URL собирают в режиме Полный URL. Тогда в ?q=C++ & Go остаются + и &, и сервер получает q=C плюс лишний параметр. Закодируйте значение в режиме Компонент: ?q=C%2B%2B%20%26%20Go.

Пробелы, плюсы и другие проблемные символы

СимволВ закодированном видеПочему это важно
пробел%20 или ++ означает пробел только в query-строках и телах форм
+%2Bбез кодирования многие серверы превращают его в пробел: +49 30 1234567 становится 49 30 1234567
&%26начинает новый параметр запроса
=%3Dотделяет имя от значения; им заканчивается стандартный Base64
/%2Fделит путь на сегменты; некоторые серверы отклоняют %2F в пути
#%23начинает фрагмент, который никогда не отправляется на сервер
%%25его самого нужно кодировать, иначе декодер увидит битую escape-последовательность
€%E2%82%ACтри байта UTF-8 дают три escape-последовательности

На +, / и = чаще всего спотыкается Base64 в URL. Либо закодируйте его как компонент, либо перейдите на Base64URL, где этих символов нет.

Кодировки, отличные от UTF-8

Percent-encoding работает с байтами, поэтому результат зависит от кодировки. é даёт %C3%A9 в UTF-8 и %E9 в Windows-1252 или ISO-8859-1. Современные браузеры и API используют UTF-8, но старые PHP-приложения, некоторые платёжные шлюзы и устаревшие интранет-системы до сих пор ждут Latin-1 или Windows-1252, а японские сайты иногда ждут Shift_JIS. Выберите подходящую в поле Кодировка. Символ, которого нет в выбранной кодировке, представить нельзя, так что проверьте на них результат.

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

encodeURIComponent("a b&c")              // "a%20b%26c"
new URLSearchParams({ q: "C++ & Go" }).toString()   // "q=C%2B%2B+%26+Go"
from urllib.parse import quote, quote_plus, urlencode
quote("/files/a b.txt")            # '/files/a%20b.txt'  (keeps / by default)
quote("/files/a b.txt", safe="")   # '%2Ffiles%2Fa%20b.txt'
quote_plus("a b&c")                # 'a+b%26c'
urlencode({"q": "C++ & Go"})       # 'q=C%2B%2B+%26+Go'

quote в Python не трогает /, если не передать safe=""; при кодировании значения это часто становится сюрпризом. В других языках: rawurlencode в PHP даёт %20, а urlencode даёт +; URLEncoder.encode в Java кодирует по правилам HTML-форм, с +; в Go есть url.PathEscape (%20) и url.QueryEscape (+). encodeURIComponent не трогает ! ' ( ) *; для строгого вывода по RFC 3986 замените их отдельно:

const strict = s => encodeURIComponent(s).replace(/[!'()*]/g,
  c => "%" + c.charCodeAt(0).toString(16).toUpperCase());

Подробнее о JavaScript рассказывает страница Base64 в JavaScript. Чтобы всё это раскодировать обратно, используйте URL decode.

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

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

URL-кодирование, или percent-encoding, заменяет символы, которые в URL запрещены или имеют особый смысл, на % и две hex-цифры каждого байта. Например: пробел → %20, & → %26, é в UTF-8 → %C3%A9.

Как кодировать пробел в URL: %20 или +?

%20 работает везде. + означает пробел только в query-строках и телах форм, которые следуют правилам кодирования форм; в пути это буквальный плюс. Если сомневаетесь, используйте %20.

Нужно ли кодировать URL целиком?

Нет, кодируйте каждое значение перед вставкой. Если закодировать весь URL в режиме Компонент, экранируются и :, /, ?, &, и адрес сломается. Режим Полный URL оставляет эти структурные символы и исправляет только пробелы и не-ASCII текст.

Откуда в закодированной строке %25?

%25 означает закодированный знак процента. Значит, ввод уже был закодирован и его закодировали повторно: a%20b превращается в a%2520b. Кодируйте исходный текст ровно один раз.

Hex в percent-encoding писать прописными или строчными?

RFC 3986 считает %2F и %2f одинаковыми и рекомендует прописные. Отмечайте Hex в нижнем регистре только чтобы совпасть с системой, которая выдаёт строчные, например при сравнении подписей.