tooly

Encoder dan decoder Base64

Ubah teks ke Base64 dan sebaliknya, atau ubah file apa pun menjadi data URI Base64 untuk disematkan. Unicode ditangani dengan benar dan semuanya berjalan lokal di browser.

Semuanya berjalan di browser Anda — tidak ada yang dikirim

Cara menggunakan

  1. 1

    Pilih Encode atau Decode.

  2. 2

    Ketik atau tempel teks, atau pilih file untuk di-encode.

  3. 3

    Salin hasilnya.

Untuk apa Base64

Base64 ada untuk memindahkan data biner melalui saluran yang dibuat untuk teks. Email, JSON, XML, atribut HTML, variabel lingkungan, dan header HTTP semuanya mengharapkan karakter yang bisa dicetak, dan banyak di antaranya rusak jika menerima byte mentah seperti null, line feed, atau nilai di atas 127. Base64 menulis ulang urutan byte apa pun hanya dengan 64 simbol aman: A–Z, a–z, 0–9, +, dan /, dengan = sebagai padding.

Tempat-tempat yang umum Anda temui:

  • Autentikasi HTTP Basic, di mana user:password dikirim sebagai dXNlcjpwYXNzd29yZA==.
  • JSON Web Token, yang ketiga bagiannya dipisahkan titik dan berupa Base64 URL-safe.
  • Lampiran email, yang dikirim sebagai Base64 di dalam pesan MIME.
  • Data URI yang menyematkan ikon atau font kecil langsung ke HTML atau CSS.
  • Payload API dan file konfigurasi yang perlu membawa sertifikat, kunci, atau blob biner kecil sebagai string.

Base64 adalah encoding, bukan enkripsi. Siapa pun bisa men-decode-nya dalam sedetik, jadi string Base64 di file konfigurasi tidak melindungi apa pun. Jika Anda perlu memastikan data tidak diubah, gunakan hash.

Cara kerja encoding

Encoder mengambil input tiga byte sekaligus, yaitu 24 bit, lalu membaginya menjadi empat kelompok 6 bit. Setiap nilai 6 bit dari 0 hingga 63 memilih satu karakter dari alfabet. Tiga byte masuk, empat karakter keluar, itulah sebabnya hasil Base64 selalu sekitar 33% lebih besar dari input: gambar 30 KB menjadi kira-kira 40 KB teks.

Jika panjang input bukan kelipatan tiga, kelompok terakhir menjadi pendek. Encoder mengisinya dan menandai celahnya dengan satu atau dua tanda =. Itu sebabnya Man di-encode menjadi TWFu, Ma menjadi TWE=, dan M menjadi TQ==.

Teks harus menjadi byte sebelum bisa di-encode, dan alat ini selalu memakai UTF-8 untuk langkah itu. Kata café berukuran lima byte dalam UTF-8 (é memakan dua), dan sebuah emoji memakan empat. Decoding menafsirkan byte sebagai UTF-8 lagi, sehingga teks dalam aksara apa pun kembali utuh tanpa perubahan.

Varian URL-safe

Dua karakter dari alfabet standar menimbulkan masalah di luar teks biasa. Di URL, + bisa dibaca sebagai spasi dan / sebagai pemisah path; di nama file, / sama sekali tidak diizinkan. Alfabet URL-safe yang didefinisikan di RFC 4648 menggantinya dengan - dan _.

Dengan kotak URL-safe dicentang, alat ini melakukan penggantian itu dan juga menghapus padding = di akhir, sesuai format yang diharapkan JWT dan sebagian besar API web. Decoder menerima kedua bentuk: ia mengubah - dan _ kembali dan memulihkan padding yang hilang secara otomatis, jadi Anda bisa langsung menempel segmen JWT dan membaca JSON-nya. Jika JSON itu muncul sebagai satu baris panjang, formatter JSON akan membuatnya mudah dibaca.

Meng-encode file sebagai data URI

Encode file… membaca file di browser Anda dan menghasilkan data URI lengkap seperti data:image/png;base64,iVBORw0KGgo…. Tipe MIME diambil dari yang dilaporkan browser untuk file tersebut; jika tidak bisa ditentukan, dipakai tipe generik application/octet-stream. Anda bisa menempel hasilnya ke <img src>, background-image: url(...) di CSS, atau aturan @font-face.

Data URI masuk akal untuk aset kecil: ikon SVG, gambar placeholder 1–2 KB, logo di tanda tangan email HTML. Untuk yang lebih besar justru merugikan. Teksnya sepertiga lebih besar dari file asli, tidak bisa di-cache terpisah dari halaman yang memuatnya, dan membengkakkan HTML atau CSS yang harus dimuat sebelum apa pun dirender. Batas praktisnya beberapa kilobyte per aset.

Seluruh file dibaca ke memori dan dikonversi sekaligus, jadi file yang sangat besar bisa membuat tab lambat atau kehabisan memori. File tidak diunggah ke mana pun.

Saat decoding gagal

Decoder menampilkan "Base64 tidak valid" jika input berisi karakter di luar alfabet atau panjangnya mustahil. Penyebab umum:

  • Awalan data URI. Hapus semuanya hingga dan termasuk koma pada data:image/png;base64, sebelum men-decode.
  • Baris baru di dalam string. Encoder MIME memotong Base64 setiap 76 karakter. Jika decoding gagal pada teks yang terpotong-potong, gabungkan dulu menjadi satu baris.
  • Kesalahan salin. Karakter terakhir yang hilang atau tanda kutip nyasar dari string JSON sudah cukup untuk merusaknya.

Decoder selalu mengubah hasilnya menjadi teks. Jika data aslinya berupa file biner seperti gambar atau arsip ZIP, hasilnya akan terlihat seperti simbol acak dan tanda tanya; itu wajar, karena byte tersebut memang bukan teks sejak awal.

FAQ

Apakah data saya diunggah?

Tidak. Encoding terjadi di browser; teks dan file tidak pernah keluar dari perangkat Anda.

Apa itu Base64 URL-safe?

Varian yang memakai - dan _ alih-alih + dan / serta membuang padding, sehingga hasilnya bisa dipakai di URL dan nama file.

Apakah berfungsi dengan emoji dan teks non-Latin?

Ya. Teks di-encode sebagai UTF-8 dulu, jadi teks Unicode apa pun bisa bolak-balik dengan benar.

Apa hasil encoding sebuah file?

Data URI (data:image/png;base64,…) yang bisa langsung ditempel ke HTML atau CSS.

Alat terkait