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.
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.
16 + 2 + 1 = 19 T
Indeks 19 dalam alfabet standar.
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.

Satu 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.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.
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.
Dua byte adalah 16 bit. Base64 menambahkan 2 bit nol untuk melengkapi kelompok ketiga, dan satu = berdiri di tempat karakter keempat.
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.
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.
"document": "JVBERi0xLjcKJeLjz9MKMS…"Sebuah field dalam respons. Tanda kutipnya bukan bagian dari Base64.Content-Transfer-Encoding: base64MIME memotong body menjadi 76 karakter per baris. Tempel beserta pemisah barisnya: semuanya akan dilewati.data:application/pdf;base64,JVBERi0x…Tempel seluruhnya. Prefiksnya dibaca, tidak perlu dihapus manual.- 25%
- 50P
- 44D
- 46F
- 2D-
- 311
- 2E.
- 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.
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%
- diunduh sekali
- di-cache oleh browser dan CDN
- diambil di samping halaman, bukan di dalamnya
- 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.
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.
+/8=-_8=-_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.
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==user:passwordRFC 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.
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.
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.
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.
const bytes = new TextEncoder().encode("Man"); const b64 = btoa(String.fromCharCode(...bytes)); console.log(b64); // TWFu const back = Uint8Array.from(atob(b64), (c) => c.charCodeAt(0)); console.log(new TextDecoder().decode(back)); // Man
Dijalankan dengan Node.js 22.23.2 pada 26 Oktober 2026: mencetak apa yang ditunjukkan komentarnya.
import java.util.Base64;
import static java.nio.charset.StandardCharsets.UTF_8;
public class Main {
public static void main(String[] args) {
String b64 = Base64.getEncoder().encodeToString("Man".getBytes(UTF_8));
System.out.println(b64); // TWFu
byte[] back = Base64.getDecoder().decode(b64);
System.out.println(new String(back, UTF_8)); // Man
}
}Dijalankan dengan OpenJDK 25.0.2 pada 26 Oktober 2026: mencetak apa yang ditunjukkan komentarnya.
using System.Text; var b64 = Convert.ToBase64String(Encoding.UTF8.GetBytes("Man")); Console.WriteLine(b64); // TWFu var back = Convert.FromBase64String(b64); Console.WriteLine(Encoding.UTF8.GetString(back)); // Man
Dijalankan dengan .NET 10.0.103 pada 26 Oktober 2026: mencetak apa yang ditunjukkan komentarnya.
package main import ( "encoding/base64" "fmt" ) func main() { b64 := base64.StdEncoding.EncodeToString([]byte("Man")) fmt.Println(b64) // TWFu back, _ := base64.StdEncoding.DecodeString(b64) fmt.Println(string(back)) // Man }
Dijalankan dengan Go 1.25.5 pada 26 Oktober 2026: mencetak apa yang ditunjukkan komentarnya.
$b64 = [Convert]::ToBase64String([Text.Encoding]::UTF8.GetBytes('Man')) $b64 # TWFu [Text.Encoding]::UTF8.GetString([Convert]::FromBase64String($b64)) # Man
Dijalankan dengan PowerShell 7.5.5 pada 26 Oktober 2026: mencetak apa yang ditunjukkan komentarnya.
printf 'Man' | base64 # TWFu printf 'TWFu' | base64 -d # Man echo 'Man' | base64 # TWFuCg== (echo adds a newline)
Dijalankan dengan perintah base64 di macOS 26.6 (bash) pada 26 Oktober 2026: mencetak apa yang ditunjukkan komentarnya.
base64 -d di shell adalah -D di macOS versi lama. Sumber: gnu.org, developer.mozilla.orgAlfabet 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.
- A0
- B1
- C2
- D3
- E4
- F5
- G6
- H7
- I8
- J9
- K10
- L11
- M12
- N13
- O14
- P15
- Q16
- R17
- S18
- T19
- U20
- V21
- W22
- X23
- Y24
- Z25
- a26
- b27
- c28
- d29
- e30
- f31
- g32
- h33
- i34
- j35
- k36
- l37
- m38
- n39
- o40
- p41
- q42
- r43
- s44
- t45
- u46
- v47
- w48
- x49
- y50
- z51
- 052
- 153
- 254
- 355
- 456
- 557
- 658
- 759
- 860
- 961
- +URL-safe: -62
- /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.
Base64: tanya jawab
Apa itu Base64 dan decode Base64?
Bagaimana cara decode file Base64?
Base64 digunakan untuk apa?
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?
Apakah aman decode Base64 online?
Mengapa Base64 33% lebih besar dari aslinya?
= 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?
+ 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?
Bisakah saya mengubah Base64 ke gambar?
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?
=, 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?
Bisakah saya decode JWT di sini?
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
Alat terkait
Penerjemah Kode Biner
Translate teks ke kode biner dan biner ke teks: deteksi otomatis, hex, desimal, dan oktal
Generator UUID
Buat UUID v4, v7, v1, v5, dan v3 atau GUID secara massal dalam format apa pun, dan decode versi serta timestamp sebuah UUID
Decoder CSR & Sertifikat
Decode CSR atau sertifikat SSL: subject, SAN, ukuran kunci, masa berlaku, penerbit, fingerprint, cek tanda tangan, dan kecocokan CSR dengan sertifikat
Teks Kosong
Salin dan tempel teks kosong atau karakter tak terlihat, serta temukan atau hapus karakter tersembunyi dalam teks
Konverter Epoch
Konversi Unix timestamp ke tanggal dan tanggal ke waktu epoch di zona waktu mana pun, dengan konversi massal