Base64 nedir ve nasil kullanilir: kodlama ve kod cozme rehberi
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:
| Metin | Baytlar | Ikilik | 6-bit gruplari | Base64 |
|---|---|---|---|---|
| Hi | 72, 105 | 01001000 01101001 | 010010 000110 100100 | SGk= |
| Man | 77, 97, 110 | 01001101 01100001 01101110 | 010011 010110 000101 101110 | TWFu |
| A | 65 | 01000001 | 010000 010000 | QQ== |
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')— KodlaBuffer.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:
| Yontem | Amac | Anahtarsiz tersine cevrilebilir | Guvenli |
|---|---|---|---|
| Base64 | Ikiliyi metin olarak gostermek | Evet, herkes cozebilir | Hayir |
| Hex (Base16) | Baytlari onaltilik olarak gostermek | Evet | Hayir |
| URL Kodlama | URL'lerdeki ozel karakterleri kacirmak | Evet | Hayir |
| AES/RSA (sifreleme) | Verileri bir anahtarla korumak | Hayir, anahtar gerekli | Evet |
| SHA-256 (hash) | Veri butunlugunu dogrulamak | Hayir, tek yonlu | Kismi |
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-streamile ikili akis
Somut overhead rakamlari:
| Orijinal | Base64 | Overhead |
|---|---|---|
| 1 KB | 1,33 KB | +%33 |
| 100 KB | 133 KB | +33 KB |
| 1 MB | 1,33 MB | +330 KB |
| 10 MB | 13,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" | base64→TWVyaGFiYQ== - Kod cozme:
echo "TWVyaGFiYQ==" | base64 --decode→Merhaba - Dosya:
base64 gorsel.png > gorsel.b64
Secenek 3: Python.
import base64base64.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.