Encode Base64 & Decode
Ubah teks atau file menjadi Base64, atau decode Base64 kembali menjadi teks yang dapat dibaca. Unicode ditangani dengan benar, alfabet aman-URL tinggal satu klik, dan decoding menerima kedua alfabet, dengan atau tanpa padding.
0 karakter · 0 kata · 0 baris
0 karakter · 0 kata · 0 baris
Berjalan sepenuhnya di tab browser ini. Teks Anda tidak pernah diunggah atau disimpan.
Alfabet Base64
Indeks → karakter menurut RFC 4648. Dua karakter terakhir yang disorot berbeda pada varian aman-URL: 62 adalah + atau -, 63 adalah / atau _.
- 0A
- 1B
- 2C
- 3D
- 4E
- 5F
- 6G
- 7H
- 8I
- 9J
- 10K
- 11L
- 12M
- 13N
- 14O
- 15P
- 16Q
- 17R
- 18S
- 19T
- 20U
- 21V
- 22W
- 23X
- 24Y
- 25Z
- 26a
- 27b
- 28c
- 29d
- 30e
- 31f
- 32g
- 33h
- 34i
- 35j
- 36k
- 37l
- 38m
- 39n
- 40o
- 41p
- 42q
- 43r
- 44s
- 45t
- 46u
- 47v
- 48w
- 49x
- 50y
- 51z
- 520
- 531
- 542
- 553
- 564
- 575
- 586
- 597
- 608
- 619
- 62+ -
- 63/ _
Seberapa panjang hasilnya
Setiap 3 byte input menjadi 4 karakter; kelompok terakhir berisi 1 atau 2 byte diberi padding = pada Base64 standar dan dibiarkan tanpa padding pada bentuk aman-URL.
| Input | Byte | Standar | Aman-URL | Panjang |
|---|---|---|---|---|
U | 1 | VQ== | VQ | 4 |
Ul | 2 | VWw= | VWw | 4 |
Ult | 3 | VWx0 | VWx0 | 4 |
UltK | 4 | VWx0Sw== | VWx0Sw | 8 |
UltKi | 5 | VWx0S2k= | VWx0S2k | 8 |
UltKit | 6 | VWx0S2l0 | VWx0S2l0 | 8 |
Apa yang dilakukan Base64
Base64, yang didefinisikan dalam RFC 4648, menuliskan byte apa pun dengan 64 karakter ASCII yang dapat dicetak: A–Z, a–z, 0–9, + dan /. Setiap kelompok tiga byte (24 bit) dipecah menjadi empat bilangan 6 bit, dan setiap bilangan memilih satu karakter dari alfabet. Jika panjang input bukan kelipatan tiga, kelompok terakhir diberi padding satu atau dua tanda =. Hasilnya selalu sekitar 33% lebih besar dari input: 4 karakter untuk setiap 3 byte.
Base64 ada karena banyak saluran dirancang untuk teks. Email (MIME), data: URL di HTML dan CSS, field JSON yang membawa gambar atau sertifikat, serta header autentikasi HTTP Basic semuanya memakai Base64 untuk memindahkan data biner dengan aman. Base64 bukan enkripsi dan tidak menyembunyikan apa pun; decoding tidak memerlukan kunci.
Unicode dan varian aman-URL
Base64 meng-encode byte, bukan huruf, sehingga teks harus diubah menjadi byte terlebih dahulu. Alat ini selalu memakai UTF-8, encoding yang menjadi dasar web: é menjadi dua byte dan emoji menjadi empat. Fungsi bawaan browser btoa saja akan melempar error untuk karakter apa pun di atas U+00FF, itulah sebabnya encoder sederhana gagal pada huruf beraksen dan emoji; di sini teks melewati TextEncoder terlebih dahulu, dan decoding membaliknya dengan TextDecoder. Jika byte hasil decode bukan UTF-8 yang valid (gambar, file zip), alat ini menampilkannya sebagai heksadesimal, bukan teks yang kacau.
Base64 standar memakai + dan /, yang memiliki arti khusus di URL dan nama file. Alfabet aman-URL dari bagian 5 RFC 4648 menggantinya dengan - dan _, dan padding biasanya dihilangkan. JSON Web Token memakai bentuk persis seperti ini. Decoder menerima kedua alfabet dan padding yang hilang, jadi Anda bisa menempelkan yang mana pun.
Meng-encode file dan gambar ke Base64
Pilih file, lalu alat ini membacanya secara lokal dengan FileReader dan mengembalikan Base64-nya, atau data: URL lengkap dengan tipe MIME file yang siap ditempel ke tag img atau background CSS. Gambar inline menghemat satu permintaan HTTP, tetapi ukurannya bertambah sepertiga dan tidak dapat di-cache secara terpisah, sehingga lebih cocok untuk ikon kecil daripada foto. Untuk gambar dengan pratinjau serta cuplikan HTML dan CSS siap pakai, gunakan Gambar ke Base64.
Pertanyaan yang sering diajukan
- Mengapa output Base64 lebih panjang dari input saya?
- Setiap 3 byte menjadi 4 karakter, sehingga output sekitar 4/3 ukuran input, ditambah hingga dua karakter padding. Teks non-ASCII lebih panjang lagi, karena UTF-8 memakai dua sampai empat byte per karakter.
- Apa arti tanda = di akhir string Base64?
- Itu padding. Tanda ini membuat panjang output menjadi kelipatan empat ketika panjang input bukan kelipatan tiga. Satu = berarti kelompok terakhir berisi dua byte, dua = berarti berisi satu byte.
- Mengapa decode Base64 gagal dengan error karakter tidak valid?
- Input berisi sesuatu di luar alfabet, misalnya spasi di tengah kata, tanda kutip, atau % dari encoding URL. Jeda baris dan padding yang hilang masih diterima; karakter lain tidak.
- Apakah aman meng-encode kata sandi dengan Base64?
- Base64 tidak memberikan perlindungan apa pun. Autentikasi HTTP Basic mengirim user:password dalam Base64, itulah sebabnya autentikasi ini hanya boleh dipakai melalui HTTPS. Gunakan enkripsi atau hashing sungguhan untuk melindungi rahasia.
- Apa perbedaan Base64 dan Base64url?
- Hanya dua karakter dan padding-nya: Base64url memakai - dan _ sebagai pengganti + dan / serta biasanya menghilangkan =, sehingga hasilnya bisa dipakai di URL dan nama file tanpa escape.