Кодирование и декодирование Base64
Преобразуйте текст или файл в Base64 или декодируйте Base64 обратно в читаемый текст. Юникод обрабатывается корректно, URL-safe алфавит включается одним щелчком, а при декодировании принимается любой из двух алфавитов — с выравниванием или без него.
Символов: 0 · слов: 0 · строк: 0
Символов: 0 · слов: 0 · строк: 0
Всё работает в этой вкладке браузера. Ваш текст никуда не загружается и не сохраняется.
Алфавит Base64
Индекс → символ по RFC 4648. Два последних выделенных символа отличаются в варианте URL-safe: 62 — это + или -, 63 — / или _.
- 0A
- 1B
- 2C
- 3D
- 4E
- 5F
- 6G
- 7H
- 8I
- 9J
- 10K
- 11L
- 12M
- 13N
- 14O
- 15P
- 16Q
- 17R
- 18S
- 19T
- 20U
- 21V
- 22W
- 23X
- 24Y
- 25Z
- 26a
- 27b
- 28c
- 29d
- 30e
- 31f
- 32g
- 33h
- 34i
- 35j
- 36k
- 37l
- 38m
- 39n
- 40o
- 41p
- 42q
- 43r
- 44s
- 45t
- 46u
- 47v
- 48w
- 49x
- 50y
- 51z
- 520
- 531
- 542
- 553
- 564
- 575
- 586
- 597
- 608
- 619
- 62+ -
- 63/ _
Какой длины получается результат
Каждые 3 входных байта превращаются в 4 символа; последняя группа из 1 или 2 байтов дополняется знаками = в стандартном Base64 и остаётся без дополнения в варианте URL-safe.
| Входные данные | Байты | Стандартный | URL-safe | Длина |
|---|---|---|---|---|
U | 1 | VQ== | VQ | 4 |
Ul | 2 | VWw= | VWw | 4 |
Ult | 3 | VWx0 | VWx0 | 4 |
UltK | 4 | VWx0Sw== | VWx0Sw | 8 |
UltKi | 5 | VWx0S2k= | VWx0S2k | 8 |
UltKit | 6 | VWx0S2l0 | VWx0S2l0 | 8 |
Что делает Base64
Base64, описанный в RFC 4648, записывает произвольные байты с помощью 64 печатных символов ASCII: A–Z, a–z, 0–9, + и /. Каждая группа из трёх байт (24 бита) делится на четыре 6-битных числа, и каждое число выбирает один символ алфавита. Если длина входных данных не кратна трём, последняя группа дополняется одним или двумя знаками =. Результат всегда примерно на 33% больше исходных данных: 4 символа на каждые 3 байта.
Он нужен, потому что многие каналы создавались для текста. Электронная почта (MIME), data: URL в HTML и CSS, поля JSON с изображениями или сертификатами и заголовки HTTP Basic-аутентификации используют Base64 для безопасной передачи двоичных данных. Это не шифрование, оно ничего не скрывает: для декодирования ключ не нужен.
Юникод и URL-safe вариант
Base64 кодирует байты, а не буквы, поэтому текст сначала нужно превратить в байты. Этот инструмент всегда использует UTF-8, кодировку, на которой работает веб: é превращается в два байта, а эмодзи в четыре. Встроенная функция браузера btoa сама по себе выдаёт ошибку на любом символе выше U+00FF, поэтому наивные кодировщики не справляются с акцентами и эмодзи; здесь текст сначала проходит через TextEncoder, а при декодировании выполняется обратное преобразование через TextDecoder. Если декодированные байты не являются корректным UTF-8 (изображение, zip-файл), инструмент покажет их в шестнадцатеричном виде вместо искажённого текста.
Стандартный Base64 использует + и /, которые имеют особое значение в URL и именах файлов. URL-безопасный алфавит из раздела 5 RFC 4648 заменяет их на - и _, а выравнивание обычно отбрасывается. Именно эту форму используют JSON Web Token. Декодер принимает оба алфавита и отсутствие выравнивающих символов, поэтому можно вставлять любой вариант.
Кодирование файлов и изображений
Выберите файл, и инструмент прочитает его локально через FileReader и вернёт его Base64 или готовый data: URL с MIME-типом файла, который можно вставить в тег img или в CSS-фон. Встроенные изображения экономят HTTP-запрос, но становятся на треть больше и не кэшируются отдельно, поэтому они подходят для небольших иконок, а не для фотографий. Для изображений с предпросмотром и готовыми фрагментами HTML и CSS используйте Изображение в Base64.
Часто задаваемые вопросы
- Почему результат в Base64 длиннее исходных данных?
- Каждые 3 байта превращаются в 4 символа, поэтому результат примерно в 4/3 раза больше исходных данных, плюс до двух символов выравнивания. Текст не на ASCII получается ещё длиннее, потому что UTF-8 использует от двух до четырёх байт на символ.
- Что означают знаки = в конце?
- Это выравнивание. Оно делает длину результата кратной четырём, когда длина входных данных не кратна трём. Один знак = означает, что в последней группе было два байта, два знака = означают, что был один байт.
- Почему при декодировании появляется ошибка о недопустимом символе?
- Во входных данных есть символ вне алфавита, например пробел внутри слова, кавычка или % из URL-кодирования. Переводы строк и отсутствие выравнивания допускаются, другие символы нет.
- Безопасно ли кодировать пароль в Base64?
- Base64 не даёт никакой защиты. HTTP Basic-аутентификация передаёт user:password в Base64, поэтому её можно использовать только по HTTPS. Для защиты секретов применяйте настоящее шифрование или хеширование.
- Чем Base64 отличается от Base64url?
- Отличаются только два символа и выравнивание: Base64url использует - и _ вместо + и / и обычно опускает =, поэтому результат можно размещать в URL и именах файлов без экранирования.