Kembali ke Kumpulan Developer Tools Online InfoKoding

Base64 Encoder & Decoder Online Gratis

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.

Panduan Penggunaan Base64 Encoder & Decoder

Key Takeaways: Gunakan tombol Encode untuk mengubah teks menjadi karakter Base64 yang aman ditransmisikan, dan gunakan tombol Decode untuk mengembalikan string Base64 ke bentuk teks semula.

Ikuti alur penggunaan alat pengodean dan pemecahan teks Base64 berikut:

  1. Tempel string teks biasa atau berkas mentah pada kolom Input di sebelah kiri.
  2. Klik tombol Encode untuk mengodekan teks ASCII/UTF-8 menjadi format Base64 RFC 4648.
  3. Klik tombol Decode jika Anda memiliki string berkode Base64 yang ingin dikembalikan menjadi teks asli.
  4. Klik ikon Copy di sudut kanan atas kolom Output untuk menyalin hasil keluaran secara instan.

Apa itu Base64 Encoding & Decoding?

Key Takeaways: Base64 adalah teknik pengodean data biner atau string teks ASCII ke dalam 64 karakter terlindung (A-Z, a-z, 0-9, +, /) untuk mencegah korupsi transmisi data pada protokol jaringan seperti HTTP, Email (MIME), dan REST API.

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.

Definisi & Fungsi Utama Base64

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.

Mengapa Membutuhkan Base64 Encoding?

  • Pengiriman Gambar pada CSS / HTML (Data URI): Menyisipkan berkas gambar kecil secara langsung di dalam dokumen HTML/CSS (data:image/png;base64,...) tanpa perlu melakukan HTTP request tambahan.
  • Basic Authentication Header: Mengirimkan gabungan username dan password pada header HTTP API (Authorization: Basic dXNlcm5hbWU6cGFzc3dvcmQ=).
  • Enkapsulasi Payload Webhook / JSON: Menjamin file biner di dalam string JSON tidak terdistorsi oleh karakter kutip atau backslash.

Cara Kerja Algoritma Base64 (6-Bit Index)

Key Takeaways: Algoritma Base64 membagi data biner 8-bit menjadi blok 6-bit, lalu memetakan nilai indeks (0-63) ke dalam tabel karakter RFC 4648 dengan karakter padding sama dengan (=) 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"

Solusi Error 'btoa character out of range' pada Karakter UTF-8 JavaScript

Key Takeaways: Fungsi bawaan 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:

1. Metode Modern: TextEncoder API (Rekomendasi ES6+)

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"

2. Metode Legasi: encodeURIComponent() & unescape()

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"

Contoh Penggunaan Base64 pada Pengkodean Teks & Data URI

Key Takeaways: Base64 digunakan pada enkapsulasi Data URI gambar (data:image/png;base64,...), header Basic Authentication HTTP (Authorization: Basic ...), serta pengiriman kredensial sensitif.

Berikut adalah contoh implementasi praktis penggunaan Base64 dalam pemrograman web:

Teks Biasa ke Base64
// Input Teks:
InfoKoding

// Hasil Base64 Encode:
SW5mb0tvZGluZw==
Data URI Gambar Inline
<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mNk+M9QDwADhgGAWjR9awAAAABJRU5ErkJggg==" alt="Dot" />

FAQ: Pertanyaan yang Sering Diajukan Seputar Base64

Apakah Base64 adalah bentuk enkripsi keamanan?

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.

Apakah data saya aman saat di-encode atau di-decode di InfoKoding?

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.

Mengapa hasil Base64 terkadang diakhiri karakter '=' atau '=='?

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.

Berapa pembengkakan ukuran file setelah di-encode ke Base64?

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).

Rusmawan Abdullah Sani
Ditinjau oleh Tim Pengembang InfoKoding Rusmawan Abdullah Sani
Terverifikasi Client-Side Safe