Base64 nedir ve nasil kullanilir: kodlama ve kod cozme rehberi

9 dk okuma süresi

Base64'un ne oldugunu, kodlamanin nasil calistigini, web gelistirmede ne zaman kullanilacagini ve metin, gorsel ve dosyalari ucretsiz kodlama veya kod cozme yontemlerini ogrenin.

Base64 kodlama nedir

Base64, ikili verileri (sifirlar ve birler) 64 yazdirilabilir karakter kullanarak metin gosterimine donusturen bir kodlama sistemidir. Bu 64 karakter A-Z, a-z harfleri, 0-9 rakamlari ve + ile / sembolleri ile doldurma icin = karakterinden olusur.

Temel fikir basittir: bircok bilgisayar sistemi yalnizca duz metni guvenli bir sekilde isleyebilir. Ham ikili verileri (gorsel veya sikistirilmis dosya gibi) e-posta, URL veya JSON alani araciligiyla gondermek verileri bozabilir. Base64, ikili verileri herhangi bir sistemin sorunsuzca tasiyabilecegi "guvenli" metne donusturerek bu sorunu cozer.

Ornegin, 3 ikili bayt 01001000 01101111 01101100 ("Hol"u temsil eden) 4 Base64 karakteri SG9s olur. Surec, bitleri 8 yerine 6'li bloklara gruplar ve 64 karakterlik tabloya esler.

NexTools'un ucretsiz Base64 kodlayicisi ile simdi kodlamayi deneyin.

Base64 adim adim nasil calisir

Base64 algoritmasi, her 3 giris baytini 4 cikis karakterine donusturen hassas bir matematiksel surec izler:

Adim 1: Ikiliye donusturme. Orijinal metnin her bayti 8 bitlik ikili gosterimine donusturulur. Ornegin, "M" harfi ASCII'de bayt 77'dir, ikilik olarak 01001101'dir.

Adim 2: 6 bitlik bloklara gruplama. Bitler 8'li gruplardan 6'li gruplara yeniden duzenlenir. "Man"i (3 bayt = 24 bit) alirsak, 4 adet 6 bitlik gruba bolunur: 010011 | 010110 | 000101 | 101110.

Adim 3: Base64 tablosuna esleme. Her 6 bitlik grup (deger 0-63) tablodaki bir karaktere eslenir: 19=T, 22=W, 5=F, 46=u. Sonuc: "Man" → "TWFu".

Adim 4: "=" ile doldurma. Orijinal baytlar 3'un kati degilse, doldurma eklenir. 1 bayt kalirsa "==", 2 bayt kalirsa "=" eklenir.

Tam sayisal ornek:

MetinBaytlarIkilik6-bit gruplariBase64
Hi72, 10501001000 01101001010010 000110 100100SGk=
Man77, 97, 11001001101 01100001 01101110010011 010110 000101 101110TWFu
A6501000001010000 010000QQ==

Cikti her zaman orijinalden yaklasik %33 daha buyuktur (her 3 bayt icin 4 karakter). NexTools Base64 kod cozucu ile herhangi bir Base64 metninin kodunu cozun.

2026'da Base64'un en yaygin kullanim alanlari

Base64, modern teknolojinin dusundugunuzden daha fazla alaninda mevcuttur:

1. HTML ve CSS'de Data URI. Ayri bir HTTP istegi yapmadan gorselleri dogrudan HTML veya CSS koduna gomebilirsiniz. Ornegin: <img src="data:image/png;base64,iVBORw0KGgo...">. Bu, bir sunucu istegini ortadan kaldirir ve kucuk ikonlar (2-3 KB alti) icin idealdir. HTTP Archive'a gore, 2025'te web sitelerinin %18'i CSS'lerinde en az bir Data URI kullaniyordu.

2. E-posta ekleri (MIME). Orijinal SMTP protokolu yalnizca 7 bit ASCII metni destekler. Dosya eklerini (PDF, gorsel, belge) gondermek icin MIME standardi bunlari Base64 ile kodlar. Ekli bir e-posta aldiginizda, e-posta istemciniz otomatik olarak Base64 kodunu cozer.

3. JWT tokenlari (JSON Web Tokens). JWT kimlik dogrulama tokenlari noktalarla ayrilan 3 bolumdur, her biri Base64url (+ ve / yerine - ve _ kullanan varyant) ile kodlanmistir. 2026'da milyonlarca API kimlik dogrulama icin JWT kullanmaktadir.

4. REST API'ler ve JSON. JSON yukundeki (metin olan) ikili veri gondermeniz gerektiginde, Base64 standart cozumdur.

5. Veritabani depolama. Bazi NoSQL veritabanlari veya SQL'deki metin alanlari Base64 kodlanmis ikili verileri depolar. BLOB'dan daha az verimli ama sistemler arasi daha tasinabilir.

6. Temel gizleme. Sifreleme veya guvenlik OLMASA DA, Base64 yapilandirma dizileri veya URL parametreleri gibi ilk bakista okunmamasi gereken verileri gizlemek icin kullanilir.

JavaScript ve web gelistirmede Base64

JavaScript, hem tarayicide hem Node.js'de Base64 ile calismak icin yerlesik fonksiyonlar saglar:

Tarayicida:

  • btoa(string) — Bir dizeyi Base64'e kodlar. Ornek: btoa("Merhaba")"TWVyaGFiYQ=="
  • atob(string) — Base64'u metne cozer. Ornek: atob("TWVyaGFiYQ==")"Merhaba"

Unicode konusunda dikkat: btoa() Unicode karakterlerde (Turkce karakterler, emoji, CJK) basarisiz olur. Ozel karakterli metinler icin ara adim gerekir:

const base64 = btoa(unescape(encodeURIComponent("Turkce karakterler: cosi")));

Node.js'de:

  • Buffer.from(string).toString('base64') — Kodla
  • Buffer.from(base64String, 'base64').toString('utf-8') — Coz

Node.js, Buffer ile Unicode'u otomatik olarak isler, btoa/atob sorunlari olmadan.

Kod yazmak istemiyorsaniz, NexTools Base64 kodlayicisini kullanin; dosyalari herhangi bir sunucuya yuklemeden tarayicinizda her seyi isler.

Base64 ve diger kodlama yontemleri karsilastirmasi

Base64'u sifreleme veya diger kodlamalarla karistirmamak onemlidir. Her birinin farkli bir amaci vardir:

YontemAmacAnahtarsiz tersine cevrilebilirGuvenli
Base64Ikiliyi metin olarak gostermekEvet, herkes cozebilirHayir
Hex (Base16)Baytlari onaltilik olarak gostermekEvetHayir
URL KodlamaURL'lerdeki ozel karakterleri kacirmakEvetHayir
AES/RSA (sifreleme)Verileri bir anahtarla korumakHayir, anahtar gerekliEvet
SHA-256 (hash)Veri butunlugunu dogrulamakHayir, tek yonluKismi

Yaygin hata: Base64'u "guvenlik" olarak kullanmak. Base64 HICBIR SEY sifrelemez. Herkes milisaniyeler icinde kodunu cozebilir. Verileri korumak icin gercek sifreleme (ornegin AES-256) kullanin. Butunluk dogrulamasi icin bir hash olusturucu kullanin.

Base64 varyantlari: standart, URL-guvenli ve MIME

Tek bir Base64 yoktur. Farkli RFC standartlarinda birkac varyant tanimlanmistir:

Standart Base64 (RFC 4648): A-Za-z0-9+/ ve padding = kullanir. En yaygin surumdur, MIME, PEM ve cogu API'de kullanilir.

Base64url (RFC 4648 §5): +'yi - ile, /'yi _ ile degistirir. Padding ='i kaldirir veya istege bagli yapar. URL'ler ve dosya adlari icin ozel olarak tasarlanmistir. JWT tokenlari her zaman bu varyanti kullanir.

MIME Base64 (RFC 2045): Standartla aynidir ancak her 76 karakterde satir sonu ekler. E-postalarda ve PEM sertifikalarinda kullanilir.

Base32: Yalnizca 32 karakter kullanir (A-Z2-7). Daha az verimlidir (5 bayt → 8 karakter vs Base64'te 3→4), ancak buyuk/kucuk harf duyarsizdir. TOTP (Google Authenticator) ve Tor onion adreslerinde kullanilir.

Pratik tavsiye: URL'ler veya JWT ile calisiyorsaniz her zaman Base64url kullanin. JSON API'ler veya e-postalar icin veri kodluyorsaniz standart Base64 kullanin. NexTools kodlayicisi her iki varyanti da destekler.

Performans ve boyut: Base64'u ne zaman KULLANMAMALI

Base64'un bir maliyeti var: kodlanmis veriler orijinalden yaklasik %33 daha buyuktur. Bunun onemli sonuclari vardir:

Satir ici gorseller: 2 KB kurali. Gorselleri Data URI olarak gommenin degeri yalnizca cok kucuk dosyalar (ikonlar, sprite'lar) icindir. 100 KB'lik bir gorsel ~133 KB Base64 metni olur ve tarayici bunu ayri dosya olarak onbellegleyemez. 2026 onerilen uygulama:

  • 2 KB altindaki gorseller → Data URI (bir HTTP istegi tasarrufu)
  • 2-10 KB gorseller → duruma gore degerlendirin
  • 10 KB ustundeki gorseller → her zaman <img src="url"> ile ayri dosya

API'ler ve JSON yukleri. API'niz buyuk dosyalar gondermesi gerekiyorsa, JSON'daki Base64 verimsizdir. Daha iyi alternatifler:

  • Yuklemeler icin multipart/form-data (kodlama gerekmez)
  • Onceden imzalanmis URL'ler (istemci dogrudan depolamaya yukler)
  • Content-Type: application/octet-stream ile ikili akis

Somut overhead rakamlari:

OrijinalBase64Overhead
1 KB1,33 KB+%33
100 KB133 KB+33 KB
1 MB1,33 MB+330 KB
10 MB13,3 MB+3,3 MB

Base64'u ucretsiz kodlama ve kod cozme yontemleri

Baglamimiza gore Base64 ile calismak icin birkac secenek var:

Secenek 1: Cevrimici arac (en hizlisi). NexTools Base64 kodlayicisi her seyi tarayicinizda isler. Metin yapistirin veya dosya yukleyin ve sonucu aninda alin. Hicbir veri bilgisayarinizdan cikmaz.

Secenek 2: Komut satiri.

  • Linux/Mac: echo -n "Merhaba" | base64TWVyaGFiYQ==
  • Kod cozme: echo "TWVyaGFiYQ==" | base64 --decodeMerhaba
  • Dosya: base64 gorsel.png > gorsel.b64

Secenek 3: Python.

  • import base64
  • base64.b64encode(b"Merhaba").decode()"TWVyaGFiYQ=="
  • base64.b64decode("TWVyaGFiYQ==").decode()"Merhaba"

Sadece hizla kodlama veya kod cozme yapmasi gereken cogu kullanici icin cevrimici arac en pratik secenektir. Duzenli olarak API'lerle calisiyorsaniz, terminal daha verimli olacaktir.

Karmasik veri yapilariyla calismaniz gerekiyorsa, NexTools JSON donusturucu ile verilerinizi baska formatlara da donusturebilirsiniz.

Bu aracı deneyin:

Aracı aç

Sıkça sorulan sorular

Base64 sifreleme ile ayni sey midir

Hayir. Base64 kodlama (encoding) dir, sifreleme (encryption) degil. Herkes gizli anahtar olmadan Base64'un kodunu cozebilir. Farkli bir alfabe ile mesaj yazmak gibidir: gostenimi degistirir ama icerigi korumaz. Veri sifreleme icin AES-256 veya RSA gibi algoritmalar gerekir.

Neden Base64 kodlanmis veriler orijinalden buyuktur

Cunku Base64 her 3 bayti (24 bit) 4 karaktere (32 bit) donusturur, bu da %33 artis demektir. Ayrica, orijinal veriler 3 baytin kati degilse, boyutu biraz artiran '=' ile doldurma eklenir. 1 MB'lik dosya Base64'te yaklasik 1,33 MB olur.

Base64 e-postalarda ne icin kullanilir

Orijinal SMTP protokolu yalnizca 7 bit ASCII metni destekler, bu da ikili dosyalarin dogrudan gonderilmesini engeller. MIME, dosya eklerini SMTP'nin tasiyabilecegi ASCII metni olarak kodlamak icin Base64 kullanir. E-posta istemciniz gonderirken otomatik kodlar ve alirken otomatik cozer.

Standart Base64 ile Base64url arasindaki fark nedir

Standart Base64, URL'lerde ozel anlamlari olan '+' ve '/' kullanir. Base64url bunlari sirasiyla '-' ve '_' ile degistirir ve doldurma '='yi istege bagli yapar. JWT ve URL'deki tum veriler Base64url kullanmalidir.

Base64 kodlanmis hassas verileri URL'ye koymak guvenli midir

Hayir. Base64 kodlama hicbir guvenlik saglamaz. URL'yu goren herkes verileri aninda cozebilir. Hassas verileri URL uzerinden gondermeniz gerekiyorsa, once AES ile sifreleyin, sonra sifrelenmis sonucu Base64url ile kodlayin.

Web sitem icin buyuk gorselleri Base64 ile kodlayabilir miyim

Teknik olarak evet, ama yapmamaniz gerekir. 500 KB'lik bir gorsel HTML'de ~667 KB Base64 metni olur, sayfa boyutunu artirir, tarayici onbellegini engeller ve yuklemeyi yavaslatir. Base64 Data URI'larini yalnizca 2 KB'nin altindaki gorseller icin kullanin.