UltKit
Изображения11
PDF13
Документы и данные7
Видео6
Аудио4
Другие инструменты22

Кодирование и декодирование Base64

Преобразуйте текст или файл в Base64 или декодируйте Base64 обратно в читаемый текст. Юникод обрабатывается корректно, URL-safe алфавит включается одним щелчком, а при декодировании принимается любой из двух алфавитов — с выравниванием или без него.

Режим

Символов: 0 · слов: 0 · строк: 0

Символов: 0 · слов: 0 · строк: 0

Всё работает в этой вкладке браузера. Ваш текст никуда не загружается и не сохраняется.

Алфавит Base64

Индекс → символ по RFC 4648. Два последних выделенных символа отличаются в варианте URL-safe: 62 — это + или -, 63 — / или _.

  1. 0A
  2. 1B
  3. 2C
  4. 3D
  5. 4E
  6. 5F
  7. 6G
  8. 7H
  9. 8I
  10. 9J
  11. 10K
  12. 11L
  13. 12M
  14. 13N
  15. 14O
  16. 15P
  17. 16Q
  18. 17R
  19. 18S
  20. 19T
  21. 20U
  22. 21V
  23. 22W
  24. 23X
  25. 24Y
  26. 25Z
  27. 26a
  28. 27b
  29. 28c
  30. 29d
  31. 30e
  32. 31f
  33. 32g
  34. 33h
  35. 34i
  36. 35j
  37. 36k
  38. 37l
  39. 38m
  40. 39n
  41. 40o
  42. 41p
  43. 42q
  44. 43r
  45. 44s
  46. 45t
  47. 46u
  48. 47v
  49. 48w
  50. 49x
  51. 50y
  52. 51z
  53. 520
  54. 531
  55. 542
  56. 553
  57. 564
  58. 575
  59. 586
  60. 597
  61. 608
  62. 619
  63. 62+ -
  64. 63/ _

Какой длины получается результат

Каждые 3 входных байта превращаются в 4 символа; последняя группа из 1 или 2 байтов дополняется знаками = в стандартном Base64 и остаётся без дополнения в варианте URL-safe.

Входные данныеБайтыСтандартныйURL-safeДлина
U1VQ==VQ4
Ul2VWw=VWw4
Ult3VWx0VWx04
UltK4VWx0Sw==VWx0Sw8
UltKi5VWx0S2k=VWx0S2k8
UltKit6VWx0S2l0VWx0S2l08

Что делает 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 и именах файлов без экранирования.