🧰 BirAraçtaTüm Araçlar →
Base64 Yayın: 13 Temmuz 2026 8 dk okuma

Base64 Nedir, Nasıl Çalışır? Kodlama, data URI ve UTF-8 rehberi

Bir resmi HTML'e data:image/png;base64,… olarak gömdüğünüzde, bir API yanıtında uzun bir iVBORw0KGgo… dizisi gördüğünüzde ya da bir JWT'nin bölümlerini çözdüğünüzde karşınıza çıkan hep aynı şeydir: Base64. Bu rehberde Base64'ün ne olduğunu, üç baytı dört karaktere nasıl çevirdiğini, == dolgunun anlamını ve neden şifreleme olmadığını örneklerle anlatıyoruz.

Base64 nedir?

Kısa cevap Base64, ikili (binary) veriyi yalnızca 64 güvenli ASCII karakter (A–Z, a–z, 0–9, + ve /) kullanarak metne çeviren bir kodlamadır. Amaç, e-posta ve JSON gibi metin tabanlı ortamlarda ikili veriyi bozulmadan taşımaktır. Geri döndürülebilir bir kodlamadır; şifreleme değildir ve güvenlik sağlamaz.

Bilgisayarlar her şeyi bayt (0–255 arası sayılar) olarak tutar. Ama bazı kanallar yalnızca "yazılabilir" metni güvenle taşır: eski e-posta protokolleri, URL'ler, JSON string'leri ve HTTP başlıkları ikili baytları bozabilir. Base64, bu baytları bu ortamların hepsinde güvenli olan 64 karaktere yeniden yazarak sorunu çözer.

Base64 nasıl çalışır? (3 bayt → 4 karakter)

Kısa cevap Base64 veriyi 3 baytlık (24 bit) gruplara böler ve her grubu 6 bitlik dört parçaya ayırır. Her 6 bit, 64 karakterlik tabloda bir karaktere karşılık gelir (0–63). Böylece 3 bayt → 4 karakter olur ve boyut yaklaşık %33 artar. Bu yüzden Base64 veriyi büyütür, küçültmez.

Somut bir örnekle bakalım. Ada metni üç harften, yani üç bayttan oluşur. Her harfin ASCII kodunu 8 bitlik ikiliğe çevirir, ardından bu 24 biti dörde bölüp her parçayı bir Base64 karakterine eşleriz:

Metin : A d a ASCII : 65 100 97 Bit : 01000001 01100100 01100001 6'lık : 010000 010110 010001 100001 Değer : 16 22 17 33 Base64: Q W R h Sonuç : "Ada" -> QWRh

Gördüğünüz gibi 3 bayt (24 bit) tam olarak 4 Base64 karakterine (4 × 6 = 24 bit) sığar; bu yüzden dolgu gerekmedi. Bu dönüşümü DevAraç Base64 aracıyla anında doğrulayabilirsiniz: Ada yazıp Encode'a basın, çıktı QWRh olacaktır.

64 karakter neden? 6 bit ile 2⁶ = 64 farklı değer temsil edilebilir. Base64 tablosu bu 64 değeri sırayla A–Z (0–25), a–z (26–51), 0–9 (52–61), + (62) ve / (63) karakterlerine eşler. URL'lerde + ve / sorun çıkardığı için, Base64URL varyantı bunları - ve _ ile değiştirir — JWT'ler bu varyantı kullanır.

"==" dolgu karakteri ne anlama gelir?

Kısa cevap Base64 çıktısı her zaman 4'ün katı uzunluğundadır. Son grup 3 bayttan azsa, eksik yerler = dolgu karakteriyle tamamlanır. Tek = son grubun 2 bayt, çift == ise 1 bayt olduğunu gösterir. Dolgu, çözerken orijinal bayt sayısının doğru bulunmasını sağlar.

Aşağıdaki tablo, giriş uzunluğuna göre dolgunun nasıl değiştiğini gösterir:

Base64 dolgu (padding) örnekleri
GirdiBayt sayısıBase64 çıktıDolgu
Ada3QWRhyok
Ad2QWQ=tek =
A1QQ==çift ==
Merhaba7TWVyaGFiYQ==çift ==

3'e tam bölünen girişlerde dolgu olmaz; kalan 1 bayt için ==, 2 bayt için = eklenir.

Base64 nerede kullanılır?

Base64, ikili verinin "sadece metin" kabul eden bir yere sığması gereken her durumda karşınıza çıkar:

  • Data URI: Küçük resim, font veya SVG'yi ayrı dosya yerine data:image/png;base64,… olarak doğrudan HTML/CSS içine gömmek.
  • E-posta ekleri: MIME standardı, ikili ekleri Base64 ile kodlar (tarihsel olarak Base64'ün doğduğu yer).
  • JSON içinde ikili veri: JSON string tutar; küçük bir dosyayı veya imzayı JSON'a koymak için Base64 kullanılır.
  • JWT: Token'ın header ve payload bölümleri Base64URL ile kodlanır (bkz. JWT çözme aracı).
  • HTTP Basic Auth: kullanıcı:parola ikilisi Base64'lenip başlığa konur — dikkat, bu güvenlik değildir.
Pratik ipucu Data URI ile büyük dosya gömmeyin. Base64 boyutu ~%33 artırdığı için 1 MB'lık bir resim ~1,33 MB metne dönüşür ve HTML'i şişirir. Küçük ikonlar ve tekrar tekrar kullanılan minik varlıklar için idealdir; büyük görseller ayrı dosya olarak kalmalıdır. DevAraç'ın Dosya → Base64 data URI özelliği 2 MB sınırıyla tam bu küçük durumlar içindir.

Neden Base64 şifreleme değildir?

Kısa cevap Base64 anahtar gerektirmez ve herkes tarafından anında geri çözülebilir. Bir metni Base64'lemek onu gizlemez; yalnızca farklı karakterlerle yazar. Gerçek gizlilik için AES gibi anahtarlı şifreleme gerekir. Base64'lenmiş bir parolayı "gizli" saymak yaygın ve tehlikeli bir hatadır.

Şifreleme ile kodlamayı ayıran nokta amaç ve anahtar'dır. Kodlama, veriyi farklı bir biçimde temsil eder (amaç: taşınabilirlik). Şifreleme, veriyi anahtarı olmayan birinin okuyamayacağı hale getirir (amaç: gizlilik). Base64 birincidir. HTTP Basic Auth başlığındaki Base64 dizisi, ele geçiren biri tarafından tek adımda kullanıcı adı ve parolaya çözülür — bu yüzden Basic Auth yalnızca HTTPS üzerinde anlamlıdır.

UTF-8 ve Türkçe karakter sorunu

Kısa cevap Tarayıcının klasik btoa() fonksiyonu yalnızca tek baytlık (Latin-1) karakterlerle çalışır; ç, ş, ğ gibi Türkçe harfler ve emoji için hata verir. Çözüm, metni önce UTF-8 baytlarına çevirip (TextEncoder) sonra Base64'lemektir. DevAraç'ın UTF-8 güvenli modu bunu otomatik yapar.

Türkçe karakterler ve emoji, UTF-8'de birden fazla bayt kaplar (örneğin ç iki bayttır: C3 A7). btoa() bu çok baytlı karakterleri tek başına işleyemez ve "Invalid character" hatası verir. DevAraç Base64 aracında UTF-8 güvenli seçeneği varsayılan olarak açıktır: encode ederken TextEncoder, decode ederken TextDecoder kullanır. Böylece Merhaba dünya! 👋 gibi metinler kayıpsız kodlanıp geri çözülür.

Base64 encode / decode dene

Metni veya küçük bir dosyayı Base64'e çevirin, geri çözün. UTF-8 güvenli, tamamen tarayıcıda yerel; veriniz sunucuya gitmez.

Base64 Aracını Aç →

Adım adım: bir metni Base64'e çevirmek

DevAraç ile Base64 encode/decode adımları
AdımİşlemSonuç
1Metni girdi kutusuna yazİşleme hazır
2UTF-8 güvenli modun açık olduğunu doğrulaTürkçe/emoji korunur
3Encode'a basBase64 çıktısı üretilir
4Geri okumak için Decode'a basOrijinal metin geri gelir
5Kopyala ile panoya alKullanıma hazır

Base64'ü öğrendiyseniz, ilişkili konulara da göz atın: bir alanı JSON içine gömmeden önce JSON formatlama ve doğrulama rehberi yapının doğruluğunu kontrol etmenize yardımcı olur; güvenlik tarafında ise güçlü şifre üretme ve saklama rehberi, "kodlama gizlilik sağlamaz" ilkesini bir adım öteye taşır.

Sık sorulan sorular

Base64 veriyi büyütür mü, küçültür mü?
Büyütür. Her 3 bayt 4 karaktere dönüştüğü için çıktı orijinalden yaklaşık %33 daha uzun olur. Base64 bir sıkıştırma değil, bir temsil biçimidir; boyut düşürmek için ayrıca gzip gibi sıkıştırma gerekir.
Base64URL ile normal Base64 arasındaki fark nedir?
Normal Base64 + ve / kullanır; bunlar URL'lerde özel anlam taşıdığı için Base64URL varyantı onları - ve _ ile değiştirir ve genelde dolgu = kullanmaz. JWT ve URL parametreleri Base64URL kullanır.
Base64'lenmiş parola güvenli mi?
Hayır. Base64 anahtarsızdır ve saniyeler içinde geri çözülür. Parolayı "gizlemek" için Base64 kullanmak güvenlik açığıdır. Parolalar salt'lı ve yavaş hash algoritmalarıyla (bcrypt, Argon2) saklanmalı, aktarımda ise TLS kullanılmalıdır.
btoa() neden Türkçe metinde hata veriyor?
Çünkü btoa() yalnızca 0–255 aralığındaki (tek baytlık) karakter kodlarını kabul eder. ç, ş, 👋 gibi karakterler çok baytlıdır ve doğrudan işlenemez. Önce TextEncoder ile UTF-8 baytlarına çevirmek gerekir; DevAraç bunu otomatik yapar.
Base64 işlemi verilerimi sunucuya gönderir mi?
Hayır. DevAraç Base64 aracı ve dosya → data URI özelliği tamamen tarayıcınızda yerel çalışır. Metinleriniz ve dosyalarınız hiçbir sunucuya gönderilmez veya kaydedilmez; internet bağlantısı kesilse bile araç çalışmaya devam eder.

İlgili rehberler

Metodoloji & kaynaklar. Bu yazıdaki tüm örnekler, DevAraç'ın istemci tarafında çalışan Base64 aracıyla birebir üretilebilir: UTF-8 güvenli mod için TextEncoder + btoa ve atob + TextDecoder sarmalı kullanılır; harici kütüphane veya sunucu isteği yoktur. Kaynaklar: RFC 4648 (Base16, Base32, Base64) · RFC 2045 (MIME) · RFC 7519 (JWT / Base64URL). Son güncelleme: 13 Temmuz 2026. İçerik bilgilendirme amaçlıdır; kritik/güvenlik işlerinde sonuçları kendi ortamınızda da doğrulayın.