Как закодировать и раскодировать Base64
Короткий ответ
btoa() кодирует строку в Base64, atob() раскодирует обратно:
const encoded = btoa('Hello, world');
console.log(encoded);
console.log(atob(encoded));Результат:
SGVsbG8sIHdvcmxk
Hello, worldЛюбые буквы
btoa() работает только с символами Latin-1. Для другого текста сначала превратите строку в байты через TextEncoder:
const toBase64 = (text) => btoa(String.fromCharCode(...new TextEncoder().encode(text)));
const fromBase64 = (base64) => new TextDecoder().decode(Uint8Array.from(atob(base64), (char) => char.charCodeAt(0)));
const encoded = toBase64('Привет 👋');
console.log(encoded);
console.log(fromBase64(encoded));Результат:
0J/RgNC40LLQtdGCIPCfkYs=
Привет 👋Base64 для URL
Символы +, / и = имеют значение в адресах. Безопасный для URL вариант заменяет их:
const base64url = btoa('subjects?_d').replaceAll('+', '-').replaceAll('/', '_').replace(/=+$/, '');
console.log(btoa('subjects?_d'));
console.log(base64url);Результат:
c3ViamVjdHM/X2Q=
c3ViamVjdHM_X2QЧастая ошибка
Base64 — не шифрование. Раскодировать его может кто угодно, поэтому прятать так пароли и секреты нельзя:
console.log(atob('cGFzc3dvcmQxMjM='));Результат:
password123