Загрузить файл
  1. base64hub
  2. Другие BaseN
  3. Base32

Кодировщик и декодер Base32 (RFC 4648)

Набирайте текст и сразу получайте Base32 по RFC 4648, с дополнением = или без. Переключите вывод на base32hex, Crockford или z-base-32 либо смените направление, чтобы декодировать.

Бесплатно без регистрации и ограничений Локально ничего не загружается 4 варианта RFC 4648, hex, Crockford, z-base-32 Обновлено 27 окт. 2026 г.
Ввод 0Байты 0 BРезультат 0

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

Как закодировать текст в Base32

  1. Введите или вставьте текст в поле Ввод · Текст. Если отмечено На лету, результат обновляется при каждом нажатии клавиши.
  2. Результат появляется в поле Результат · Base32 (RFC 4648). Снимите флажок Дополнение (=) под результатом, чтобы убрать завершающие знаки =.
  3. Для другого варианта откройте меню В и выберите Base32hex, Crockford Base32 или z-base-32.
  4. Чтобы декодировать, нажмите Base32 (RFC 4648) → Текст в переключателе направления. Отдельный декодер Base32 сразу открывается в этом направлении.
  5. Заберите результат кнопками Скопировать результат или Скачать.

По умолчанию текст превращается в байты в UTF-8. Если нужен Base32 того же текста в другой кодировке, например Windows-1252 или UTF-16LE, поменяйте Кодировка под полем ввода.

Как работает Base32

Base32 читает ввод по 5 бит и записывает по одному символу на каждые 5 бит. Пять байт (40 бит) превращаются ровно в восемь символов, так что результат на 60% больше ввода. У Base64 для тех же данных рост был бы 33%. Base32 платит размером за то, что обходится заглавными буквами и шестью цифрами.

Если длина ввода не кратна 5 байтам, последняя группа дополняется знаками = до 8 символов. Вот тестовые векторы из RFC 4648, полученные этим инструментом:

ВводBase32Без дополнения
fMY======MY
foMZXQ====MZXQ
fooMZXW6===MZXW6
foobMZXW6YQ=MZXW6YQ
foobaMZXW6YTBMZXW6YTB
foobarMZXW6YTBOI======MZXW6YTBOI

Дополнение не несёт данных. Декодер может вычислить число байтов по количеству настоящих символов, поэтому многие форматы его отбрасывают.

Варианты Base32: RFC 4648, base32hex, Crockford, z-base-32

Название «Base32» носит целое семейство кодировок. Все четыре варианта упаковывают 5 бит в символ и различаются алфавитом и наличием дополнения. Одни и те же пять байт, Hello, в каждом из них:

ВариантАлфавитHelloДополнениеГде встречается
Base32 по RFC 4648A–Z, 2–7JBSWY3DP=Секреты TOTP/2FA, onion-адреса Tor v3, IPFS CIDv1 (b…, нижний регистр)
Base32hex0–9, A–V91IMOR3F=Записи NSEC3 в DNSSEC; закодированные строки сортируются в том же порядке, что и байты
Crockford Base320–9, A–Z без I L O U91JPRV3FнетИдентификаторы, которые люди читают вслух и набирают
z-base-32ybndrfg8ejkmcpqxot1uwisza345h769jb1sa5dxнетКлючи и идентификаторы, рассчитанные на людей

Base32hex и Crockford похожи, но это разные алфавиты: после H они расходятся, так что 91IMOR3F и 91JPRV3F кодируют одни и те же байты. Если выбрать не тот, декодирование пройдёт без ошибки и молча даст другие байты.

Декодер Crockford прощает неточности так, как задумал Крокфорд: читает I и L как 1, O как 0 и пропускает дефисы, так что 91JP-RV3F всё равно даёт Hello. Необязательный контрольный символ Crockford он не добавляет и не проверяет.

Base32 для секретов TOTP и 2FA

Приложения-аутентификаторы получают секрет из ссылки otpauth://, которую обычно показывают в виде QR-кода:

otpauth://totp/Example:alice@example.com?secret=JBSWY3DPEHPK3PXP&issuer=Example

Параметр secret записан в Base32 по RFC 4648 без дополнения. В JBSWY3DPEHPK3PXP 16 символов, то есть 10 байт. RFC 4226 рекомендует 160-битный (20-байтный) секрет, а это 32 символа Base32. Если ваш секрет хранится в Base64 или hex, конвертируйте его через Base64 в Base32, а не вводите текст Base64 на этой странице. Если закодировать символы Base64 как текст, получится корректная строка Base32 от совсем других байтов, и каждый сгенерированный по ней код будет отвергнут.

Секрет TOTP и есть ключ: любой, у кого он есть, может генерировать ваши коды. Эта страница работает с секретом внутри вкладки браузера, а её Content Security Policy запрещает странице делать сетевые запросы, кроме счётчика просмотров Cloudflare.

Base32 в командной строке и в Python

В GNU coreutils есть команда base32, которая работает как base64:

printf 'Hello' | base32
printf 'JBSWY3DP' | base32 -d

Первая строка выводит JBSWY3DP, вторая – Hello. В стандартной библиотеке Python есть все три формы из RFC 4648:

import base64

base64.b32encode(b"Hello")                          # b'JBSWY3DP'
base64.b32hexencode(b"Hello")                       # b'91IMOR3F'
base64.b32encode(b"Hi").decode().rstrip("=")        # 'JBUQ'

Другие рецепты кодирования собраны на странице про Python. Декодирование, включая ошибки дополнения и регистра, которые выбрасывает Python, разобрано на странице декодера Base32.

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

Почему результат Base32 заканчивается на ======?

Base32 работает блоками по 5 байт, которые превращаются в 8 символов. Если последний блок короче, RFC 4648 заполняет оставшиеся символы знаками =, поэтому Hi превращается в JBUQ====. Снимите флажок Дополнение (=), если принимающей стороне нужен голый JBUQ.

Важен ли регистр в Base32?

Буквы в алфавите RFC 4648 только заглавные, но большинство декодеров, включая этот, принимают и строчные. Python строже: base64.b32decode отвергает строчные, если не передать casefold=True.

Что выбрать: Base32 или Base64?

Base64 подходит, когда данные читают только программы: он короче (рост на 33% против 60%). Base32 выбирают, когда значение читают, набирают или диктуют люди или когда оно должно пройти через системы без учёта регистра, например доменные имена или некоторые файловые системы.

Какие символы использует Base32?

Base32 по RFC 4648 использует A–Z и 2–7, плюс = для дополнения. Цифр 0, 1, 8 и 9 в нём нет, так что строка с ними записана в base32hex, в Crockford или вообще не в Base32.