Кодировщик и декодер Base62

Преобразуйте текст, шестнадцатеричные байты или файлы в Base62 и обратно. Результат содержит только цифры и буквы, поэтому его можно без экранирования использовать в URL, именах файлов и идентификаторах.

Работает полностью в браузере. Данные никуда не загружаются.

Как пользоваться

  1. Выберите «Кодировать», чтобы превратить текст в Base62, или «Декодировать», чтобы получить текст из Base62.
  2. Выберите порядок алфавита, который используется в вашей системе: 0-9 A-Z a-z (по умолчанию) или 0-9 a-z A-Z.
  3. Введите или вставьте исходные данные либо откройте небольшой файл (примерно до 20 КБ).
  4. Скопируйте результат или скачайте его в виде файла.

Что такое Base62?

Base62 использует десять цифр, 26 заглавных и 26 строчных латинских букв. Это самый большой алфавит, состоящий только из букв и цифр, поэтому результат не нужно экранировать в URL, именах файлов, ключах баз данных и идентификаторах в коде. Каждый символ несёт около 5,95 бита, поэтому результат примерно в 1,34 раза больше исходных данных — почти так же компактно, как Base64, но без символов +, /, =, - и _.

Поскольку 62 не является степенью двойки, этот инструмент рассматривает все входные данные как одно большое число и переводит его в систему счисления с основанием 62, как в Base58 и Base36. Каждый ведущий нулевой байт записывается ведущим символом 0, чтобы он сохранился при обратном преобразовании. Объём входных данных ограничен примерно 20 КБ, потому что на больших данных вычисления замедляются.

Единого стандарта Base62 нет

В отличие от Base64, у Base62 нет RFC, а реализации различаются так, что их результаты несовместимы:

  • Порядок алфавита. Этот инструмент предлагает 0-9A-Za-z (по умолчанию) и 0-9a-zA-Z. В некоторых других библиотеках буквы стоят перед цифрами.
  • Ведущие нули. Одни реализации сохраняют по одному символу 0 на каждый ведущий нулевой байт, как этот инструмент, другие отбрасывают их, а форматы фиксированной длины дополняют результат до заданной ширины.
  • Что кодируется. Многие функции Base62 кодируют целое число, например идентификатор в базе данных, а не последовательность байтов. Другие разбивают данные на блоки фиксированного размера.

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

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

Сервисы сокращения ссылок превращают автоинкрементный идентификатор в короткий код: семь символов Base62 покрывают более 3,5 триллиона значений. Сортируемые идентификаторы, например KSUID, используют форму Base62 фиксированной длины в 27 символов, а многие сервисы применяют Base62 для API-ключей и токенов, потому что такую строку целиком выделяет двойной щелчок и её можно вставить куда угодно. Чтобы преобразовать отдельное целое число, воспользуйтесь конвертером систем счисления или несколькими строками кода:

// JavaScript: целое число (BigInt) в Base62
const A = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz';
function toBase62(n) {
  let s = '';
  do { s = A[Number(n % 62n)] + s; n /= 62n; } while (n > 0n);
  return s;
}
toBase62(123456789n);   // '8M0kX'

Спецификация

Алфавит0-9 A-Z a-z
Размер результатаОколо 134% (перевод большого числа)
ДополнениеНет
СтандартФормального стандарта нет
Учёт регистраДа

Примеры

Исходные данные (UTF-8)Результат
Hello, World!1wJfrzvdbtXUOlUjUf
Base64.isNWxjrFq4r3rv
你好19PqtKE1t

Часто задаваемые вопросы

Безопасен ли Base62 для URL?
Да. В нём используются только A-Z, a-z и 0-9, которые в URL никогда не требуют экранирования. Base64URL тоже безопасен для URL, но содержит символы - и _.
Почему моя строка Base62 декодируется в неправильный текст?

Реализации Base62 различаются порядком алфавита и методом. Попробуйте переключиться между алфавитами 0-9A-Za-z и 0-9a-zA-Z. Если не подходит ни один, строка, вероятно, получена из целого числа или другим алгоритмом.

Учитывает ли Base62 регистр букв?

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

Что выбрать: Base62 или Base58?
В Base58 нет символов 0, O, I и l, чтобы люди не путали их при ручном копировании. Base62 сохраняет все буквы и цифры и даёт немного более короткий результат. Выбирайте Base58 для строк, которые вводят люди, и Base62 для строк, которые обрабатывают программы.