URL кодировщик и декодер с парсером URL
Декодирование и кодирование URL в реальном времени со встроенным парсером URL. Два режима: encodeURI и encodeURIComponent. 100% приватно, данные не отправляются на сервер.
Что такое URL-кодирование (percent encoding)?
URL-кодирование, формально percent encoding — механизм, определённый в RFC 3986, для представления символов в URI, которые не разрешены или имеют особое значение. Каждый небезопасный байт преобразуется в % + два hex-символа: пробел → %20, амперсанд → %26, китайский символ 中 → %E4%B8%AD (его три UTF-8 байта, каждый percent-кодирован).
URL могут содержать только ограниченный набор ASCII. Буквы, цифры и горстка символов (- _ . ~) — «незарезервированные» и могут появляться как есть. Все остальные — пробелы, пунктуация и весь Unicode — должны percent-кодироваться. Зарезервированные символы вроде ?, &, =, # служат структурными разделителями в синтаксисе URL и должны кодироваться, когда используются как литеральные данные.
Percent encoding критически важен в вебе: браузеры кодируют отправку форм, API требуют закодированных параметров запроса, OAuth-флоу зависят от корректно закодированных redirect URI, а интернационализированные доменные имена опираются на кодирование не-ASCII символов. Ошибки кодирования ведут к битым ссылкам, уязвимостям (открытые редиректы) и порче данных.
Инструмент даёт оба режима encodeURI и encodeURIComponent, встроенный парсер структуры URL, конвертацию в реальном времени и обнаружение двойного кодирования — всё приватно в браузере.
URL-кодирование часто применяется вместе с другими инструментами. Может потребоваться Base64-кодировать URL для встраивания в JWT-токен или payload API, или отформатировать JSON с URL-строками. Подробный байтовый разбор percent encoding — в статье «Полное руководство по URL-кодированию».
Кодируете URL для QR-кода? Используйте генератор QR-кодов — длинные URL могут превышать байтовый лимит QR.
// Encode a query parameter value
const param = encodeURIComponent('hello world & goodbye');
console.log(param); // → 'hello%20world%20%26%20goodbye'
// Encode a full URL (preserves structure)
const url = encodeURI('https://example.com/path name?q=hello world');
console.log(url); // → 'https://example.com/path%20name?q=hello%20world'
// Decode a percent-encoded string
const decoded = decodeURIComponent('hello%20world%20%26%20goodbye');
console.log(decoded); // → 'hello world & goodbye'
// Build a URL with encoded parameters
const base = 'https://api.example.com/search';
const query = `?q=${encodeURIComponent('你好')}&lang=zh`;
console.log(base + query); // → 'https://api.example.com/search?q=%E4%BD%A0%E5%A5%BD&lang=zh' Ключевые возможности
Два режима кодирования
Переключайте между encodeURI (сохраняет структуру URL) и encodeURIComponent (кодирует всё для значений параметров) под ваш сценарий.
Встроенный парсер URL
Автоматически разбивает URL на протокол, хост, порт, путь, параметры запроса и fragment — каждое поле редактируемое и можно собрать обратно.
Преобразование в реальном времени
Кодирование и декодирование мгновенно по мере ввода — кнопок жать не нужно.
Полностью в браузере
Вся обработка локальная через нативные API JavaScript. Данные не покидают устройство — нет загрузок на сервер, нет трекинга.
Полная поддержка UTF-8
Корректно обрабатывает китайский, японский, корейский, арабский, эмодзи и любой Unicode-текст через корректное UTF-8 byte-кодирование.
Обнаружение двойного кодирования
Автоматически обнаруживает и предупреждает о двойном кодировании вроде %2520, помогая избежать одной из самых частых ошибок URL.
Примеры
Декодирование искажённого URL
https%3A%2F%2Fexample.com%2Fsearch%3Fq%3Dhello%20world%26lang%3Den
https://example.com/search?q=hello world&lang=en
Полностью percent-кодированный URL декодируется в человекочитаемую форму, раскрывая параметры запроса и структуру
Китайские символы
https://example.com/search?q=你好世界
https://example.com/search?q=%E4%BD%A0%E5%A5%BD%E4%B8%96%E7%95%8C
Китайские символы конвертируются в UTF-8 байты и percent-кодируются
Параметры запроса
https://example.com/api?name=John Doe&role=admin&lang=en&sort=date desc
https://example.com/api?name=John%20Doe&role=admin&lang=en&sort=date%20desc
Пробелы и спецсимволы в значениях параметров запроса кодируются с сохранением структуры URL
Полный URL
https://user:pass@example.com:8080/path/to/page?key=value&arr[]=1#section-2
https://user:pass@example.com:8080/path/to/page?key=value&arr%5B%5D=1#section-2
Полный URL с учётными данными, портом, путём, параметрами запроса со скобками и fragment-идентификатором
OAuth Redirect URI
https://auth.example.com/authorize?redirect_uri=https://myapp.com/callback?code=abc&state=xyz
https://auth.example.com/authorize?redirect_uri=https%3A%2F%2Fmyapp.com%2Fcallback%3Fcode%3Dabc%26state%3Dxyz
Значение redirect_uri само содержит полный URL, который должен быть закодирован, чтобы спецсимволы не интерпретировались как часть внешнего URL
Как использовать
- 1
Введите URL или закодированную строку
Вставьте URL в область декодированного для кодирования или percent-кодированную строку в область кодированного для декодирования. Выберите режим encodeURI или encodeURIComponent.
- 2
Смотрите результат и разобранную структуру
Другая область обновляется мгновенно. Парсер URL разбивает URL на протокол, хост, порт, путь, параметры запроса и fragment — все редактируемые.
- 3
Скопируйте или перестройте
Нажмите «Скопировать» для результата. Редактируйте отдельные компоненты URL и нажмите «Перестроить», чтобы собрать новый URL из изменённых частей.
Типичные ошибки
Двойное кодирование (%2520 вместо %20)
Двойное кодирование возникает, когда уже закодированный URL кодируется снова. Знак % в %20 кодируется как %25, превращая %20 в %2520. Это ломает URL, потому что сервер видит литеральную строку %20 вместо пробела.
https://example.com/path%2520with%2520spaces
https://example.com/path%20with%20spaces
Пробел как + в сегментах пути
Символ + представляет пробел только в формате application/x-www-form-urlencoded (query string из HTML-форм). В сегментах пути + интерпретируется как литеральный плюс, не пробел. Всегда используйте %20 для пробелов в сегментах пути.
https://example.com/my+file+name.pdf
https://example.com/my%20file%20name.pdf
encodeURI на значениях параметров
encodeURI() не кодирует &, = и другие зарезервированные символы, поэтому применение к значению параметра с этими символами портит структуру query string.
encodeURI('key=value&more') → 'key=value&more' (& not encoded!) encodeURIComponent('key=value&more') → 'key%3Dvalue%26more' Предположение о не-UTF-8 кодировке
Некоторые legacy-системы используют Latin-1 или Shift-JIS для URL-параметров. Современные стандарты требуют UTF-8. Декодирование Shift-JIS-параметра как UTF-8 даёт повреждённый текст.
Decoding %82%B1%82%F1 as UTF-8 (this is Shift-JIS for こん)
Using UTF-8: %E3%81%93%E3%82%93 correctly decodes to こん
Кодирование относительных путей без контекста
Кодирование пути вроде ../images/photo.jpg через encodeURIComponent превращает слэши и точки в percent-последовательности, ломая структуру пути. Используйте encodeURI() или кодируйте только отдельные сегменты.
encodeURIComponent('../images/photo.jpg') → '..%2Fimages%2Fphoto.jpg' Encode each segment: '../images/' + encodeURIComponent('my photo.jpg') Типичные сценарии
- Отладка искажённых URL
- Декодирование percent-кодированных URL из логов сервера, сообщений об ошибках или DevTools для чтения исходного человекочитаемого текста.
- Разработка API
- Кодирование значений параметров запроса для REST API, чтобы спецсимволы вроде &, = и пробелы не ломали URL запроса.
- Настройка OAuth-флоу
- Корректное кодирование redirect_uri и других URL-параметров в OAuth authorization URL для предотвращения сбоев аутентификации.
- Интернационализированные URL
- Кодирование и декодирование URL с китайскими, японскими, корейскими, арабскими и другими не-ASCII символами для интернационализированных приложений.
- Анализ маркетинговых ссылок
- Декодирование tracking-URL из email-кампаний и рекламных платформ для понимания встроенных UTM-параметров и цепочек редиректов.
- Проверка структуры URL
- Разбор сложных URL на компоненты — протокол, хост, порт, путь, параметры запроса и fragment — для анализа и модификации.
Технические детали
- RFC 3986 — зарезервированные и незарезервированные символы
- RFC 3986 определяет незарезервированные символы (A-Z, a-z, 0-9, -, ., _, ~), не нуждающиеся в кодировании, и зарезервированные (:, /, ?, #, [, ], @, !, $, &, ', (, ), *, +, ,, ;, =), служащие разделителями URI и требующие percent-кодирования при использовании как данных.
- Поток UTF-8 byte-кодирования
- Не-ASCII символы сначала конвертируются в Unicode код-поинт, затем в UTF-8 байты (1-4 байта в зависимости от диапазона), наконец каждый байт percent-кодируется как %XX. Например: é (U+00E9) → UTF-8 байты C3 A9 → %C3%A9. Эмодзи 🎉 (U+1F389) → UTF-8 байты F0 9F 8E 89 → %F0%9F%8E%89.
- URL и URI
- URI (Uniform Resource Identifier) — общий термин для любой идентифицирующей строки. URL (Uniform Resource Locator) — это URI, также указывающий механизм доступа (вроде https://). Правила кодирования RFC 3986 применимы ко всем URI. JavaScript API использует терминологию URI (encodeURI, decodeURI), повседневное использование — URL.
Лучшие практики
- Правильный режим под задачу
- Используйте encodeURIComponent() для отдельных ключей и значений параметров. encodeURI() — только для полного URL, когда нужно закодировать небезопасные символы без поломки структуры. Никогда не применяйте encodeURI() к значениям параметров, которые могут содержать &, = или другие зарезервированные.
- Избегайте двойного кодирования
- Перед кодированием проверяйте, не закодирована ли строка уже. Ищите существующие %-последовательности. Кодирование уже закодированной строки превращает %20 в %2520, %3D в %253D и т. д. Если не уверены — сначала декодируйте, потом кодируйте один раз.
- Декодируйте на сервере
- Большинство веб-фреймворков автоматически декодируют URL-параметры до того, как они попадают в код приложения. Избегайте ручного декодирования параметров, которые фреймворк уже декодировал — это может вызвать проблемы, если оригинал содержал литеральные percent-последовательности.
- Кодируйте значения для OAuth и подписей API
- OAuth 1.0 signature base strings и многие алгоритмы подписи API требуют строгого percent-кодирования по RFC 3986. Используйте encodeURIComponent() и затем замените оставшиеся символы, которые он не кодирует (!, ', (, ), *), на их percent-эквиваленты, если этого требует спецификация.
Часто задаваемые вопросы
Что такое URL-кодирование и зачем оно нужно?
В чём разница между encodeURI и encodeURIComponent?
URL-кодирование — это то же, что HTML-кодирование?
Почему мой URL ломается в curl?
Почему китайские символы становятся строками вроде %E4%B8%AD?
Нужно ли кодировать параметр redirect_uri в OAuth?
В чём разница между querystring Node.js и URLSearchParams?
Как кодировать URL в Python, JavaScript и Java?
Какие символы не кодируются?
В чём разница между + и %20 для кодирования пробелов?
Как URL-кодирование обрабатывает эмодзи?
Можно ли использовать URL-кодирование для шифрования или безопасности?
Каков максимальный размер URL?
В чём разница между URL и URI?
Похожие инструменты
Все инструменты →Base64 декодер и кодировщик
Кодирование и форматирование
Декодирование и кодирование Base64 онлайн бесплатно. Преобразование в реальном времени с полной поддержкой UTF-8 и эмодзи. Полная приватность — работает в браузере. Без регистрации.
JSON Diff и сравнение
Кодирование и форматирование
Сравнивайте два JSON-файла мгновенно в браузере. Side-by-side подсветка, вывод JSON Patch (RFC 6902), игнорирование шума вроде timestamp и ID. 100% приватно, без загрузки.
Форматировщик и валидатор JSON
Кодирование и форматирование
Форматирование, проверка и улучшение читаемости JSON прямо в браузере. Бесплатный онлайн-инструмент с проверкой синтаксиса, поиском ошибок, минификацией и копированием в один клик. Полная приватность.
Конвертер JSON в YAML
Кодирование и форматирование
Вставьте JSON, получите YAML мгновенно. Live-конвертация в браузере. Готово для K8s/Compose, отступ 2/4 пробела, умное экранирование. 100% приватно, без загрузки.
Генератор QR-кодов — URL, WiFi, vCard, Email, SMS, Geo
Кодирование и форматирование
Бесплатный генератор QR-кодов. Создавайте статические QR для URL, WiFi, vCard, email и SMS. Скачивание SVG и PNG. Без срока действия, без регистрации, 100% в браузере.
Конвертер YAML в JSON
Кодирование и форматирование
Вставьте YAML, получите JSON мгновенно. Live-конвертация в браузере. Поддержка манифестов K8s, OpenAPI, helm values. 100% приватно, без загрузки.