Tutorial 22 Feb 2026 10 dk okuma

Base64 Kodlama Açıklandı: Nedir, Nasıl Çalışır ve Ne Zaman Kullanılır

Base64 kodlama hakkında kapsamlı bir rehber: algoritması, yaygın kullanım alanları (data URI, email ekleri, API tokenları) ve Base64 ile şifreleme arasındaki kritik farkı öğrenin.

Base64 Encoding Explained - Visual Guide

Base64 Kodlama Nedir?

Base64, ikili (binary) verileri yazdırılabilir ASCII karakter dizisine dönüştüren bir kodlama yöntemidir. "Base64" ismi, veriyi temsil etmek için 64 karakterlik bir set kullanmasından gelir. Bu 64 karakter büyük harfler (A-Z), küçük harfler (a-z), rakamlar (0-9) ve iki ek karakter (+ ve /) ile doldurma karakteri = işaretinden oluşur.

Base64, ikili verilerin yalnızca metin içeriğini güvenilir şekilde destekleyen kanallar üzerinden iletilmesine olanak sağlamak için tasarlanmıştır. Bunu evrensel bir çevirmen gibi düşünebilirsiniz: herhangi bir bayt dizisini, ister görsel, ister belge, ister şifrelenmiş veri olsun, email (SMTP), HTML, CSS, JSON ve XML gibi metin tabanlı protokoller üzerinden güvenle taşınabilecek bir karakter dizisine dönüştürür.

Kodlama RFC 4648 standardında tanımlanmıştır. Web'de en yaygın karşılaşılacak varyant standart Base64 alfabesidir, ancak + yerine - ve / yerine _ kullanan URL-güvenli bir varyant da mevcuttur.

Base64 Algoritması Nasıl Çalışır?

Base64'un arkasındaki algoritmayı anlamak, bu "sihirli" dönüşümü anlaşılır kılar. İşte adım adım süreç:

Adım 1: Girdiyi Binary'ye Dönüştürme

Girdi verisinin her baytı 8 bitlik bir ikili sayı olarak temsil edilir. Örneğin, Man ASCII metni şu şekilde gösterilir:

  • M = ondalik 77 = binary 01001101
  • a = ondalik 97 = binary 01100001
  • n = ondalik 110 = binary 01101110

Birleştirildiğinde 24 bitlik bir akış elde ederiz: 010011010110000101101110

Adım 2: 6-Bit Gruplara Bölme

Alışılagelmiş 8 bitlik bayt sınırları yerine, Base64 binary akışını 6 bitlik gruplara böler. Neden 6 bit? Çünkü 26 = 64, bu da Base64 alfabesindeki karakter sayısıdır. 24 bitlik akışımız dört 6 bitlik gruba bölünür:

  • 010011 = 19
  • 010110 = 22
  • 000101 = 5
  • 101110 = 46

Adım 3: Base64 Karakter Tablosuna Eşleme

Her 6 bitlik değer (0-63) Base64 alfabesindeki belirli bir karaktere eşlenir:

Değer AralığıKarakterler
0-25A-Z
26-51a-z
52-610-9
62+
63/

Değerlerimize uygularsak: 19 = T, 22 = W, 5 = F, 46 = u. Yani Man metni TWFu olarak kodlanır.

Adım 4: Doldurma (Padding) İşlemi

Girdi uzunluğu 3 baytın katlarında değilse, binary akış 6 bitlik gruplara eşit şekilde bölünmez. Bu durumda son 6 bitlik grubu tamamlamak için sıfır bitleri eklenir ve çıktıya kaç ekstra bayt eklendiğini belirtmek için = doldurma karakterleri eklenir:

  • 1 bayt girdi: 2 Base64 karakter + == doldurma
  • 2 bayt girdi: 3 Base64 karakter + = doldurma
  • 3 bayt girdi: 4 Base64 karakter, doldurma yok

Base64'un Yaygın Kullanım Alanları

Base64 kodlama, modern web geliştirme ve yazılım mühendisliğinin birçok alanında karşımıza çıkar:

1. HTML ve CSS'de Data URI'leri

Data URI'leri, dosyaları Base64 kodlama kullanarak doğrudan HTML veya CSS'e gömmenize olanak tanır. Küçük bir görsel için ayrı bir HTTP isteği yapmak yerine, satır içi olarak ekleyebilirsiniz. Bu özellikle küçük ikonlar ve dekoratif görseller için faydalıdır. Görsel'den Base64'e dönüştürücü aracımızla herhangi bir görsel dosyasından hızlıca data URI oluşturabilirsiniz.

2. Email Ekleri (MIME)

Base64'un belki de tarihsel olarak en önemli kullanımı email'dedir. SMTP protokolü 7 bitlik ASCII metin iletimi için tasarlanmıştır, bu da görseller, PDF'ler ve belgeler gibi ikili dosyaların doğrudan gönderilemeyeceği anlamına gelir. MIME, bu ekleri Base64 ile kodlayarak email sunucuları üzerinden bozulmadan iletilmelerini sağlar.

3. API Kimlik Doğrulama Tokenları

HTTP Basic Authentication, kullaniciadi:sifre çiftini Base64 ile kodlayarak Authorization başlığında gönderir. Bunun kodlama olduğunu, şifreleme olmadığını anlamak önemlidir. Bu başlığı yakalayan herkes kolayca çözebilir, bu nedenle Basic Authentication her zaman HTTPS üzerinden kullanılmalıdır.

4. JSON Web Tokenları (JWT)

JWT'ler, modern web geliştirmede Base64'un en yaygın kullanımlarından biridir. Bir JWT, noktalarla ayrılmış üç Base64URL kodlanmış parçadan oluşur: başlık, yükük ve imza. JWT'leri JWT Çözücü aracımızla inceleyebilir veya JWT Oluşturucu ile test tokenları üretebilirsiniz.

5. JSON ve XML'de Binary Veri Saklama

JSON ve XML, doğal olarak binary veriyi desteklemeyen metin tabanlı formatlardır. Kriptografik anahtar, küçük görsel veya sertifika gibi binary içerik eklemeniz gerektiğinde Base64 kodlama standart yaklaşımdır.

6. URL'lerde Veri Kodlama

Standart Base64, URL'lerde ayrılmış karakterler kullanırken (+, /, =), URL-güvenli varyant (Base64URL) bunları -, _ ile değiştirir. Diğer URL kodlama ihtiyaçları için URL Kodlayıcı/Çözücü aracımıza göz atın.

Base64 Şifreleme DEĞİLDİR!

Bu, anlaşılması gereken en kritik noktalardan biridir: Base64 kodlama bir güvenlik mekanizması değildir. Kesinlikle sıfır gizlilik sağlar.

  • Kodlama: Uyumluluk için veriyi bir formattan diğerine dönüştürür. Anahtar veya sır gerektirmeden herkes tarafından tamamen geri alınabilir.
  • Şifreleme: Yetkisiz erişimi önlemek için veriyi dönüştürür. Geri almak için bir anahtar gerektirir.

Bunu Base64 Kodlayıcı/Çözücü aracımızla kendiniz deneyebilirsiniz. Hassas verileri korumak için AES Şifreleme aracı gibi gerçek şifreleme araçları kullanın.

Boyut Artışı: %33 Artışı Anlamak

Base64 kodlama her zaman verinin boyutunu arttırır. Sebep matematikseldir: her 3 bayt (24 bit) girdi, 4 karakter (32 bit) çıktıya dönüşür. Bu, kodlanmış verinin orijinalden yaklaşık %33 daha büyük olduğu anlamına gelir.

Orijinal BoyutBase64 BoyutArtış
1 KB~1.37 KB+%37
10 KB~13.3 KB+%33
100 KB~133 KB+%33
1 MB~1.33 MB+%33

Base64'u Ne Zaman KULLANMAMALISINIZ

  • Büyük dosyalar: 500 KB'lık bir görseli Base64 data URI olarak gömmek, HTML belge boyutunu ~667 KB arttırır, önbellekleme olanaklarını yok eder ve sayfa oluşturmayı yavaşlatır.
  • Güvenlik: Yukarıda tartışıldığı gibi, Base64'u asla bir güvenlik önlemi olarak kullanmayın.
  • Veritabanı depolama: Büyük binary verileri veritabanında Base64 olarak saklamak %33 daha fazla depolama alanı israf eder. Bunun yerine yerel BLOB/BYTEA sütunlarını kullanın.
  • Performans-kritik yollar: Base64 kodlama ve çözme CPU döngüsü gerektirir. Yüksek verimli sistemlerde bu ek yük önemli hale gelebilir.

Kod Örnekleri

JavaScript

// Kodlama
const encoded = btoa("Merhaba Dunya!");
console.log(encoded); // "TWVyaGFiYSBEdW55YSE="

// Çözme
const decoded = atob("TWVyaGFiYSBEdW55YSE=");
console.log(decoded); // "Merhaba Dunya!"

Python

import base64

# Kodlama
encoded = base64.b64encode(b"Merhaba Dunya!")
# Çözme
decoded = base64.b64decode(encoded)

PHP

// Kodlama
$encoded = base64_encode("Merhaba Dunya!");
// Çözme
$decoded = base64_decode($encoded);

Elbette her Base64 kodlama veya çözme ihtiyacınızda kod yazmanıza gerek yok. Online Base64 aracımız bunu tarayıcınızda anında halleder.

Görsel - Base64 Dönüşümü: Avantajlar ve Dezavantajlar

Avantajlar

  • Daha az HTTP isteği: Data URI olarak gömülen her görsel bir ağ gidiş-dönüşünü ortadan kaldırır.
  • Bağımsız belgeler: Base64 görselli bir HTML dosyası tamamen bağımsızdır. Email şablonları ve çevrimdışı belgeler için kullanışlıdır.
  • CORS sorunu yok: Satır içi görseller çapraz kaynak kısıtlamalarını tamamen atlar.

Dezavantajlar

  • %33 boyut artışı: Kodlanmış dizi her zaman orijinal binary dosyadan büyüktür.
  • Tarayıcı önbellekleme yok: Satır içi Base64 görseller bağımsız olarak önbelleğe alınamaz.
  • Render engelleme: CSS'deki Base64 görseller, sayfa oluşturulmadan önce indirilmeli ve ayrıştırılmalıdır.

Genel kural: 2 KB'nin altındaki görseller için Base64 data URI kullanın. Daha büyük her şey için görseli ayrı bir dosya olarak sunun. Bunu Görsel'den Base64'e ve Base64'ten Görsele dönüştürme araçlarımızla deneyebilirsiniz.

Özet ve Önemli Noktalar

  • Base64, binary veriyi 64 karakterlik bir alfabe kullanarak metne dönüştürür, çıktı girdiden %33 daha büyüktür.
  • Binary veriyi 6 bitlik gruplara bölerek ve her grubu yazdırılabilir bir karaktere eşleyerek çalışır.
  • Yaygın kullanımlar: data URI, email ekleri, JWT tokenları, API kimlik doğrulama ve JSON/XML'de binary veri gömmedir.
  • Base64 kodlamadır, şifreleme değil. Asla güvenlik önlemi olarak kullanmayın.
İpucu: Hızlı kodlama ve çözme işlemleri için Base64 Kodlayıcı/Çözücü aracımızı yer imlerinize ekleyin. Tamamen tarayıcınızda çalışır, veriniz cihazınızdan ayrılmaz.
Güvenlik Hatırlatması: Hassas verileri korumak için Base64 kodlama değil, AES Şifreleme aracı gibi gerçek şifreleme araçları kullanın. Güvenli şifre oluşturmak için Şifre Üretici'yi deneyin.
Ücretsiz Base64 Kodlayıcıyı Deneyin

Metin veya dosyaları tarayıcınızda anında Base64'e kodlayın ve çözün. Hiçbir veri sunucuya gönderilmez.