encode | file | copy

> base64 encoder | metin | dosya <

// Metni, UTF-8'i, JSON'u, görselleri veya herhangi bir dosyayı Base64'e kodlayın — standart, URL-güvenli, dolgulu veya dolgusuz. %100 istemci tarafında. 100 MB'a kadar bir dosyayı sürükleyip bırakın.

0 karakter
[TEXT]

Metin ve UTF-8 Kodlaması

Düz metni, UTF-8 çok baytlı karakterleri, emojileri, JSON, XML ve HTML'i kodlar. Bayt düzeyinde doğru UTF-8 için yerel TextEncoder kullanır.

[FILE]

Dosyadan Base64'e

100 MB'a kadar herhangi bir dosyayı (PNG, JPG, PDF, ZIP, ikili) yüklemek için sürükleyip bırakın veya tıklayın. Saf Base64 üretir — doğrudan Data URI'lere, JSON API'lerine veya HTML'e kopyalayın.

[VARIANTS]

URL-güvenli + Dolgusuz

<code>-_</code> alfabesini kullanarak JWT/OAuth uyumlu Base64 üretmek için <code>--url-safe</code> öğesini açın. Sondaki <code>=</code> karakterlerini kaldırmak için <code>--no-padding</code> öğesini açın.

// BASE64 KODLAMASI NASIL ÇALIŞIR

Base64 Kodlama Algoritması:

Base64, 3 girdi baytını (24 bit) alır, bunları dört adet 6 bitlik gruba ayırır ve her grubu 64 karakterlik alfabedeki bir karaktere eşler (A-Z a-z 0-9 + /). Girdi uzunluğu 3'ün katı olmadığında, çıktı uzunluğu 4'ün katı olacak şekilde = dolgusu eklenir. URL-güvenli Base64, + ve / yerine - ve _ koyar — ek yüzde kodlaması olmadan URL'lerde, dosya adlarında ve JWT'de güvenlidir.

Kodlama Örneği:

Text   : Hi!
Bytes  : 72 105 33
Bits   : 01001000 01101001 00100001
         010010 000110 100100 100001
B64    : S     G     k     h
Output : SGkh

Yaygın Kodlama Senaryoları:

  • >Görselleri HTML/CSS içine satır içi gömme (Data URI'ler)
  • >MIME e-posta ekleri üretme (RFC 2045 §6.8)
  • >HTTP Basic Auth başlıkları oluşturma (Authorization: Basic ...)
  • >JWT başlık/yük oluşturma (URL-güvenli, dolgusuz)
  • >Ham baytları taşıyamayan JSON API'leri için ikili yükleri kodlama
  • >OAuth 2.0 code verifier'lar ve S3 önceden imzalı URL'ler oluşturma

// SIKÇA SORULAN SORULAR

Metni çevrimiçi olarak Base64'e nasıl kodlarım?

Metninizi yukarıdaki GİRDİ alanına yazın veya yapıştırın. Otomatik kodlama varsayılan olarak açıktır — siz yazdıkça Base64 sonucu ÇIKTI kutusunda görünür. Kodlamayı manuel olarak tetiklemek için [ENCODE] öğesine tıklayın veya Ctrl/Cmd + Enter tuşlarına basın. Base64'ün nerede kullanılacağına bağlı olarak --url-safe veya --no-padding öğesini açın (JWT, OAuth, URL'ler → ikisi de açık). Her şey yerel olarak tarayıcınızda çalışır: yükleme yok, günlük yok, girdinize bağlı ağ isteği yok.

Bir dosyayı (PNG, JPG, PDF, ZIP, ikili) Base64'e nasıl kodlarım?

Girdi alanının altındaki [upload file] düğmesine tıklayın ve 100 MB'a kadar bir dosya seçin. Kodlayıcı bunu FileReader.readAsArrayBuffer ile okur, baytları btoa aracılığıyla 32 KB'lık parçalar halinde akıtır (böylece büyük dosyalar tarayıcıyı çökertmez) ve tüm Base64'ü ÇIKTI kutusuna yazar. Daha büyük dosyalar için bir komut satırı kodlayıcısı kullanın: base64 < input.bin > output.txt (macOS/Linux) veya PowerShell: [Convert]::ToBase64String([IO.File]::ReadAllBytes('input.bin')).

Base64'ü bir Data URI olarak biçimlendirmek isterseniz (örneğin data:image/png;base64,...), çıktının önüne MIME türünü ve ;base64, ifadesini ekleyin veya PNG, JPG, GIF, WebP ve SVG için yapıştırmaya hazır Data URI'ler üreten özel Görselden Base64'e aracımızı kullanın.

Standart, URL-güvenli ve dolgusuz Base64 arasındaki fark nedir?

Üçü de RFC 4648'de tanımlanmıştır:

Standart Base64 (§4), = dolgusuyla birlikte A-Z a-z 0-9 + / alfabesini kullanır. Çıktı uzunluğu her zaman 4'ün katıdır. MIME, HTTP Basic Auth ve JSON dize değerleri için güvenlidir.

URL-güvenli Base64 (§5), + yerine - ve / yerine _ koyar. Base64 URL yollarına, sorgu parametrelerine, dosya adlarına veya JWT segmentlerine yerleştirildiğinde gereklidir — aksi takdirde standart +/ karakterlerinin yüzde kodlanması gerekirdi.

Dolgusuz (hem §4 hem de §5, dolgusuz base64url), sondaki = karakterlerini kaldırır. Uzunluk artık 4'ün katı değildir, ancak çözücüler orijinal uzunluğu mod 4 kalanından hesaplayabilir. JWT (RFC 7515'e göre base64url), WebAuthn ve bazı CBOR/COSE uygulamaları tarafından kullanılır.

Çözücülere hangi varyantı beklemeleri gerektiği söylenmelidir — Base64 Çözücümüz üçünü de otomatik olarak algılar.

Base64'ü kod içinde nasıl kodlarım (JavaScript, Python, PHP, Go, Java)?

Her büyük dil ve çalışma zamanı Base64 kodlamasıyla birlikte gelir. Kopyala-yapıştır hazır parçacıklar:

JavaScript (browser):
btoa('Hello') // SGVsbG8=
// UTF-8 için:
btoa(String.fromCharCode(...new TextEncoder().encode(s))) // UTF-8 güvenli


Node.js:
Buffer.from('Hello', 'utf-8').toString('base64') // SGVsbG8=
Buffer.from(bytes).toString('base64url') // URL-güvenli, dolgusuz


Python:
import base64
base64.b64encode(b'Hello').decode() # SGVsbG8=
base64.urlsafe_b64encode(b'Hello').decode().rstrip('=') # URL-güvenli dolgusuz


PHP: base64_encode('Hello')
Ruby: Base64.strict_encode64('Hello') / Base64.urlsafe_encode64('Hello')
Go: base64.StdEncoding.EncodeToString([]byte("Hello")) / base64.URLEncoding.EncodeToString(...) / base64.RawURLEncoding.EncodeToString(...) (dolgusuz)
Java: Base64.getEncoder().encodeToString("Hello".getBytes(StandardCharsets.UTF_8))
C#: Convert.ToBase64String(Encoding.UTF8.GetBytes("Hello"))
Rust: base64::engine::general_purpose::STANDARD.encode("Hello")

Shell (macOS/Linux): echo -n 'Hello' | base64SGVsbG8=. 76 sütunluk satır kaydırmayı bastırmak için Linux'ta base64 -w 0 kullanın.

Base64 çıktısı girdiye kıyasla ne kadar büyük? Base64'ü ne zaman KULLANMAMALIYIM?

Base64 çıktısı girdiden ~%33 daha büyüktür: her 3 girdi baytı 4 çıktı karakteri olur. Tam formül: dolgu dahil ceil(n / 3) × 4 veya dolgusuz ceil(n × 4 / 3). 76 sütunda (MIME) veya 64 sütunda (PEM) satır kaydırırsanız birkaç bayt daha ek yük.

Örnekler:
• 1 KB ikili → ~1,37 KB Base64
• 100 KB görsel → ~137 KB Data URI
• 1 MB PDF → JSON'da ~1,37 MB Base64

Base64'ten ne zaman kaçınılmalı:
Büyük dosya aktarımları: HTML'e Base64 olarak gömülen 10 MB'lık bir görsel, 13,7 MB ayrıştırılmış metne dönüşür, ana iş parçacığını bloke eder ve ayrı olarak önbelleğe alınamaz. <img src="/assets/photo.png"> tercih edin.
Performans açısından kritik API'ler: JSON'daki 500 KB'lık bir Base64 yükü, eşdeğer bir ikili uç noktaya göre ~2-3× daha yavaş ayrıştırılır.
Bir güvenlik önlemi olarak: Base64 şifreleme değildir — herkes onu çözebilir. Gizlilik için AES-GCM veya benzerini kullanın.
Veritabanı BLOB'ları: %33 depolama tasarrufu sağlamak ve kodlama/çözme gidiş-dönüşlerinden kaçınmak için ham baytları Base64 metni olarak değil, BLOB/BYTEA olarak saklayın.

Bir JWT veya OAuth parametresi için metni URL-güvenli Base64'e nasıl kodlarım?

JWT (RFC 7515) ve OAuth PKCE (RFC 7636) her ikisi de genellikle base64url olarak adlandırılan dolgusuz URL-güvenli Base64 kullanır. Bunu bu araçta üretmek için: hem --url-safe hem de --no-padding onay kutularını etkinleştirin, ardından metninizi kodlayın.

Programatik eşdeğerler:
• JavaScript: btoa(s).replace(/\+/g, '-').replace(/\//g, '_').replace(/=+$/, '')
• Node.js: Buffer.from(s).toString('base64url')
• Python: base64.urlsafe_b64encode(s.encode()).decode().rstrip('=')
• Go: base64.RawURLEncoding.EncodeToString([]byte(s))
• Java: Base64.getUrlEncoder().withoutPadding().encodeToString(bytes)

base64url gerektiren yaygın JWT alanları: noktayla ayrılmış üç segment (başlık, yük, imza), OAuth PKCE code_verifier/code_challenge, WebAuthn zorlukları, Web Push p256dh/auth anahtarları ve Google'ın Request.state parametreleri.

Yaygın bir hata, standart Base64 (+/) ile bir JWT göndermektir — API'ler bunu hatalı biçimlendirilmiş olarak reddeder çünkü +, aktarım sırasında URL'den çözülerek bir boşluğa dönüşür.

Bu araçla bir Data URI (data:image/png;base64,...) kodlayabilir miyim?

Evet, bir uyarıyla. Bu kodlayıcı bir Data URI'nin Base64 bölümünü üretir — ;base64, ifadesinden sonraki bölüm. Eksiksiz bir Data URI oluşturmak için önüne şunu ekleyin:

data:<mime-type>;base64,<encoded-output>

Yaygın MIME türleri:
data:image/png;base64,... — PNG görsel
data:image/jpeg;base64,... — JPEG görsel
data:image/svg+xml;base64,... — SVG (veya Base64 olmadan data:image/svg+xml;utf8, kullanın — genellikle daha küçük)
data:application/pdf;base64,... — PDF dosyası
data:application/font-woff2;base64,... — yazı tipi gömme
data:text/plain;charset=utf-8;base64,... — Base64 ile sarılmış metin

Görseller ve SVG'ler için Görselden Base64'e aracı, CSS background-image, satır içi <img src="..."> veya <object data="..."> etiketlerine yapıştırmaya hazır eksiksiz Data URI'yi üretir.

Boyut uyarısı: 20-30 KB'ın üzerindeki Data URI'ler LCP'ye (Largest Contentful Paint) zarar verir çünkü tarayıcı bunları önceden yükleyemez — satır içi Base64 görsellerini küçük tutun ve daha büyük varlıklar için loading="lazy" ile normal <img> tercih edin.

Bu Base64 kodlayıcı hassas metin ve API anahtarları için güvenli mi?

Evet — hiçbir şey tarayıcınızdan çıkmaz. Kodlayıcı, yerel btoa(), TextEncoder ve FileReader API'lerini kullanarak tamamen JavaScript'te çalışır. Girdi içeriği üzerinde hiçbir ağ çağrısı, hiçbir telemetri, hiçbir günlük kaydı, kodladığınız şey üzerinde hiçbir üçüncü taraf analitiği yoktur. Kodlama sırasında DevTools'ta Ağ sekmesini açabilir ve ilgili sıfır istek gözlemleyebilirsiniz.

Ancak, Base64 şifreleme değildir — tersine çevrilebilir bir kodlamadır ve çıktıya sahip olan herkes onu çözebilir. Bu yüzden:
• Kodlanmış biçimde bile üretim sırlarını sohbete, ekran görüntülerine veya günlüklere yapıştırmayın.
• HTTP Basic Auth için, Base64 Authorization: Basic başlığı yalnızca TLS (HTTPS) üzerinden güvenlidir. Düz metin HTTP üzerinden önemsizce dinlenebilir.
• Gerçek gizlilik için AES-GCM, age, sops veya bir KMS kullanın — ardından gerekirse aktarım için şifreli metni Base64 ile kodlayın.

Katı veri sızıntısı politikaları için bu sayfayı çevrimdışı kaydedin (Cmd/Ctrl + S). Sunucu bağımlılığı olmadığından, kodlayıcı bir kez yüklendikten sonra tamamen yalıtılmış olarak çalışır.

Çok büyük dosyaları Base64'e kodlayabilir miyim? Tarayıcı sınırları nelerdir?

Kodlayıcı, dosya işleyicisindeki katı sınır aracılığıyla 100 MB'a kadar dosyaları destekler — çoğu görsel, PDF, ZIP arşivi ve hatta kısa videolar için yeterince büyük. Performans hedefleri:

< 1 MB: kodlama <50 ms'de tamamlanır, arayüz donması olmaz.
1 – 10 MB: CPU'ya bağlı olarak 100-500 ms. 32 KB'lık parçalar halinde kodladığımız için tarayıcı yanıt verir durumda kalır.
10 – 100 MB: 2-15 saniye. Bu kadar büyük Base64 dizelerini yapıştırırken/kaydırırken çıktı metin alanı biraz takılabilir. Gerekirse çıktıyı DevTools'tan .txt dosyası olarak indirmeyi düşünün.
> 100 MB: engellendi — tarayıcı bellek ek yükü (girdi baytları + ikili dize + Base64 dizesi ≈ dosya boyutunun 3-4 katı) sekme çökmeleri riski oluşturur. Şunu kullanın:

# macOS / Linux
base64 -i huge.bin -o huge.b64

# Windows PowerShell
$bytes = [IO.File]::ReadAllBytes('huge.bin')
[IO.File]::WriteAllText('huge.b64', [Convert]::ToBase64String($bytes))


Akış/çoklu GB iş akışları için, her şeyi belleğe yüklemekten kaçınan Node.js/Python ile parçalı bir yaklaşım için büyük dosyaları Base64'e kodlama bölümüne bakın.

Bu Base64 kodlayıcı metin girdisi için hangi karakter kodlamasını kullanır?

Bu kodlayıcı, modern web, JSON, Linux, macOS ve neredeyse tüm programlama dilleri tarafından varsayılan olarak kullanılan kodlamanın aynısı olan UTF-8 kullanır. Arka planda, metin her zaman UTF-8 baytları üreten new TextEncoder().encode(input) aracılığıyla geçirilir ve ancak ondan sonra Base64'e kodlanır.

Bunun neden önemli olduğu: eski JavaScript btoa() işlevi yalnızca Latin-1'i işler ve é, veya 😀 gibi karakterlerde InvalidCharacterError fırlatır. Sarmalayıcımız UTF-8 dönüşümünü sizin için halleder, böylece emoji, Çince, Japonca, Korece, Arapça, Kiril alfabesi ve herhangi bir Unicode kod noktası doğru şekilde kodlanır.

Farklı bir kodlamaya ihtiyacınız varsa:
UTF-16 LE (Windows-yerel): nadir — genellikle eski birlikte çalışabilirlik işareti. Yine de new TextEncoder({ fatal: true }).encode(s) kullanın ve yukarı akışta dönüştürün.
ISO-8859-1 / Latin-1: kodlamadan önce 0-255 kod noktalarını baytlara manuel olarak eşleyin.
GB18030, Shift_JIS, EUC-KR: önce dönüştürmek için Node.js'te iconv-lite gibi bir kütüphane kullanın.

İnce bir tuzak: kaynak verileriniz zaten UTF-8 olmayan bir kodlamadaysa (örneğin eski bir MySQL dökümünü okurken), önce bunları doğru codec ile çözün, ardından Base64 uygulamadan önce UTF-8'e yeniden kodlayın — aksi takdirde çözülen Base64 mojibake'yi koruyacaktır.

// RELATED TOOLS

// OTHER LANGUAGES