Base64 File Encoder

Enkode file apa pun ke Base64: PDF, ZIP, gambar, dan lainnya

Seret file apa pun ke sini atau klik untuk mengunggah

Semua jenis file: PDF, ZIP, gambar, file biner

Apa itu Enkoding File Base64?

Enkoding file Base64 mengonversi file biner — PDF, ZIP, gambar, file eksekusi, font, audio — menjadi teks ASCII biasa menggunakan alfabet yang didefinisikan dalam RFC 4648. Setiap tiga byte input biner diubah menjadi empat karakter Base64, menghasilkan representasi teks yang dapat melewati saluran yang dirancang khusus untuk teks: payload JSON API, dokumen XML, isi email, atribut HTML, dan variabel lingkungan.

Berbeda dengan enkoding teks-ke-Base64 (yang bekerja pada string), enkoding file-ke-Base64 membaca aliran byte mentah dari file apa pun tanpa memperhatikan formatnya. Header biner PDF, blok terkompresi ZIP, dan data piksel PNG semuanya diperlakukan sama: sebagai urutan oktet yang dienkode ulang. Hasilnya selalu berupa ASCII yang valid, aman untuk disematkan di mana pun yang menerima karakter yang dapat dicetak.

Pertukaran utamanya adalah ukuran: output Base64 sekitar 33% lebih besar dari biner aslinya. Untuk PDF 1 MB, itu berarti sekitar 1,33 MB teks Base64. Overhead ini merupakan konsekuensi dari merepresentasikan byte 8-bit dengan karakter 6-bit dan bersifat inheren pada enkoding — tidak ada implementasi yang dapat menghindarinya. Meski demikian, enkoding file Base64 tetap menjadi metode standar untuk menyematkan data biner dalam format teks saja, seperti yang ditentukan dalam MIME (RFC 2045), data URI (RFC 2397), dan JSON Web Token (RFC 7519).

Mengapa Menggunakan Base64 File Encoder Ini?

Alat ini mengenkode file ke Base64 langsung di browser menggunakan FileReader API. Tidak ada file yang diunggah ke server — seluruh proses konversi terjadi di sisi klien dalam JavaScript.

🛡
Pemrosesan Mengutamakan Privasi
File Anda tidak pernah meninggalkan perangkat Anda. FileReader API membaca file ke memori secara lokal, dan output Base64 dihasilkan sepenuhnya di browser. Tidak ada permintaan jaringan yang dibuat.
Seret dan Lepas Instan
Lepaskan file apa pun ke alat ini dan lihat output Base64 langsung. Tidak perlu menunggu unggahan, tidak ada bilah kemajuan, tidak ada batas ukuran file yang diberlakukan server.
📁
Semua Format File
Encode PDF, ZIP, gambar, font, file audio, modul WebAssembly, atau format biner lainnya. Encoder memperlakukan semua file sebagai aliran byte mentah — format tidak menjadi masalah.
🔒
Tanpa Akun
Gunakan alat ini langsung tanpa mendaftar, masuk, atau menerima cookie. Output siap disalin atau diunduh sebagai file .b64.txt dengan satu klik.

Kasus Penggunaan Enkoding File Base64

Developer Frontend
Sematkan ikon kecil, font, atau SVG langsung dalam CSS atau HTML sebagai data URI untuk menghilangkan permintaan HTTP tambahan. Ikon 2 KB yang diinline sebagai Base64 menghemat satu round-trip jaringan yang dapat menambah 50-200 ms latensi.
Backend Engineer
Sertakan lampiran file dalam payload JSON API ketika protokol transport tidak mendukung unggahan multipart. Encode PDF, laporan, atau dokumen bertanda tangan sebelum mengirimnya sebagai field string dalam respons REST atau GraphQL.
DevOps / Infrastruktur
Simpan file konfigurasi biner (sertifikat TLS, kunci SSH, file lisensi) sebagai string Base64 dalam variabel lingkungan, Kubernetes Secrets, atau Terraform tfvars di mana nilai biner mentah tidak diizinkan.
QA / Test Engineer
Buat fixture file Base64 untuk pengujian otomatis yang memverifikasi endpoint unggahan, penanganan lampiran email, atau pipeline pemrosesan dokumen tanpa harus mengelola file biner dalam version control.
Data Engineer
Serialisasi blob biner (metadata Parquet, skema Protobuf, aset biner kecil) ke Base64 untuk penyimpanan dalam katalog data berbasis JSON, penyimpanan konfigurasi, atau skrip migrasi.
Pelajar / Pemula
Amati bagaimana file biner menjadi teks dengan mengenkode file kecil dan memeriksa outputnya. Bandingkan panjang Base64 dengan ukuran file asli untuk memverifikasi overhead 33% yang dijelaskan dalam RFC 4648.

Overhead Ukuran File Base64

Enkoding Base64 meningkatkan ukuran data sebesar tepat satu pertiga. Setiap 3 byte input menghasilkan 4 karakter output (masing-masing mewakili 6 bit). Karakter padding (=) ditambahkan ketika panjang input bukan kelipatan 3. Tabel di bawah menunjukkan hubungan antara ukuran file asli dan ukuran output yang dienkode.

Ukuran FileByte AsliByte Base64Overhead
1 KB1,024 B1,368 B+33.3%
10 KB10,240 B13,656 B+33.4%
100 KB102,400 B136,536 B+33.3%
1 MB1,048,576 B1,398,104 B+33.3%
5 MB5,242,880 B6,990,508 B+33.3%
10 MB10,485,760 B13,981,016 B+33.3%

Referensi Data URI dan Tipe MIME

Data URI menyematkan konten file langsung dalam HTML, CSS, atau JavaScript menggunakan format data:[tipe MIME];base64,[data terenkode]. Tipe MIME memberi tahu browser cara menginterpretasikan byte yang telah didekode. Di bawah ini adalah ekstensi file umum, tipe MIME-nya, dan prefiks data URI yang sesuai.

EkstensiTipe MIMEPrefiks Data URI
.pdfapplication/pdfdata:application/pdf;base64,...
.zipapplication/zipdata:application/zip;base64,...
.pngimage/pngdata:image/png;base64,...
.jpgimage/jpegdata:image/jpeg;base64,...
.gifimage/gifdata:image/gif;base64,...
.svgimage/svg+xmldata:image/svg+xml;base64,...
.woff2font/woff2data:font/woff2;base64,...
.mp3audio/mpegdata:audio/mpeg;base64,...
.wasmapplication/wasmdata:application/wasm;base64,...
.binapplication/octet-streamdata:application/octet-stream;base64,...

Contoh Kode

Contoh-contoh yang dapat dijalankan ini menunjukkan cara membaca file biner dan mengenkodenya ke Base64 dalam JavaScript, Python, Node.js, bash, dan Go. Setiap cuplikan menghasilkan Base64 standar (RFC 4648 Bagian 4) dengan padding.

JavaScript (browser)
// Read a file from an <input> element and encode to Base64
const input = document.querySelector('input[type="file"]')
input.addEventListener('change', (e) => {
  const file = e.target.files[0]
  const reader = new FileReader()
  reader.onload = () => {
    const base64 = reader.result.split(',')[1]
    console.log(base64) // → "JVBERi0xLjQK..." (raw Base64, no data URI prefix)
  }
  reader.readAsDataURL(file)
})

// Convert a Blob to Base64 with async/await
async function blobToBase64(blob) {
  const buffer = await blob.arrayBuffer()
  const bytes = new Uint8Array(buffer)
  let binary = ''
  bytes.forEach(b => binary += String.fromCharCode(b))
  return btoa(binary) // → standard Base64 string
}
Python
import base64
from pathlib import Path

# Encode a file to Base64
file_bytes = Path('document.pdf').read_bytes()
encoded = base64.b64encode(file_bytes).decode('ascii')
print(encoded[:40])  # → "JVBERi0xLjQKJeLjz9MKMSAwIG9iago8PA..."

# Write encoded output to a text file
Path('document.b64.txt').write_text(encoded)

# Build a data URI from a file
mime_type = 'application/pdf'
data_uri = f'data:{mime_type};base64,{encoded}'
print(data_uri[:60])  # → "data:application/pdf;base64,JVBERi0xLj..."
Node.js
import { readFileSync, writeFileSync } from 'fs'

// Encode a file to Base64
const buffer = readFileSync('archive.zip')
const base64 = buffer.toString('base64')
console.log(base64.length) // → 1398104 (for a ~1 MB file)

// Save Base64 output to a file
writeFileSync('archive.b64.txt', base64)

// Build a data URI
const mime = 'application/zip'
const dataUri = `data:${mime};base64,${base64}`
CLI (bash)
# Encode a file to Base64 (macOS / Linux)
base64 < document.pdf > document.b64.txt

# Encode with no line wrapping (GNU coreutils)
base64 -w 0 < document.pdf > document.b64.txt

# Encode and copy to clipboard (macOS)
base64 < image.png | pbcopy

# Encode with OpenSSL (available everywhere)
openssl base64 -in archive.zip -out archive.b64.txt

# Pipe directly into curl for API upload
base64 -w 0 < photo.jpg | curl -X POST -d @- https://api.example.com/upload
Go
package main

import (
	"encoding/base64"
	"fmt"
	"os"
)

func main() {
	data, err := os.ReadFile("document.pdf")
	if err != nil {
		panic(err)
	}
	encoded := base64.StdEncoding.EncodeToString(data)
	fmt.Println(len(encoded)) // → 1398104 (for a ~1 MB file)

	// Write to file
	os.WriteFile("document.b64.txt", []byte(encoded), 0644)
}

Pertanyaan yang Sering Diajukan

Berapa ukuran file maksimum yang dapat saya enkode ke Base64?
Alat ini berjalan sepenuhnya di browser Anda, sehingga batasnya bergantung pada memori yang tersedia. Browser modern menangani file hingga 50-100 MB tanpa masalah. Untuk file yang lebih besar, gunakan alat baris perintah seperti base64 (macOS/Linux) atau modul base64 Python, yang memproses file dalam potongan dan tidak memuat seluruh output ke memori sekaligus.
Seberapa besar output Base64 dibandingkan file aslinya?
Output Base64 selalu sekitar 33,3% lebih besar dari input. Secara spesifik, rumusnya adalah ceil(n / 3) * 4, di mana n adalah jumlah byte input. File 1 MB menghasilkan sekitar 1,33 MB teks Base64. Overhead ini bersifat inheren pada enkoding dan tidak dapat dikurangi.
Bisakah saya mengenkode file ke Base64 dan menggunakannya sebagai data URI?
Ya. Tambahkan prefiks tipe MIME di depan string Base64: data:application/pdf;base64, diikuti oleh konten yang telah dienkode. Browser akan mendekode dan merender data URI seolah-olah itu adalah file biasa. Data URI bekerja dalam atribut img src, link href, CSS url(), dan anchor download.
Apakah enkoding file Base64 sama dengan enkripsi?
Tidak. Base64 adalah enkoding, bukan enkripsi. Base64 mengubah data biner menjadi representasi teks yang dapat dengan mudah dibalik — siapa pun dengan decoder Base64 dapat memulihkan file aslinya. Base64 tidak memberikan kerahasiaan, integritas, atau autentikasi. Jika Anda perlu melindungi konten file, enkripsi file terlebih dahulu (misalnya dengan AES-256-GCM), lalu enkode teks sandi dengan Base64 untuk pengiriman.
Mengapa string Base64 saya berakhir dengan satu atau dua karakter =?
Karakter = adalah padding. Base64 memproses input dalam kelompok 3 byte, menghasilkan 4 karakter output per kelompok. Ketika ukuran file bukan kelipatan 3, satu atau dua karakter padding ditambahkan agar panjang output selalu kelipatan 4. Satu = berarti kelompok terakhir memiliki 2 byte; dua == berarti kelompok terakhir memiliki 1 byte.
Bagaimana cara mengenkode file ke Base64 dari baris perintah?
Di macOS dan Linux, gunakan perintah base64: base64 < file.pdf > file.b64.txt. Di GNU/Linux, tambahkan -w 0 untuk menekan pembuatan baris baru. Anda juga dapat menggunakan OpenSSL: openssl base64 -in file.pdf -out file.b64.txt. Di Windows PowerShell: [Convert]::ToBase64String([IO.File]::ReadAllBytes('file.pdf')).
Kapan sebaiknya saya menggunakan enkoding file Base64 daripada multipart/form-data?
Gunakan Base64 ketika transport memerlukan format teks saja — JSON API, XML-RPC, variabel lingkungan, atau Kubernetes Secrets. Gunakan multipart/form-data saat mengunggah file melalui form HTML atau endpoint REST yang mendukung aliran biner. Multipart lebih efisien karena menghindari overhead ukuran 33%, tetapi memerlukan server untuk mengurai batas multipart.