Загрузить файл
  1. base64hub
  2. Веб и токены
  3. Кодировщик Base64URL

Кодировщик Base64URL: URL-safe Base64 онлайн

Кодируйте текст в URL-safe Base64: - и _ заменяют + и /, а = в конце отбрасывается. Результат можно вставить в URL, cookie или токен без дополнительного экранирования.

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

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

Как закодировать в Base64URL

  1. Введите или вставьте текст в поле Ввод · текст.
  2. Скопируйте Base64URL из поля Результат · Base64. Флажки URL-safe (- _) и Без дополнения (=) на этой странице уже стоят.
  3. Если получателю нужно дополнение, снимите Без дополнения (=). Если нужен стандартный Base64, снимите ещё и URL-safe (- _) или воспользуйтесь кодировщиком Base64.
  4. Скопируйте результат или скачайте его как base64.txt.

Декодировать значение можно декодером Base64URL, а для перевода готовых строк между двумя алфавитами есть страница Base64 в Base64URL.

Чем он отличается от стандартного Base64

Различаются только три символа. Всё остальное, включая правило «3 байта – 4 символа», не меняется:

Стандартный Base64Base64URL
Значение 62+-
Значение 63/_
Дополнение= обязательнообычно опускается
Где описанRFC 4648, раздел 4RFC 4648, раздел 5

У многих коротких строк варианты отличаются только дополнением. Разница в алфавите проявляется, когда 6-битная группа принимает значение 62 или 63, а это дают символы вроде ? и > и многие байты вне ASCII:

ВходСтандартныйBase64URL без дополнения
Hi!SGkhSGkh
?>?>Pz4/Pg==Pz4_Pg
subjects?_dc3ViamVjdHM/X2Q=c3ViamVjdHM_X2Q
https://example.com/?q=1aHR0cHM6Ly9leGFtcGxlLmNvbS8/cT0xaHR0cHM6Ly9leGFtcGxlLmNvbS8_cT0x

История и различия при декодировании подробнее разобраны в статье Base64 и Base64URL.

Зачем URL свой алфавит

Каждый из трёх стандартных символов что-то значит в URL. / разделяет сегменты пути, = отделяет имена от значений в query-строке, а + декодеры форм читают как пробел. Стандартное значение Base64 вроде a+b/c== в параметре запроса придёт как a b/c==, если не экранировать каждый символ. Percent-encoding это лечит, но превращает каждый из них в три символа (%2B, %2F, %3D).

Base64URL берёт два символа, которые в URL не зарезервированы, и отбрасывает дополнение, так что значение можно без изменений вставить в путь, query-строку, фрагмент, cookie или имя файла. - и _, в отличие от /, безопасны и в именах файлов на всех распространённых файловых системах.

Где используется Base64URL

  • JWT и JOSE. По RFC 7515 каждая часть JSON Web Token кодируется в Base64URL без дополнения. Токены читает декодер JWT, а структуру объясняет статья Base64 в JWT.
  • OAuth PKCE. code_challenge содержит SHA-256-хеш code_verifier в Base64URL.
  • WebAuthn и passkeys. ID учётных данных и challenge передаются в JSON как Base64URL.
  • Ссылки и ID. Ссылки «поделиться», подписанные параметры URL и короткие ID из случайных байтов используют его, чтобы не требовать экранирования в URL.

Base64URL в коде

В Node.js есть встроенная кодировка base64url, а в Python есть URL-safe функция, но дополнение у её результата нужно отрезать самостоятельно:

// Node.js
Buffer.from("subjects?_d").toString("base64url");   // "c3ViamVjdHM_X2Q"

// Browsers with Uint8Array.prototype.toBase64
new TextEncoder().encode("subjects?_d").toBase64({ alphabet: "base64url", omitPadding: true });
import base64, hashlib

base64.urlsafe_b64encode(b"subjects?_d").rstrip(b"=").decode()   # 'c3ViamVjdHM_X2Q'

# PKCE code_challenge, example from RFC 7636 appendix B
verifier = "dBjftJeZ4CVP-mB92K27uhbUJU1p1r_wW1gFWFOEjXk"
digest = hashlib.sha256(verifier.encode("ascii")).digest()
base64.urlsafe_b64encode(digest).rstrip(b"=").decode()
# 'E9Melhoa2OwvFrEMTJguCHaoeK1t8URWbuGJSstw-cM'

Подробнее в статьях Base64 в Node.js, JavaScript и Python, а браузерный API описан в статье Uint8Array.toBase64.

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

Что такое Base64URL?

Вариант Base64, безопасный для URL и имён файлов, из раздела 5 RFC 4648. Последние два символа его алфавита заменены: - и _ вместо + и /, а дополнение = обычно не пишут.

Чем Base64URL удобнее percent-кодирования обычного Base64?

После percent-кодирования каждый +, / и = занимает три символа, а если экранирование забыли, + при разборе query-строки станет пробелом. В Base64URL нет + и /, а дополнение обычно опускают.

Оставлять ли дополнение =?

JWT и большинство URL-safe форматов его опускают: = в URL тоже приходится экранировать, а декодер и так вычисляет дополнение по длине. Оставляйте его, только если этого требует принимающая система; в таком случае снимите флажок Без дополнения (=).

Как сделать code_challenge для PKCE?

Захешируйте code_verifier через SHA-256 и закодируйте 32 байта хеша в Base64URL без дополнения. Эта страница кодирует текст, а не байты хеша, поэтому делайте это в коде; фрагмент ниже воспроизводит пример из RFC 7636.