Base64: кодування й декодування
Перетворіть текст або файл на Base64 чи декодуйте Base64 назад у читабельний текст. Unicode обробляється коректно, URL-безпечний алфавіт вмикається одним кліком, а декодування приймає будь-який з двох алфавітів із доповненням або без нього.
0 символів · 0 слів · 0 рядків
0 символів · 0 слів · 0 рядків
Працює повністю у вкладці браузера. Ваш текст ніколи не завантажується на сервер і не зберігається.
Алфавіт Base64
Індекс → символ за RFC 4648. Виділені останні два відрізняються у варіанті для URL: 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 залишається без доповнення.
| Вхідні дані | Байти | Стандартний | Для URL | Довжина |
|---|---|---|---|---|
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), 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 та імена файлів без екранування.