Skip to content
URL-кодирование / декодирование
Tools

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

Новое

Кодируйте и декодируйте текст с percent-encoding и разбирайте строки запроса прямо в браузере.

Special characters reference
Character Encoded (%XX) Notes
space %20 Also encoded as + in HTML form query strings
& %26 Query param separator — encode in values
= %3D Key-value separator in query strings
? %3F Marks the start of a query string
# %23 Fragment identifier
/ %2F Path separator
: %3A Protocol / port separator
@ %40 Username delimiter in URLs
+ %2B Literal plus sign (+ in query string = space)
% %25 Percent itself — encode to avoid ambiguity
%E2%82%AC UTF-8 multi-byte (3 bytes)
© %C2%A9 UTF-8 multi-byte (2 bytes)
Per-language code snippets

Copy-ready snippets for JavaScript, Python, C#, PowerShell, Java and Go.

JavaScript / Node.js
// Encode a single query value (recommended)
const encoded = encodeURIComponent('hello world & co.');
// → 'hello%20world%20%26%20co.'

// Decode
const decoded = decodeURIComponent('hello%20world%20%26%20co.');
// → 'hello world & co.'

// Encode a full URL (leaves : / ? & # intact)
const safeUrl = encodeURI('https://example.com/search?q=hello world');
// → 'https://example.com/search?q=hello%20world'
Python
from urllib.parse import quote, unquote, urlencode

# Encode a single value (%20 for spaces)
encoded = quote('hello world & co.')
# → 'hello%20world%20%26%20co.'

# Decode
decoded = unquote('hello%20world%20%26%20co.')
# → 'hello world & co.'

# Encode a query dict (uses + for spaces — form encoding)
qs = urlencode({'q': 'hello world', 'page': '2'})
# → 'q=hello+world&page=2'

# quote_plus encodes spaces as + (match HTML form encoding)
plus = quote_plus('hello world')
# → 'hello+world'
C# / .NET
// Encode a single value (spaces → %20)
string encoded = Uri.EscapeDataString("hello world & co.");
// → "hello%20world%20%26%20co."

// Decode
string decoded = Uri.UnescapeDataString("hello%20world%20%26%20co.");
// → "hello world & co."

// Older System.Web API (spaces → +, form encoding):
// HttpUtility.UrlEncode("hello world") → "hello+world"
PowerShell
# .NET method — works in PS 5+ and PowerShell Core
$encoded = [Uri]::EscapeDataString('hello world & co.')
# → 'hello%20world%20%26%20co.'

$decoded = [Uri]::UnescapeDataString('hello%20world%20%26%20co.')
# → 'hello world & co.'

# Alternate via System.Web (Desktop PS only):
Add-Type -AssemblyName System.Web
$enc2 = [System.Web.HttpUtility]::UrlEncode('hello world')
# → 'hello+world'
Java
import java.net.URLEncoder;
import java.net.URLDecoder;
import java.nio.charset.StandardCharsets;

// Encode (URLEncoder uses + for spaces — form encoding)
String encoded = URLEncoder.encode("hello world & co.", StandardCharsets.UTF_8);
// → "hello+world+%26+co."

// Decode
String decoded = URLDecoder.decode("hello+world+%26+co.", StandardCharsets.UTF_8);
// → "hello world & co."
Go
import "net/url"

// QueryEscape: spaces become +
encoded := url.QueryEscape("hello world & co.")
// → "hello+world+%26+co."

decoded, err := url.QueryUnescape("hello+world+%26+co.")
// → "hello world & co.", nil

// PathEscape: spaces become %20
pathSafe := url.PathEscape("hello world & co.")
// → "hello%20world%20&%20co."

Runs entirely in your browser. Nothing is uploaded.

Бесплатный онлайн кодировщик и декодировщик URL

Этот кодировщик и декодировщик URL преобразует текст в процентно-кодированный формат — или обращает процесс — прямо в вашем браузере. Вставьте текст, выберите «Кодировать» или «Декодировать», выберите правила Компонента или Полного URI, и результат обновится мгновенно. Ничего не загружается; каждая операция выполняется полностью в вашем браузере с использованием тех же встроенных функций JavaScript, которые использует ваш код.

Процентное кодирование неизбежно в веб-разработке. Пробелы, амперсанды, знаки равенства и не-ASCII символы должны быть экранированы, прежде чем смогут безопасно находиться в URL. Независимо от того, создаёте ли вы API-запрос, отлаживаете ли ссылку отслеживания или читаете журнал сервера, этот инструмент обрабатывает все граничные случаи — включая многобайтовые символы UTF-8, некорректные последовательности и неоднозначность пробела + против %20.

encodeURIComponent против encodeURI — какое правило использовать?

encodeURIComponent — правильный выбор для отдельных значений запроса, сегментов пути или любой строки, вставляемой в URL. Он кодирует практически все специальные символы — включая ?, &, =, /, # и : — чтобы значение не могло нарушить структуру URL. Пример: 'hello world & page=2' становится 'hello%20world%20%26%20page%3D2'.

encodeURI предназначен для кодирования полного URL без его нарушения. Он оставляет структурные символы нетронутыми (: / ? # &), чтобы URL продолжал работать, при этом кодируя пробелы и не-ASCII символы. В сомнительных случаях предпочитайте правила Компонента для любого значения, которое вы вставляете — это безопасный вариант по умолчанию практически в каждом веб-фреймворке.

Пробелы: %20 или + — различие кодирования форм

Существует два допустимых способа кодирования пробела в URL. В путях URL (часть до ?) RFC 3986 требует использования %20. В строках запроса HTML-форм старый формат application/x-www-form-urlencoded кодирует пробелы как + из исторических соображений компактности — и именно это браузеры по-прежнему отправляют при отправке формы через GET.

Оба обозначают «пробел», но только в своём контексте. + в пути URL — это буквальный знак плюс; + в строке запроса — это пробел. Буквальный знак плюс в значении запроса должен быть закодирован как %2B, иначе он будет неверно интерпретирован. Переключатель + как пробел в режиме декодирования обрабатывает ввод, закодированный в форме, заменяя + пробелом перед запуском decodeURIComponent.

Сравнение с CyberChef и другими инструментами кодирования URL

CyberChef (от GCHQ) мощный, но разработан вокруг концепции «рецептного» конвейера — вы связываете несколько операций в цепочку. Для чистого кодирования или декодирования URL всё равно нужно найти операцию, перетащить её в рецепт, а затем обработать входные данные. Отлично подходит для сложных преобразований, но для быстрого кодирования/декодирования избыточен.

Другие онлайн-инструменты, такие как urldecoder.org, просты, но показывают рекламу, требуют полной перезагрузки страницы при каждой операции и не предлагают фрагменты кода для конкретных языков. Этот инструмент обновляет результат мгновенно при каждом нажатии клавиши, обрабатывает правила Компонента и Полного URI, включает справочную таблицу часто встречающихся закодированных символов и отображает готовый для копирования код на JavaScript, Python, C#, PowerShell, Java и Go.

Быстрый справочник специальных символов

Наиболее часто кодируемые символы в веб-разработке: пробел → %20 (или + в строках запроса), & → %26, = → %3D, ? → %3F, # → %23, / → %2F, : → %3A, @ → %40, + → %2B, % → %25. Многобайтовые символы UTF-8 разворачиваются в несколько последовательностей: € → %E2%82%AC, é → %C3%A9.

Символы, которые никогда не кодируются — это незарезервированный набор: буквы A–Z и a–z, цифры 0–9 и четыре символа - _ . ~. Всё остальное — включая каждый не-ASCII символ — должно быть процентно-закодировано в URL, соответствующем стандартам.

Кодирование URL в JavaScript, Python, C#, PowerShell и Java

В каждом основном языке есть встроенная функция для этого. В JavaScript / Node.js: encodeURIComponent(str) и decodeURIComponent(str) — никаких импортов не требуется. В Python: urllib.parse.quote(str) и unquote(str); urlencode(dict) для полной строки запроса. В C#: Uri.EscapeDataString(str) и Uri.UnescapeDataString(str) из пространства имён System. В PowerShell: [Uri]::EscapeDataString(str), доступно в PS 5+ и PowerShell Core. В Java: URLEncoder.encode(str, StandardCharsets.UTF_8).

Панель сниппетов для каждого языка включает готовый для копирования код на JavaScript, Python, C#, PowerShell, Java и Go, чтобы вы могли немедленно добавить нужный вызов в свой проект — с примечаниями о поведении пробела + против %20 для стандартной библиотеки каждого языка.

100% конфиденциально — работает также офлайн

Каждая операция кодирования и декодирования использует только встроенные функции вашего браузера: encodeURIComponent, decodeURIComponent, encodeURI и decodeURI. Никакой текст никогда не отправляется на сервер, не сохраняется и не регистрируется — даже доменные имена в URL, которые вы вставляете. После загрузки страницы переведите устройство в офлайн-режим, и оно продолжит работать идеально. Добавьте в закладки и используйте каждый раз, когда нужно закодировать, декодировать или проверить URL.

Frequently asked questions

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

Кодирование URL (также называемое процентным кодированием) преобразует символы, небезопасные в URL, в знак % с последующими двумя шестнадцатеричными цифрами. Например, пробел становится %20, амперсанд — %26, а решётка — %23. Это обеспечивает корректность каждого URL в любом браузере, HTTP-заголовке или сервере вне зависимости от кодировки символов.

Что означает %20 в кодировании URL?

%20 — это процентно-кодированное представление символа пробела. 20 — шестнадцатеричное значение ASCII 32 (пробела). Таким образом, URL 'hello%20world' декодируется обратно в 'hello world'. В строках запроса HTML-форм иногда вместо %20 для пробелов используется + — оба имеют одинаковое значение в строках запроса, но не в путях URL.

В чём разница между encodeURI и encodeURIComponent?

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

Как кодировать URL в JavaScript?

Используйте encodeURIComponent() для отдельных значений: encodeURIComponent('hello world & co.') возвращает 'hello%20world%20%26%20co.'. Для обратного преобразования используйте decodeURIComponent(). Для полного URL используйте encodeURI() / decodeURI() — они пропускают структурные символы. Обе функции встроены в каждый браузер и Node.js без необходимости импорта.

Почему пробел иногда %20, а иногда +?

В путях URL (до ?) пробелы должны быть %20 согласно RFC 3986. В строках запроса старый формат application/x-www-form-urlencoded, используемый HTML-формами, кодирует пробелы как + из соображений исторической краткости. Оба означают «пробел», но только в своём контексте — буквальный + в значении запроса должен быть закодирован как %2B, иначе он будет неверно интерпретирован как пробел.

Безопасно ли кодировать/декодировать онлайн?

Да — этот инструмент на 100% локален. Каждая операция выполняется в вашем браузере с использованием встроенных функций JavaScript. Ваш текст никогда не отправляется на сервер, не сохраняется и не регистрируется. После загрузки страницы можно отключиться от интернета, и инструмент продолжит работать. Это особенно важно при кодировании ключей API, учётных данных или токенов.

Как кодировать URL в Python?

Используйте urllib.parse.quote() для одного значения: from urllib.parse import quote; quote('hello world & co.') → 'hello%20world%20%26%20co.'. Для декодирования: unquote('hello%20world%20%26%20co.'). Для полного словаря строки запроса: urlencode({'q': 'hello world', 'page': '2'}) → 'q=hello+world&page=2'. quote_plus() использует + для пробелов, соответствуя кодированию HTML-форм.