Encode ke Base64
Teks, gambar, atau file apa pun — diubah menjadi Base64 dengan benar. Huruf beraksen dan emoji tetap utuh, sesuatu yang tidak mampu dilakukan implementasi satu baris yang biasa. Tidak ada yang disimpan.
- Tidak pernah disimpan
- Tanpa antre, tanpa menunggu
- Tanpa daftar, tanpa watermark
Teks di-encode sebagai UTF-8, jadi huruf beraksen dan emoji tetap utuh.
Base64 akan muncul di sini.
Cara kerjanya
Tempel teks atau letakkan file
Teks di-encode sebagai UTF-8. File di-encode byte demi byte, dan tidak pernah disimpan.
Pilih jenisnya
Base64 standar, Base64URL yang aman untuk URL untuk token dan query string, atau data URI lengkap yang siap ditempel ke CSS atau tag <img>.
Salin hasilnya
Salin hasilnya, atau unduh sebagai file teks jika ukurannya besar.
Mengapa ukurannya bertambah tepat sepertiga
Base64 mengambil tiga byte sekaligus dan menuliskannya sebagai empat karakter, masing-masing membawa enam bit dari dua puluh empat. Empat dibagi tiga — dari situlah angka 33 persen yang terkenal itu berasal. Ini soal aritmetika, bukan inefisiensi, dan tidak ada encoder yang bisa lebih baik selama tetap memakai karakter yang bisa dicetak. Jika data tidak habis dibagi tiga, kelompok terakhir diberi padding dan ditandai dengan satu atau dua tanda =, dan itulah sebabnya panjang string base64 selalu kelipatan empat.
Ada dua alfabet, dan salah memilih adalah masalah paling umum yang dibawa orang ke sini. Alfabet standar diakhiri dengan + dan /, dan keduanya punya makna di URL — tanda plus menjadi spasi di query string dan garis miring terlihat seperti pemisah path. Varian yang aman untuk URL memakai - dan _ sebagai gantinya, dan itulah yang dipakai JSON Web Token, nama file, dan apa pun yang muncul di alamat. Selain itu keduanya identik, dan nilai yang di-encode dengan satu alfabet lalu di-decode dengan alfabet lain akan gagal dengan cara yang tampak seperti data rusak.
Pemisahan baris adalah detail lain yang bergantung pada konteks. Lampiran email mengharapkan baris sepanjang 76 karakter, sertifikat dan kunci PEM mengharapkan 64, sedangkan data URI atau field JSON sama sekali tidak mengharapkan pemisah baris. Opsi ini nonaktif secara default di sini karena tanpa pemisahan kini adalah kasus yang umum; aktifkan jika tujuannya header email atau blok -----BEGIN-----, yang akan menolak satu baris yang sangat panjang.
Base64 bukan enkripsi dan sama sekali tidak memberi perlindungan. Ini hanya pergantian alfabet — siapa pun bisa membaliknya seketika, dan setiap pemindai keamanan melakukannya secara otomatis. Tujuannya adalah memindahkan data biner melalui saluran yang hanya menerima teks: isi email, field JSON, dokumen XML, data URI di stylesheet. Memakainya untuk menyembunyikan kata sandi di konfigurasi tidak menyamarkan apa pun dari siapa saja yang melihatnya.
Jika Anda butuh hal lain
Di command line, base64 -w 0 file.bin meng-encode tanpa pemisahan baris di Linux dan base64 biasa melakukan hal yang sama di macOS, sedangkan openssl base64 -A bekerja sama persis di mana saja. Untuk alfabet yang aman untuk URL, basenc --base64url adalah yang melakukannya dengan benar tanpa langkah penggantian karakter.
Untuk file besar, semua yang ada di sini adalah pendekatan yang salah — seluruh file disimpan di memori, dan encoding memperbesarnya sepertiga sebelum hal lain terjadi. Alat command line memprosesnya secara streaming, dan di kode, setiap bahasa punya encoder inkremental. Perlu juga ditanyakan apakah base64 benar-benar dibutuhkan: mengirim data biner sebagai multipart/form-data atau sebagai body mentah menghindari masalah memori sekaligus tambahan 33 persen itu.
Pertanyaan yang sering diajukan
Apakah teks atau file saya disimpan di suatu tempat?
Tidak. Tidak ada yang disimpan, tidak ada yang dicatat, dan tidak ada server yang pernah melihatnya — dan alat ini tetap berfungsi saat jaringan terputus. Untuk alat seperti ini, hal itu bukan sekadar nilai tambah. Yang ditempel orang ke encoder dan decoder online sering kali masih aktif: token sesi, API key, header Authorization, data pelanggan. Menempelkan salah satunya ke halaman yang mengirimkannya ke suatu tempat berarti membocorkannya, apa pun janji situs itu soal penghapusan.
Mengapa huruf beraksen dan emoji berfungsi di sini?
Karena teks diubah menjadi byte UTF-8 sebelum di-encode, dan itulah urutan yang benar — langkah yang dilewati kebanyakan implementasi instan. `btoa` bawaan browser sama sekali tidak bisa menerima teks — fungsi ini menerima satu byte per karakter, jadi `btoa("café")` langsung menghasilkan error. Solusi yang banyak dipakai, `btoa(unescape(encodeURIComponent(s)))`, berfungsi secara kebetulan dan gagal pada emoji serta karakter lain di luar rentang dasar. Halaman ini meng-encode UTF-8 dengan benar, satu kali, sehingga 日本語 dan 🎉 tetap utuh dan ter-decode kembali dengan identik.
Apa itu Base64URL dan kapan saya membutuhkannya?
Base64URL adalah Base64 dengan dua karakter yang ditukar: + menjadi -, / menjadi _, dan padding = di akhir dihilangkan. Varian ini ada karena +, /, dan = semuanya punya makna di URL, sehingga Base64 biasa rusak saat dibawa di query string atau path. JWT, token OAuth, dan apa pun di dalam URL memakai Base64URL. Jika hasilnya akan Anda masukkan ke link, pilih yang ini.
Apakah Base64 mengenkripsi atau melindungi sesuatu?
Tidak, dan hal ini perlu dikatakan terus terang. Base64 adalah encoding, bukan enkripsi — tidak ada kunci dan tidak ada rahasia. Siapa pun yang melihat string-nya bisa men-decode-nya dalam satu langkah, termasuk di situs ini. Base64 ada untuk membawa data biner dengan aman melalui saluran yang hanya menerima teks, seperti lampiran email dan data URI. Jika sesuatu harus dirahasiakan, yang dibutuhkan adalah enkripsi; Base64 sama sekali tidak memberi perlindungan.
Mengapa Base64-nya lebih besar dari file saya?
Sekitar 33% lebih besar, selalu. Base64 menuliskan setiap 3 byte sebagai 4 karakter teks, jadi ukurannya memang bertambah sepertiga, ditambah sedikit padding. Itulah harga mengubah data biner menjadi teks, dan itulah sebabnya menyematkan gambar besar sebagai data URI di CSS biasanya bukan pilihan yang menguntungkan.
Bisakah saya meng-encode gambar sebagai data URI?
Bisa — letakkan gambarnya dan pilih “Data URI”. Anda mendapatkan string `data:image/png;base64,…` lengkap dengan media type yang sudah terisi dengan benar, siap ditempel ke stylesheet, tag <img>, atau template email.
Apakah ada batas ukuran?
Hanya memori yang tersedia, bukan batas ukuran tetap, dan batasnya longgar — file berukuran banyak megabyte bisa di-encode dengan lancar. Encoding dilakukan per bagian justru untuk menangani file besar; implementasi yang sederhana akan crash di sekitar 125 KB dengan pesan “Maximum call stack size exceeded”, bug yang ada di banyak sekali encoder online.
Perlu diketahui: Base64 membuat data sekitar 33% lebih besar — itu sifat formatnya, bukan kesalahan. File dibaca utuh ke memori, jadi file yang sangat besar bisa menghabiskan memori tab di ponsel sebelum selesai. Pemisahan baris nonaktif secara default; format email dan PEM mengharapkannya aktif.
Pasang alat ini di situs Anda
Gratis untuk blog, halaman kelas, atau artikel bantuan apa pun. Tempel satu potong kode dan pengunjung Anda bisa langsung memakainya di halaman Anda.