UltKit

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.

Mode

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 _.

  1. 0A
  2. 1B
  3. 2C
  4. 3D
  5. 4E
  6. 5F
  7. 6G
  8. 7H
  9. 8I
  10. 9J
  11. 10K
  12. 11L
  13. 12M
  14. 13N
  15. 14O
  16. 15P
  17. 16Q
  18. 17R
  19. 18S
  20. 19T
  21. 20U
  22. 21V
  23. 22W
  24. 23X
  25. 24Y
  26. 25Z
  27. 26a
  28. 27b
  29. 28c
  30. 29d
  31. 30e
  32. 31f
  33. 32g
  34. 33h
  35. 34i
  36. 35j
  37. 36k
  38. 37l
  39. 38m
  40. 39n
  41. 40o
  42. 41p
  43. 42q
  44. 43r
  45. 44s
  46. 45t
  47. 46u
  48. 47v
  49. 48w
  50. 49x
  51. 50y
  52. 51z
  53. 520
  54. 531
  55. 542
  56. 553
  57. 564
  58. 575
  59. 586
  60. 597
  61. 608
  62. 619
  63. 62+ -
  64. 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.

InputByteStandarAman-URLPanjang
U1VQ==VQ4
Ul2VWw=VWw4
Ult3VWx0VWx04
UltK4VWx0Sw==VWx0Sw8
UltKi5VWx0S2k=VWx0S2k8
UltKit6VWx0S2l0VWx0S2l08

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.