UltKit
Зображення11
PDF13
Документи й дані7
Відео6
Аудіо4
Інші інструменти22

Base64: кодування й декодування

Перетворіть текст або файл на Base64 чи декодуйте Base64 назад у читабельний текст. Unicode обробляється коректно, URL-безпечний алфавіт вмикається одним кліком, а декодування приймає будь-який з двох алфавітів із доповненням або без нього.

Режим

0 символів · 0 слів · 0 рядків

0 символів · 0 слів · 0 рядків

Працює повністю у вкладці браузера. Ваш текст ніколи не завантажується на сервер і не зберігається.

Алфавіт Base64

Індекс → символ за RFC 4648. Виділені останні два відрізняються у варіанті для URL: 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 залишається без доповнення.

Вхідні даніБайтиСтандартнийДля URLДовжина
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), URL-адреси data: у HTML і CSS, поля JSON із зображеннями чи сертифікатами та заголовки HTTP Basic-автентифікації використовують Base64, щоб безпечно передавати двійкові дані. Це не шифрування і нічого не приховує: для декодування ключ не потрібен.

Unicode і URL-безпечний варіант

Base64 кодує байти, а не літери, тож текст спершу потрібно перетворити на байти. Цей інструмент завжди використовує UTF-8, кодування, на якому працює веб: é стає двома байтами, а емодзі — чотирма. Вбудована в браузер функція btoa сама видає помилку на будь-якому символі вище U+00FF, тому прості кодувальники ламаються на наголошених літерах і емодзі; тут текст спочатку проходить через TextEncoder, а декодування виконує зворотну дію через TextDecoder. Якщо декодовані байти не є коректним UTF-8 (зображення, zip-файл), інструмент показує їх у шістнадцятковому вигляді замість нечитабельного тексту.

Стандартний Base64 використовує + і /, які мають особливе значення в URL та іменах файлів. URL-безпечний алфавіт із розділу 5 RFC 4648 замінює їх на - і _, а доповнення зазвичай відкидають. Саме такий формат використовують JSON Web Tokens. Декодер приймає обидва алфавіти й відсутнє доповнення, тож можна вставляти будь-який варіант.

Кодування файлів і зображень

Виберіть файл, і інструмент прочитає його локально через FileReader та поверне його Base64 або повну URL-адресу data: з 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 та імена файлів без екранування.