Base64 Encode & Decode

Encode teks ke Base64 atau decode Base64 kembali menjadi teks, dengan dukungan UTF-8 penuh dan opsi URL-safe.

Berjalan 100% di browser Anda. Apa pun yang Anda tempel tidak diunggah atau disimpan.
Teks atau Base64
Hasil
Siap.

Cara menggunakan encoder dan decoder Base64

  1. Pilih Encode untuk mengubah teks menjadi Base64, atau Decode untuk mengubah Base64 kembali menjadi teks.
  2. Tempelkan input Anda. Teks diperlakukan sebagai UTF-8, sehingga huruf beraksen, aksara non-Latin, dan emoji berfungsi dengan benar.
  3. Aktifkan opsi URL-safe jika hasilnya akan dimasukkan ke URL, nama file, atau JWT.
  4. Salin outputnya.

Proses encode dan decode berlangsung secara lokal di browser Anda; apa pun yang Anda tempelkan tidak diunggah atau disimpan.

Cara kerja Base64

Base64, yang didefinisikan dalam RFC 4648, merepresentasikan data biner apa pun menggunakan 64 karakter ASCII yang dapat dicetak: A–Z, a–z, 0–9, +, dan /. Format ini ada agar konten biner dapat melewati sistem yang dirancang untuk teks dengan aman, seperti email, JSON, XML, dan header HTTP.

Algoritmenya mengambil input 3 byte (24 bit) sekaligus dan membaginya menjadi empat kelompok 6 bit. Setiap nilai 6 bit (0–63) memilih satu karakter dari alfabet. Kata Man menunjukkan prosesnya:

LangkahNilai
ByteM=77, a=97, n=110
24 bit01001101 01100001 01101110
Kelompok 6 bit010011 010110 000101 101110 = 19, 22, 5, 46
Base64TWFu

Karena setiap 3 byte menjadi 4 karakter, output Base64 sekitar 33% lebih besar daripada input (ditambah jeda baris, jika format seperti MIME menyisipkannya).

Padding dengan =

Jika panjang input bukan kelipatan tiga, kelompok terakhir diberi padding. Satu byte sisa menghasilkan dua karakter ditambah ==; dua byte sisa menghasilkan tiga karakter ditambah =. Misalnya, Hi di-encode menjadi SGk=.

Base64 URL-safe

Karakter standar + dan / memiliki arti khusus di URL dan path file. RFC 4648 §5 mendefinisikan alfabet base64url, yang menggantinya dengan - dan _. Padding sering dihilangkan. JSON Web Token menggunakan base64url tanpa padding.

Standar:   +/8=
URL-safe:  -_8

Kesalahan umum

Base64 bukan enkripsi

Siapa pun dapat men-decode Base64 seketika; tidak diperlukan kunci. Jangan pernah menggunakannya untuk "menyembunyikan" kata sandi atau API key. Untuk pemeriksaan integritas, gunakan hash dari generator hash, dan untuk kerahasiaan, gunakan enkripsi yang sesungguhnya.

UTF-8 di JavaScript

Fungsi bawaan browser btoa() hanya menerima karakter dalam rentang Latin-1 dan memunculkan error untuk karakter lainnya. Ubah dulu teksnya menjadi byte UTF-8:

btoa("✓");   // InvalidCharacterError

const bytes = new TextEncoder().encode("✓");
btoa(String.fromCharCode(...bytes));   // "4pyT"

Mencampur alfabet

Men-decode data base64url dengan decoder standar yang ketat akan gagal pada - dan _, atau pada padding yang hilang. Konversikan alfabetnya dan tambahkan kembali padding hingga kelipatan empat karakter sebelum men-decode.

Di mana Anda akan menjumpai Base64

  • Data URI menyematkan file kecil langsung di HTML atau CSS: data:image/png;base64,iVBORw0KGgo...
  • Autentikasi HTTP Basic mengirim username:password yang di-encode dalam Base64. user:pass menjadi Authorization: Basic dXNlcjpwYXNz, yang sangat mudah di-decode kembali, sehingga Basic auth hanya boleh digunakan melalui HTTPS. Anda dapat memeriksa header seperti itu dengan cek header HTTP.
  • Lampiran email (MIME) serta sertifikat dan kunci PEM.
  • JWT, yang header dan payload-nya berupa JSON yang di-encode dengan base64url. Gunakan JWT decoder untuk membacanya.
Tips: Di command line, printf 'text' | base64 melakukan encode dan base64 -d melakukan decode (versi macOS lama menggunakan -D). Gunakan printf atau echo -n agar baris baru di akhir tidak ikut di-encode.

Pertanyaan yang sering diajukan

Mengapa string Base64 saya diakhiri = atau ==?

Itu adalah padding. Padding memberi tahu decoder berapa byte yang ada di kelompok terakhir ketika panjang input tidak habis dibagi tiga.

Apakah Base64 aman?

Tidak. Ini adalah encoding, bukan enkripsi. Encoding ini sama sekali tidak memberikan kerahasiaan; ia hanya membuat data biner aman untuk dikirim sebagai teks.

Mengapa output hasil encode lebih besar daripada input?

Setiap karakter Base64 membawa 6 bit, bukan 8, sehingga 3 byte input memerlukan 4 karakter output, dengan tambahan ukuran kira-kira sepertiga.

Apa bedanya Base64 dan base64url?

Hanya dua karakter yang berbeda: base64url menggunakan - dan _ sebagai pengganti + dan /, dan biasanya menghilangkan padding =, sehingga hasilnya dapat dimasukkan ke URL tanpa escaping tambahan.

Diperbarui

Tersalin ke clipboard