Initializing, please wait a moment

Base64 - Kapan Menggunakan Dan Kapan Tidak

Terakhir ditinjau 2026-04-27. Buka Base64 to Image atau Image to Base64 untuk konversi di-browser.

Jawaban 30 detik. Base64 membuat data biner aman teks dengan menyandikan tiga byte sebagai empat karakter ASCII. Biayanya: peningkatan ukuran 33%. Panggilan tepat untuk aset inline kecil dalam data URL HTML/CSS (ikon di bawah beberapa KB), lampiran email dalam MIME, dan payload JSON yang membawa biner. Panggilan salah untuk apa pun di atas beberapa kilobyte - penalti ukuran terasa dan jalur biner nyata lebih cepat.

See pohon keputusan: pilih ya untuk ikon inline kecil dan payload JSON biner; pilih tidak untuk gambar besar, data sensitif, atau penyimpanan BLOB basis data
Pilih cabang inline untuk tujuan kecil hanya-teks; pilih cabang biner ketika payload besar atau sensitif.

Apa yang sebenarnya dilakukan base64

Ambil tiga byte input biner - 24 bit. Kelompokkan sebagai empat potongan 6-bit. Petakan setiap potongan 6-bit ke salah satu dari 64 karakter ASCII (A-Z, a-z, 0-9, +, /). Output sekarang aman untuk dimasukkan dalam tubuh email, URL, string JSON, atau file sumber JavaScript - tidak satupun yang menangani biner mentah dengan bersih.

Harganya adalah ekspansi pengkodean: setiap 3 byte masuk menjadi 4 byte keluar. Ditambah padding (tanda "=" di akhir) untuk input yang panjangnya bukan kelipatan 3. Matematikanya tepat: ukuran terenkode = atap(input/3) * 4 byte.

Panggilan tepat: biner kecil inline dalam protokol teks

See empat kasus valid Base64: gambar inline di bawah 4 KB, lampiran email, biner dalam JSON, dan parameter URL.
Gunakan Base64 saat tujuan hanya menerima teks dan payload kecil.
  • Gambar kecil inline. Ikon 1 KB dalam data URL di dalam CSS menghindari permintaan HTTP terpisah. Pembengkakan 33% berharga 300 byte; permintaan yang disimpan berharga setidaknya 1 RTT plus header. Di bawah ~4 KB, inline menang. Di atas itu, file terpisah dengan multiplexing HTTP/2 lebih cepat.
  • Lampiran email. SMTP dan tubuh email adalah ASCII 7-bit menurut tradisi. MIME membungkus lampiran biner dalam base64 khusus untuk menyesuaikan dengan protokol. Anda hampir tidak pernah melihat ini secara langsung - klien email mengkode dan mendekodekan secara otomatis.
  • Biner dalam JSON. JSON hanya menyimpan string, angka, boolean, array, dan objek. Untuk meletakkan biner dalam field JSON, Anda base64-kan. API yang mengembalikan byte gambar dalam JSON, token OAuth dengan tanda tangan biner, dan protobuf-over-JSON semuanya menggunakan pola ini.
  • Parameter URL dengan biner. Base64 aman URL (menggunakan - dan _ sebagai ganti + dan /) memungkinkan Anda meletakkan pengidentifikasi biner pendek dalam string kueri tanpa pengkodean persen.

Panggilan salah: payload besar atau enkripsi palsu

See empat anti-pola Base64: gambar besar di CSS, enkripsi palsu, file di database, transfer data besar.
Hindari Base64 untuk payload besar, data sensitif, penyimpanan database, atau transfer volume tinggi.
  • Menyematkan gambar besar dalam CSS atau HTML. Foto 500 KB sebagai data URL menjadi 670 KB base64 plus overhead parser, plus tidak dapat di-cache secara terpisah, plus memblokir parser. Cukup tautkan file gambar.
  • "Mengkode" data sensitif. Base64 dapat dibalik oleh siapa saja. Ini adalah pengkodean, bukan enkripsi. Melewatkan kata sandi atau kunci API melalui base64 tidak mengaburkan apa pun - dekode adalah satu klik.
  • Menyimpan file dalam basis data. Sebagian besar basis data memiliki tipe biner asli (BLOB, BYTEA). Menyimpan biner sebagai base64 dalam kolom TEXT membuang 33% disk dan memaksa dekode pada setiap pembacaan.
  • Transfer data jangka panjang. Jika biner multi-megabyte, setiap byte overhead penting. Streaming biner langsung dengan header Content-Type yang tepat.

Alat dan aturan keputusan

Konversi di browser - Image to Base64 untuk keluar, Base64 to Image untuk masuk. Keduanya bekerja tanpa mengunggah file.

Aturan keputusan sederhana: di bawah 4 KB dan tujuan ramah inline -> base64 baik-baik saja. Di atas itu atau di mana pun dengan jalur biner nyata tersedia -> gunakan jalur biner. Set pengembang lengkap ada di hub alat pengembang.

Tentang ambang 4 KB

Aturan praktis 4 KB adalah heuristik era HTTP/1.1 untuk gambar inline dalam data URL CSS - pada HTTP/1.1 setiap permintaan terpisah membayar sekitar 1 RTT plus overhead header, jadi di bawah 4 KB gambar inline lebih murah daripada permintaan kedua bahkan dengan ekspansi 33 persen base64. Pada HTTP/2 dan HTTP/3 biaya permintaan turun (kompresi header, multiplexing pada satu koneksi), dan titik impas bergeser ke atas: file terpisah lebih cepat lebih awal. Aturan keputusan tetap dalam bentuk - biner kecil inline dalam tujuan teks adalah panggilan tepat; biner besar yang memiliki jalur biner nyata adalah panggilan salah - hanya ambang yang tepat bergerak dengan protokol yang mendasarinya.

Bacaan terkait: Base64 Encoder untuk mengkode di browser; base64 encoder - kapan menggunakannya per skenario; base64 encoder vs alternatif dibandingkan URL encoding dan hex.