Decode & Encode Base64: ke PDF, Gambar, atau File

Decode Base64 online: tempel string untuk mendapatkan kembali PDF, gambar, teks, atau JWT, atau lepaskan file untuk mendapat Base64-nya. Semuanya di tab ini.

33 format file dikenali dari byte-nya sendiri · RFC 4648 · tidak ada yang diunggah
Hasil encode

Tempel sesuatu di atas, lepaskan file di kotak ini, atau tekan salah satu contoh.

Coba

Semuanya tetap di tab ini: tidak ada yang Anda tempel atau lepaskan yang diunggah, dan HTML atau skrip hasil decode ditampilkan sebagai teks, tidak pernah dijalankan.

3 byte → 4 karakter
Contoh: Man
M77 · 4DByte 1
a97 · 61Byte 2
n110 · 6EByte 3
1922546

Tiga byte adalah 24 bit. Base64 memotong 24 bit yang sama menjadi empat kelompok enam bit, dan setiap kelompok menunjuk satu dari 64 karakter. Garis putih menandai akhir tiap byte: garis itu tidak sejajar dengan kelompok, dan itulah seluruh triknya.

Karakter 1

16 + 2 + 1 = 19 T

Indeks 19 dalam alfabet standar.

1akhir sebuah byteditambahkan, bukan milik Andaberbeda di URL-safeArahkan kursor ke sebuah karakter untuk melihat penjumlahan enam bitnya.

Cara decode dan encode Base64 dengan alat ini

Tempel apa saja ke satu kolom ini (teks, Base64, seluruh data: URI, atau JWT), atau tekan Pilih file atau lepaskan file ke kotak alat. Alat ini menentukan arahnya sendiri, menyebutkannya di label, dan cara baca sebaliknya tetap tersedia dengan satu klik.

Saat men-decode file, Anda mendapatkan tipe yang dibaca dari byte-nya sendiri, ukuran, ukuran piksel gambar, tab Pratinjau untuk gambar atau PDF, dan unduhan dengan ekstensi yang benar. Saat meng-encode file, Anda mendapatkan Base64, data: URI siap pakai, dan berapa ukuran tambahan akibat encoding. Opsi Alfabet, Padding, dan Pemisah baris di bawah hasil mengubah keluarannya.

Decode Base64: string Base64 di-decode menjadi dokumen PDF, dengan tipe, ukuran, dan diagram 3 byte ke 4 karakterDecode Base64: string Base64 di-decode menjadi dokumen PDF, dengan tipe, ukuran, dan diagram 3 byte ke 4 karakterSatu kolom, dua arahTempel teks, Base64, data: URI, atau JWT. Label menunjukkan cara input dibaca; menunya bisa mengubahnya.Pilih fileAtau lepaskan file di mana saja di kotak ini: file menjadi Base64 dan data: URI, tanpa meninggalkan tab.Isi byte-nyaSaat decode, hasil dibuka dengan tipe, ukuran, dan tanda tangan file, lalu pratinjau dan tombol unduh.Opsi keluaranAlfabet standar atau URL-safe, padding aktif atau nonaktif, dan baris dipotong untuk MIME atau PEM.3 byte → 4 karakterByte Anda sendiri, dipotong ulang menjadi kelompok enam bit. Arahkan kursor ke sebuah karakter untuk melihat penjumlahan bitnya.
Alat ini sedang men-decode PDF. Pilih sebuah angka untuk melihat fungsi tiap bagian.

Apa itu Base64, dan mengapa Base64 ada?

Base64 adalah cara menulis byte apa pun dengan 64 karakter yang bisa lewat di mana saja: A–Z, a–z, 0–9, +, dan /. Base64 ada karena email, URL, JSON, dan XML dibuat untuk teks, sedangkan byte mentah bisa berupa kode kontrol, tanda kutip, atau null yang merusaknya.

Base64 mengambil tiga byte sekaligus, menjejerkan 24 bitnya dalam satu baris, lalu memotong baris itu menjadi empat kelompok enam bit. Enam bit menampung 64 nilai, jadi setiap kelompok menunjuk tepat satu karakter. Tiga byte masuk, empat karakter keluar, selalu begitu: itulah sebabnya Base64 sekitar sepertiga lebih besar daripada data aslinya.

Man → TWFu
M77 · 4DByte 1
a97 · 61Byte 2
n110 · 6EByte 3
1922546TWFu

Tiga byte adalah 24 bit. Base64 memotong ulang bit itu menjadi empat kelompok enam bit, dan setiap kelompok menunjuk satu dari 64 karakter yang bisa dicetak, jadi tiga byte selalu menjadi empat karakter. Dari situlah pertambahan 33% berasal.

Ma → TWE=
M77 · 4DByte 1
a97 · 61Byte 2
tidak ada byte—Byte 3
19224—TWE=

Dua byte adalah 16 bit. Base64 menambahkan 2 bit nol untuk melengkapi kelompok ketiga, dan satu = berdiri di tempat karakter keempat.

M → TQ==
M77 · 4DByte 1
tidak ada byte—Byte 2
tidak ada byte—Byte 3
1916——TQ==

Satu byte adalah 8 bit. Base64 menambahkan 4 bit nol untuk melengkapi kelompok kedua, dan dua = berdiri di tempat karakter ketiga dan keempat. = sama sekali tidak membawa bit.

Garis putih menandai tempat satu byte berakhir dan byte berikutnya dimulai. Garis itu tidak sejajar dengan kelompok enam bit, dan pergeseran itulah seluruh mekanismenya. Sumber: RFC 4648 §4

Bagaimana cara decode Base64 ke PDF?

Tempel string-nya dan alat ini membangun ulang PDF-nya: menampilkan versi dan ukuran, membuka dokumen di penampil PDF bawaan browser Anda, dan memberi Anda tombol unduh. Anda tidak perlu menyebutkan bahwa itu PDF, dan tidak perlu menghapus prefiks data: terlebih dahulu.

PDF dikenali dari lima byte pertamanya, %PDF-, sehingga file tetap teridentifikasi meskipun namanya, tipe yang diklaim pengirim, atau field asalnya mengatakan lain. Jika byte-nya bukan PDF, halaman ini menyebutkan isinya, alih-alih gagal membuka dokumen yang memang tidak pernah ada.

File dibangun ulang di browser Anda. Tidak ada yang diunggah, dan itu penting ketika PDF-nya berupa slip gaji, kontrak, atau faktur.

JSON dari API"document": "JVBERi0xLjcKJeLjz9MKMS…"Sebuah field dalam respons. Tanda kutipnya bukan bagian dari Base64.
Lampiran emailContent-Transfer-Encoding: base64MIME memotong body menjadi 76 karakter per baris. Tempel beserta pemisah barisnya: semuanya akan dilewati.
Sebuah data: URIdata:application/pdf;base64,JVBERi0x…Tempel seluruhnya. Prefiksnya dibaca, tidak perlu dihapus manual.
Byte pertama menunjukkan jenisnya
  1. 25%
  2. 50P
  3. 44D
  4. 46F
  5. 2D-
  6. 311
  7. 2E.
  8. 377

5 byte pertama, %PDF-, adalah seluruh tanda tangan file. Byte 6 sampai 8 adalah versinya: 1.7. Ekstensi file tidak berperan sama sekali, jadi PDF yang diberi nama .txt oleh seseorang tetap kembali sebagai PDF.

Tiga tempat orang biasa menyalin PDF dalam Base64, dan byte yang mengenalinya setelah di-decode. Sumber: ISO 32000-1:2008 §7.5.2, RFC 8118 §8

Bagaimana cara mengubah gambar ke Base64, dan kapan sebaiknya?

Lepaskan gambarnya dan Anda mendapatkan Base64-nya serta data: URI siap pakai untuk ditempel ke HTML atau CSS. Pertanyaan yang lebih sulit adalah apakah sebaiknya begitu: Base64 selalu memakan sekitar sepertiga lebih banyak, dan gambar inline tidak bisa di-cache sendiri.

Ke arah sebaliknya, dari Base64 ke gambar, Anda mendapatkan format, ukuran, dan ukuran piksel sebenarnya yang dibaca dari header file itu sendiri, bukan dari gambar di layar, serta tombol unduh dengan ekstensi yang benar.

  • File di disk12,9 kB 100%
  • Sebagai Base6417,3 kB +33,4%
  • Dipotong per 76 karakter untuk MIME17,5 kB +35,1%
  • File-nya, di-gzip11,7 kB -9,5%
  • Base64-nya, di-gzip12,5 kB -3,2%
File sungguhan
  • diunduh sekali
  • di-cache oleh browser dan CDN
  • diambil di samping halaman, bukan di dalamnya
Gambar yang sama secara inline
  • sepertiga lebih besar sebelum kompresi
  • hanya di-cache sebagai bagian dari file yang memuatnya
  • di-parse sebagai bagian dari stylesheet atau HTML

Kompresi menutup sebagian besar selisihnya: setelah di-gzip, Base64 hanya 7% lebih besar daripada file yang di-gzip. Yang tidak bisa dikembalikan adalah entri cache milik gambar itu sendiri: jika di-inline di halaman HTML, gambar diunduh lagi bersama setiap halaman yang memuatnya.

Patokan praktisnya: inline beberapa ratus byte (ikon, spacer, logo dalam email) dan tautkan apa pun yang lebih besar. Gambar PNG 12,9 kB ini sudah melewati batas itu.

Diukur pada gambar yang di-decode oleh contoh di alat ini: byte yang sama, dibawa dengan lima cara, di-gzip pada level tertinggi. Sumber: RFC 2045 §6.8

Base64 vs Base64 URL-safe: apa bedanya?

Base64 URL-safe atau aman untuk URL (RFC 4648 §5) adalah encoding yang sama dengan dua karakter ditukar: + menjadi - dan / menjadi _. Padding-nya juga sering dihilangkan.

Gunakan varian ini di mana pun hasilnya masuk ke URL, nama file, atau cookie. JSON Web Token memakainya di semua bagian, itulah sebabnya bagian-bagian token tidak pernah diakhiri =. Alat ini membaca kedua alfabet dan memberi tahu Anda jika satu string memuat keduanya.

Base64 standar (RFC 4648 §4)+/8=
Base64 URL-safe (RFC 4648 §5)-_8=
base64url di JWT (RFC 7515 §2)-_8
  • + → -Indeks 62. Di query string, decoder formulir membaca + sebagai spasi, jadi datanya kembali dalam keadaan salah.
  • / → _Indeks 63. Di path, / memulai segmen baru, jadi nilainya terbelah dua.
  • = dibuangDi URL, = biasanya di-percent-encode menjadi %3D (RFC 4648 §5). JWT membuangnya sama sekali (RFC 7515 §2): panjangnya saja sudah menunjukkan di mana byte berakhir.

62 karakter pertama dari kedua alfabet identik, karena itulah alat yang membaca kedua alfabet bisa men-decode keduanya, dan karena itu pula halaman ini memberi tahu Anda saat sebuah string memuat keduanya.

Hanya 2 karakter yang berbeda di antara kedua alfabet. Selebihnya sama persis. Sumber: RFC 4648 §5, RFC 7515 §2

Apakah Base64 enkripsi? Bukan.

Base64 tidak menyembunyikan apa pun. Tidak ada kunci dan tidak ada rahasia, dan membaliknya tidak butuh usaha sama sekali: decoder seperti alat ini melakukannya selagi Anda mengetik.

Autentikasi HTTP Basic adalah tempat hal ini paling penting: header-nya membawa nama pengguna dan kata sandi sebagai satu string Base64 yang bisa dibaca siapa pun yang melihatnya, itulah sebabnya RFC 7617 menganggapnya aman hanya melalui koneksi terenkripsi seperti TLS. Jika sesuatu harus tetap tidak terbaca, ia butuh enkripsi. Base64 hanya membuat byte bisa lewat dengan selamat melalui saluran yang dibuat untuk teks.

Header Authorization, seperti yang dibangun RFC 7617 §2

Authorization: Basic dXNlcjpwYXNzd29yZA==

Satu langkah mundur: tidak perlu kunci, tidak perlu kata sandi

user:password

RFC 7617 membangun header langkah demi langkah, dan langkah terakhir adalah seluruh “perlindungan”-nya: klien “memperoleh basic-credentials dengan meng-encode urutan oktet ini menggunakan Base64”. Bagian §1-nya menjelaskan artinya: kecuali TLS atau sistem serupa melindungi koneksi, “user-id dan kata sandi dikirim melalui jaringan sebagai teks polos”. Base64 tidak punya kunci, jadi tidak ada yang perlu dibobol: siapa pun yang memegang string ini memegang kata sandinya.

Kredensial di atas hanya karangan. Membacanya kembali cukup satu langkah tanpa kunci: itulah arti “encoding, bukan enkripsi”. Sumber: RFC 7617 §2, §1

Mengapa teks hasil decode saya berubah jadi mojibake (karakter aneh)?

Karena Base64 membawa byte, dan byte baru menjadi huruf setelah sesuatu memilih encoding karakter. Baca teks UTF-8 seolah-olah ISO-8859-1, maka é berubah menjadi é; baca ISO-8859-1 sebagai UTF-8, maka huruf itu menjadi tanda pengganti.

data: URI bisa mendeklarasikan charset-nya, dan halaman ini membaca teks dalam charset tersebut alih-alih memaksa semuanya lewat UTF-8. Jika browser Anda tidak punya decoder untuk charset yang dideklarasikan, halaman ini mengatakannya, bukan diam-diam menampilkan huruf yang salah.

“Café” ditulis dalam UTF-8436166C3A9
“Café” ditulis dalam ISO-8859-1436166E9

Dalam UTF-8, é adalah 2 byte; dalam ISO-8859-1, huruf itu 1 byte. Base64 membawa byte, bukan huruf, jadi string-nya sendiri tidak bisa memberi tahu decoder mana yang dimaksud.

Dibaca dengan benarCafé
Byte UTF-8 dibaca sebagai ISO-8859-1Café
Byte ISO-8859-1 dibaca sebagai UTF-8Caf�
Mojibake punya dua bentuk: teks terbaca yang tidak bermakna (Café) saat UTF-8 dibaca sebagai code page satu byte, dan tanda pengganti (Caf�) saat byte-nya sama sekali bukan UTF-8 yang valid. Sumber: RFC 4648 §4, RFC 2397 §4

Base64 di Python, JavaScript, Java, C#, Go, PowerShell, dan shell

Setiap bahasa sudah punya Base64 bawaan. Jebakannya sama di mana-mana: encode byte, bukan string, dan sebutkan encoding karakter teksnya.

btoa() di JavaScript adalah bagian paling tajam: fungsi ini hanya menerima karakter sampai U+00FF, jadi apa pun di luar Latin-1 harus diubah dulu menjadi byte UTF-8 dengan TextEncoder. Setiap contoh di bawah meng-encode dan men-decode “Man” dan sudah dijalankan untuk memeriksa keluarannya.

import base64

b64 = base64.b64encode("Man".encode("utf-8")).decode("ascii")
print(b64)                                    # TWFu
print(base64.b64decode(b64).decode("utf-8"))  # Man

Dijalankan dengan Python 3.14.4 pada 26 Oktober 2026: mencetak apa yang ditunjukkan komentarnya.

Setiap cuplikan dijalankan pada “Man” dan mencetak apa yang ditunjukkan komentarnya. base64 -d di shell adalah -D di macOS versi lama. Sumber: gnu.org, developer.mozilla.org

Alfabet Base64, 0 sampai 63

Setiap kelompok enam bit adalah angka dari 0 sampai 63, dan inilah tabel untuk mencarinya. Base64 peka huruf besar-kecil: A adalah 0 dan a adalah 26, jadi mengubah huruf besar-kecil sebuah huruf akan merusak string.

Tabel ini layak dikenali sekilas: deretan A adalah deretan byte nol, dan string Base64 yang diawali JVBER adalah PDF, iVBOR PNG, dan /9j/ JPEG.

  1. A0
  2. B1
  3. C2
  4. D3
  5. E4
  6. F5
  7. G6
  8. H7
  9. I8
  10. J9
  11. K10
  12. L11
  13. M12
  14. N13
  15. O14
  16. P15
  17. Q16
  18. R17
  19. S18
  20. T19
  21. U20
  22. V21
  23. W22
  24. X23
  25. Y24
  26. Z25
  27. a26
  28. b27
  29. c28
  30. d29
  31. e30
  32. f31
  33. g32
  34. h33
  35. i34
  36. j35
  37. k36
  38. l37
  39. m38
  40. n39
  41. o40
  42. p41
  43. q42
  44. r43
  45. s44
  46. t45
  47. u46
  48. v47
  49. w48
  50. x49
  51. y50
  52. z51
  53. 052
  54. 153
  55. 254
  56. 355
  57. 456
  58. 557
  59. 658
  60. 759
  61. 860
  62. 961
  63. +URL-safe: -62
  64. /URL-safe: _63

0–25 adalah A–Z, 26–51 adalah a–z, 52–61 adalah 0–9. Hanya dua karakter terakhir dalam tabel yang berbeda di antara kedua alfabet, ditandai di atas. = sama sekali tidak ada di tabel: ia bukan nilai, melainkan tanda bahwa kelompok tiga byte terakhir pendek.

64 karakter, dalam urutan yang diberikan RFC 4648 §4. Angka di bawah setiap karakter adalah nilai enam bit yang diwakilinya. Sumber: RFC 4648 §4

Base64: tanya jawab

Apa itu Base64 dan decode Base64?

Base64 adalah cara menulis byte apa pun dengan 64 karakter yang bisa lewat di mana saja. Decode Base64 mengubah setiap kelompok empat karakter kembali menjadi tiga byte yang diwakilinya. Byte itu bisa berupa teks, atau seluruh file seperti PDF, gambar PNG, atau arsip ZIP. Alat ini membaca byte pertama untuk mengetahui jenisnya, lalu menampilkan teks atau file itu sendiri, bukan layar penuh simbol, dan memungkinkan Anda mengunduhnya.

Bagaimana cara decode file Base64?

Tempel string Base64 ke kolom input. Alat ini men-decode-nya, mencocokkan byte pertama dengan tanda tangan file yang dikenalnya (total 33 format file), menyebutkan formatnya, menampilkan pratinjau gambar atau PDF, dan memberi Anda tombol unduh dengan ekstensi yang benar. Anda tidak perlu menyebutkan jenis file-nya, dan tidak ada yang diunggah untuk mengetahuinya.

Base64 digunakan untuk apa?

Base64 membawa byte melewati tempat yang dibuat untuk teks: lampiran email (MIME), data: URI di HTML dan CSS, field biner di JSON dan XML, JSON Web Token, autentikasi HTTP Basic, serta sertifikat dan kunci di file PEM. Dalam setiap kasus, data harus melewati saluran yang bisa mengubah atau membuang byte mentah, jadi data dikirim sebagai huruf dan angka biasa.

Apakah Base64 enkripsi?

Bukan. Base64 adalah encoding, bukan cipher: tidak punya kunci dan tidak punya rahasia, dan siapa pun bisa membaliknya dalam sekejap, seperti yang dilakukan halaman ini selagi Anda mengetik. Anggap apa pun yang ditulis dalam Base64 seperti terpampang di depan umum. Jika data harus tetap privat, enkripsi dulu, lalu encode byte terenkripsi itu sebagai Base64 jika memang harus dikirim sebagai teks.

Apakah aman decode Base64 online?

Di halaman ini, ya, dan Anda bisa memeriksanya: semuanya di-decode oleh JavaScript di tab browser Anda sendiri, dan tidak ada yang Anda tempel atau lepaskan yang diunggah. HTML, SVG, dan skrip hasil decode ditampilkan sebagai teks, tidak pernah dijalankan; gambar atau PDF ditampilkan oleh penampil bawaan browser Anda. Buka tab Network di developer tools browser saat memakainya: tidak ada request yang membawa data Anda.

Mengapa Base64 33% lebih besar dari aslinya?

Karena setiap tiga byte menjadi empat karakter, dan empat dibagi tiga adalah 1,33. Hingga dua karakter padding = bisa ditambahkan di akhir, dan memotong baris per 76 karakter untuk email menambahkan pemisah baris di setiap baris, jadi string yang panjang sering sekitar 35% lebih besar daripada byte yang dibawanya. Kompresi seperti gzip menutup sebagian besar selisih itu.

Apa itu Base64 URL-safe?

Base64 URL-safe adalah Base64 dengan + diganti - dan / diganti _, sebagaimana didefinisikan RFC 4648 §5, sehingga hasilnya bisa masuk ke URL, nama file, atau cookie tanpa di-escape. Padding biasanya juga dihilangkan, seperti di JSON Web Token. Alat ini membaca kedua alfabet, bahkan jika tercampur dalam satu string, dan bisa menulis keduanya.

Mengapa decode Base64 saya gagal?

Hampir selalu karena satu karakter yang tidak ada di alfabet Base64: elipsis di tempat aplikasi chat memotong string, tanda kutip lengkung dari pengolah kata, atau spasi tak terputus dari PDF. Alat ini menyebutkan karakternya, menunjukkan letaknya beserta posisinya, memberi tahu berapa banyak yang berhasil di-decode sebelumnya, dan menawarkan untuk menghapusnya jika sisanya masih bisa di-decode.

Bisakah saya mengubah Base64 ke gambar?

Bisa. Tempel string-nya, dengan atau tanpa prefiks seperti data:image/png;base64,, dan gambarnya muncul beserta format, ukuran, dan ukuran piksel sebenarnya yang dibaca dari header file itu sendiri. Lalu unduh dengan ekstensi yang benar. PNG, JPEG, GIF, WebP, BMP, ICO, dan AVIF bisa dipratinjau; SVG ditampilkan sebagai teks terlebih dahulu, karena SVG bisa membawa skrip.

Apa arti = di akhir Base64?

Artinya kelompok tiga byte terakhir pendek. Dua byte sisa menjadi tiga karakter dan satu =, dan satu byte sisa menjadi dua karakter dan ==. Padding sama sekali tidak membawa data: ia hanya memberi tahu decoder di mana byte berakhir. Banyak decoder, termasuk alat ini, juga membaca Base64 yang padding-nya dihilangkan.

Apakah ada batas ukuran?

File yang Anda pilih atau lepaskan bisa sampai 10 MB; file yang lebih besar ditolak dengan menyebutkan nama dan ukurannya, tidak pernah dibaca setengah. Batas untuk teks yang ditempel adalah 14.349.002 karakter: cukup untuk Base64 dari file 10 MB beserta pemisah barisnya, jadi apa pun yang di-encode alat ini bisa di-decode lagi. Input besar dibaca di latar belakang, jadi mengetik tetap lancar.

Bisakah saya decode JWT di sini?

Bisa. Tempel token-nya, dan header serta payload-nya dicetak sebagai JSON yang terformat, dengan tanggal di samping klaim iat dan exp, dan tanda tangan ditampilkan sebagai byte. Halaman ini hanya men-decode tiga bagian base64url: tidak memverifikasi tanda tangan dan tidak pernah menyatakan token valid, jadi jangan gunakan untuk memutuskan apakah sebuah token bisa dipercaya.

Ada yang kurang?Usulkan fitur atau alat baru