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.
Kasus Penggunaan Enkoding File Base64
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 File | Byte Asli | Byte Base64 | Overhead |
|---|---|---|---|
| 1 KB | 1,024 B | 1,368 B | +33.3% |
| 10 KB | 10,240 B | 13,656 B | +33.4% |
| 100 KB | 102,400 B | 136,536 B | +33.3% |
| 1 MB | 1,048,576 B | 1,398,104 B | +33.3% |
| 5 MB | 5,242,880 B | 6,990,508 B | +33.3% |
| 10 MB | 10,485,760 B | 13,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.
| Ekstensi | Tipe MIME | Prefiks Data URI |
|---|---|---|
| application/pdf | data:application/pdf;base64,... | |
| .zip | application/zip | data:application/zip;base64,... |
| .png | image/png | data:image/png;base64,... |
| .jpg | image/jpeg | data:image/jpeg;base64,... |
| .gif | image/gif | data:image/gif;base64,... |
| .svg | image/svg+xml | data:image/svg+xml;base64,... |
| .woff2 | font/woff2 | data:font/woff2;base64,... |
| .mp3 | audio/mpeg | data:audio/mpeg;base64,... |
| .wasm | application/wasm | data:application/wasm;base64,... |
| .bin | application/octet-stream | data: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.
// 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
}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..."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}`# 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
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)
}