Base64 Dosya Kodlayıcı
Herhangi bir dosyayı Base64'e kodlayın — PDF, ZIP, resimler ve daha fazlası
Herhangi bir dosyayı buraya sürükleyin veya yüklemek için tıklayın
Herhangi bir dosya türü — PDF, ZIP, resimler, ikili dosyalar
Base64 Dosya Kodlaması Nedir?
Base64 dosya kodlaması ikili dosyaları (PDF'ler, ZIP'ler, resimler, yürütülebilirler, yazı tipleri, ses) RFC 4648'de tanımlanan alfabeyi kullanarak düz ASCII metne dönüştürür. Her üç baytlık ikili giriş dört Base64 karakterine dönüşür ve yalnızca metin için tasarlanmış kanallardan geçebilen bir metin temsilini oluşturur: JSON API payload'ları, XML belgeleri, e-posta gövdeleri, HTML öznitelikleri ve ortam değişkenleri.
Metinden Base64'e kodlamadan (dizeler üzerinde çalışır) farklı olarak, dosyadan Base64'e kodlama herhangi bir dosyanın ham bayt akışını format ne olursa olsun okur. Bir PDF'in ikili başlıkları, bir ZIP'in sıkıştırılmış blokları ve bir PNG'nin piksel verileri aynı şekilde ele alınır: yeniden kodlanacak bir sektet dizisi olarak. Sonuç her zaman geçerli ASCII'dir ve yazdırılabilir karakterleri kabul eden her yere gömülebilir.
Uzlaşma boyuttur: Base64 çıkışı orijinal ikiliden yaklaşık %33 daha büyüktür. 1 MB'lık bir PDF için, bu yaklaşık 1,33 MB Base64 metni anlamına gelir. Bu ek yük kodlamaya özgüdür ve hiçbir uygulama bunu önleyemez. Buna rağmen, Base64 dosya kodlaması metin yalnızca biçimlere ikili veri gömmenin standart yöntemi olmaya devam ediyor, MIME'de (RFC 2045), veri URI'lerinde (RFC 2397) ve JSON Web Token'larında (RFC 7519) belirtiliyor.
Bu Base64 Dosya Kodlayıcı Neden Kullanılsın?
Bu araç, dosyaları FileReader API'sini kullanarak doğrudan tarayıcınızda Base64'e kodlar. Hiçbir dosya sunucuya yüklenmez — tüm dönüştürme JavaScript'te istemci tarafında gerçekleşir.
Base64 Dosya Kodlama Kullanım Durumları
Base64 Dosya Boyutu Ek Yükü
Base64 kodlaması veri boyutunu tam olarak üçte bir artırır. Her 3 giriş baytı 4 çıkış karakteri üretir (her biri 6 biti temsil eder). Giriş uzunluğu 3'ün katı olmadığında doldurma karakterleri (=) eklenir. Aşağıdaki tablo, orijinal dosya boyutu ile kodlanmış çıkış boyutu arasındaki ilişkiyi göstermektedir.
| Dosya Boyutu | Ham Baytlar | Base64 Baytları | Ek Yük |
|---|---|---|---|
| 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% |
Veri URI'si ve MIME Türü Referansı
Bir veri URI'si, data:[MIME türü];base64,[kodlanmış veriler] biçimini kullanarak dosya içeriğini doğrudan HTML, CSS veya JavaScript'e gömer. MIME türü tarayıcıya çözülen baytları nasıl yorumlayacağını söyler. Aşağıda yaygın dosya uzantıları, MIME türleri ve karşılık gelen veri URI'si ön eki bulunmaktadır.
| Uzantı | MIME Türü | Veri URI Ön Eki |
|---|---|---|
| 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,... |
Kod Örnekleri
Bu çalıştırılabilir örnekler, JavaScript, Python, Node.js, bash ve Go'da bir ikili dosyayı nasıl okuyacağınız ve Base64'e kodlayacağınızı göstermektedir. Her kod parçacığı doldurma ile standart Base64 (RFC 4648 Bölüm 4) üretir.
// 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)
}