TL;DR: Gunakan alat Base64 Encoder dan Decoder online gratis untuk encode teks ke Base64 atau decode Base64 ke teks secara aman di browser. Semua pengolahan data dieksekusi 100% Client-Side tanpa pernah dikirimkan ke server.
Ikuti alur penggunaan alat pengodean dan pemecahan teks Base64 berikut:
Base64 adalah skema pengodean biner-ke-teks (*binary-to-text encoding*) yang mempresentasikan data biner dalam format string ASCII. Standar ini menggunakan kumpulan 64 karakter terlindung untuk mentransfer data secara aman melalui media yang dirancang khusus untuk menangani teks.
Pada sistem komputer lama atau protokol pengiriman pesan seperti email (SMTP/MIME), karakter biner mentah (seperti gambar, file zip, atau simbol non-ASCII) sering kali mengalami kerusakan akibat penafsiran ulang oleh perantara jaringan (*network routers/mail gateways*). Base64 memecahkan masalah ini dengan mengodekan setiap biner menjadi himpunan karakter teks yang aman.
data:image/png;base64,...) tanpa perlu melakukan HTTP request tambahan.Authorization: Basic dXNlcm5hbWU6cGFzc3dvcmQ=).=) di bagian akhir jika jumlah byte tidak habis dibagi 3.Prinsip kerja Base64 berlandaskan pemetaan biner 24-bit (3 byte 8-bit) menjadi 4 kelompok 6-bit (masing-masing bernilai antara 0 hingga 63):
| Tahapan Operasi | Karakter 1 ('M') | Karakter 2 ('a') | Karakter 3 ('n') |
|---|---|---|---|
| ASCII Biner 8-bit | 01001101 | 01100001 | 01101110 |
| Gabungan 24-Bit Stream | 01001101 01100001 01101110 | ||
| Pembagian 4 Blok 6-Bit | 010011 (19) | 010110 (22) | 000101 (5) / 101110 (46) |
| Keluaran Base64 String | "TWFu" | ||
btoa() di JavaScript secara native hanya mendukung karakter Latin-1 (0-255). Untuk mengodekan karakter multibyte UTF-8 (seperti emoji 🚀 atau abjad non-Latin), gunakan kombinasi modern TextEncoder / TextDecoder API atau helper btoa(unescape(encodeURIComponent(str))) untuk menghindari DOMException: The string to be encoded contains characters outside of the Latin1 range.Ketika Anda mencoba mengodekan string yang mengandung simbol UTF-8 atau emoji dengan btoa('Halo 🚀') di JavaScript, peramban akan melempar kesalahan Uncaught DOMException: Failed to execute 'btoa' on 'Window': The string to be encoded contains characters outside of the Latin1 range. Berikut dua kode solusi terbaiknya:
Mengonversi string UTF-8 menjadi Uint8Array biner sebelum dipetakan ke Base64:
// Function UTF-8 Safe Base64 Encode
function utf8ToBase64(str) {
const bytes = new TextEncoder().encode(str);
const binString = Array.from(bytes, (b) => String.fromCharCode(b)).join("");
return btoa(binString);
}
// Function UTF-8 Safe Base64 Decode
function base64ToUtf8(base64) {
const binString = atob(base64);
const bytes = Uint8Array.from(binString, (m) => m.charCodeAt(0));
return new TextDecoder().decode(bytes);
}
// Contoh Penggunaan:
const encoded = utf8ToBase64("InfoKoding 🚀 Belajar Web");
console.log(encoded); // "SW5mb0tvZGluZyDwn5qAIEJlbGFqYXIgV2Vi"
Mengodekan karakter UTF-8 menjadi persen-escaped bytes sebelum dipadatkan oleh btoa():
// Encode String UTF-8
function safeBtoa(str) {
return btoa(unescape(encodeURIComponent(str)));
}
// Decode String UTF-8
function safeAtob(base64Str) {
return decodeURIComponent(escape(atob(base64Str)));
}
// Contoh Penggunaan:
const res = safeBtoa("Halo Dunia 🌍");
console.log(res); // "SGFsbyBEdW5pYSDwn4yE"
data:image/png;base64,...), header Basic Authentication HTTP (Authorization: Basic ...), serta pengiriman kredensial sensitif.Berikut adalah contoh implementasi praktis penggunaan Base64 dalam pemrograman web:
// Input Teks:
InfoKoding
// Hasil Base64 Encode:
SW5mb0tvZGluZw==
<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mNk+M9QDwADhgGAWjR9awAAAABJRU5ErkJggg==" alt="Dot" />
Bukan. Base64 adalah skema encoding (pengformatan biner ke teks), bukan enkripsi. Base64 tidak menggunakan kunci rahasia (secret key), sehingga siapa pun dapat melakukan dekode string Base64 kembali ke bentuk aslinya dalam waktu singkat.
Sangat aman. Semua proses pengodean (btoa()) dan pemecahan (atob()) dieksekusi 100% langsung di browser Anda menggunakan JavaScript murni (Client-Side). Teks tidak pernah dikirimkan atau disimpan di server InfoKoding.
Karakter sama dengan (=) adalah padding (pengganjal). Algoritma Base64 membutuhkan blok data kelipatan 4 karakter. Jika panjang input biner tidak habis dibagi 3 byte, karakter = atau == ditambahkan di akhir string untuk melengkapi panjang blok.
Ukuran data yang di-encode ke Base64 akan membengkak sekitar 33% lebih besar dibandingkan ukuran aslinya. Hal ini terjadi karena setiap 3 byte data biner (24-bit) dikonversi menjadi 4 byte karakter ASCII (4x8-bit).