

Twoje dane są w 100% prywatne -- Base64 jest kodowane i dekodowane w całości na Twoim urządzeniu.
Base64 to sposób reprezentowania danych binarnych jako zwykłego tekstu przy użyciu 64 znaków ASCII: A–Z, a–z, 0–9 oraz + i /. Pozwala to na bezpieczne przesyłanie danych binarnych — takich jak obrazy, klucze i załączniki e-mail — przez systemy zbudowane z myślą o tekście. To kodowanie, nie szyfrowanie.
Base64 używa stałego alfabetu złożonego z 64 znaków. Każda wartość od 0 do 63 odpowiada dokładnie jednemu z nich — dzięki temu każde 3 bajty danych binarnych zamieniają się w 4 czytelne znaki:
| Wartości | Znaki | |
|---|---|---|
| 0–25 | A–Z | 26 wielkich liter |
| 26–51 | a–z | 26 małych liter |
| 52–61 | 0–9 | 10 cyfr |
| 62–63 | + / | 2 symbole |
Znak „=" to jedyny wyjątek. Pełni rolę dopełnienia, a nie jednej z 64 wartości — służy wyłącznie do wyrównania ostatniego bloku.
Prawie na pewno już go gdzieś widziałeś. Base64 pojawia się wszędzie tam, gdzie dane binarne muszą podróżować wewnątrz tekstu:
Tak wygląda ta sztuczka z data-URI. Długi ciąg znaków to cały obraz:
<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAHElEQVQI12P4//8/w38GIAXDIBKE0DHxgljNBAAO9TXL0Y4OHwAAAABJRU5ErkJggg==" alt="Red dot" />Wczesne protokoły sieciowe były budowane z myślą o tekście, nie o surowych bajtach. ASCII używał 7 bitów i 128 znaków — wystarczało to dla języka angielskiego, ale nie dla danych binarnych. Niektóre systemy niszczyły znaki sterujące lub przepisywały końce linii (LF na CR + LF), po cichu uszkadzając obrazy i dźwięk podczas transmisji.
Base64 omija wszystkie te problemy, emitując wyłącznie znaki, co do których każdy system jest zgodny. Base16 i Base32 robią to samo przy użyciu mniejszych alfabetów, ale Base64 pakuje więcej danych na znak, pozostając przy tym bezpieczny. Dlatego właśnie wygrał.
Cały schemat opiera się na jednym pomyśle powtarzanym w kółko: weź 3 bajty (24 bity), podziel je na cztery grupy po 6 bitów i wyszukaj każdą grupę w alfabecie. Oto słowo „Logto" zakodowane ręcznie.
Krok 1. Zamień każdy znak na jego 8-bitową reprezentację binarną:
| Znak | Kod ASCII | Binarna |
|---|---|---|
| L | 76 | 01001100 |
| o | 111 | 01101111 |
| g | 103 | 01100111 |
| t | 116 | 01110100 |
| o | 111 | 01101111 |
Krok 2. Weź pierwsze trzy bajty, „Log", i podziel te same 24 bity na cztery grupy po 6 bitów:
Krok 3. Odczytaj każdą grupę 6-bitową jako liczbę, a następnie wyszukaj tę liczbę w alfabecie:
| Grupa 6-bitowa | Wartość | Znak Base64 |
|---|---|---|
| 010011 | 19 | T |
| 000110 | 6 | G |
| 111101 | 61 | 9 |
| 100111 | 39 | n |
„Logto" ma 5 bajtów, a nie wielokrotność 3. Ostatnie dwa bajty, „to", dają podział 6 + 6 + 4. Dopełnij ostatnie 4 bity zerami, aby uzyskać pełną grupę 6-bitową, a następnie dodaj jedno „=", aby uzupełnić 4-znakowy blok:
Złóż bloki razem:
"Logto" → TG9ndG8=Każdy język ma to wbudowane. W Node.js:
const text = 'Logto';
const base64 = Buffer.from(text).toString('base64');
console.log(base64); // TG9ndG8=Z tego procesu wynikają trzy zasady, które warto zapamiętać:
Sięgnij po Base64, gdy dane binarne muszą przejść przez kanał obsługujący tylko tekst:
Co zyskujesz w zamian:
Standardowy Base64 opiera się na trzech znakach, które kolidują ze sposobem działania adresów URL, ciągów zapytań i nazw plików: +, / i dopełnienie =. Wstaw zwykły ciąg Base64 do linku, a może się on po cichu zepsuć:
Możesz zakodować je procentowo (+ staje się %2B, / staje się %2F, = staje się %3D), ale to rozrasta ciąg i łatwo go podwójnie zakodować przez pomyłkę.
Base64URL (RFC 4648 §5) naprawia to u źródła: zamień + na -, zamień / na _ i pomiń dopełnienie =. Wynik trafia bezpośrednio do adresu URL, parametru zapytania lub nazwy pliku bez niczego do kodowania. Zobaczysz go w adresach URL, nazwach plików i wielu webowych API.
const base64 = 'TG9ndG8=';
const urlSafe = base64.replace(/\+/g, '-').replace(/\//g, '_').replace(/=/g, '');
console.log(urlSafe); // TG9ndG8Base64 to reprezentacja, a nie darmowy lunch. Miej na uwadze trzy rzeczy:
Nie. To odwracalne kodowanie z publicznym alfabetem, więc każdy może je natychmiast zdekodować i nie dodaje żadnej poufności. Zamiast tego szyfruj wrażliwe dane.
Base64 zamienia każde 3 bajty w 4 znaki, więc zakodowana postać jest zawsze mniej więcej o jedną trzecią większa od oryginalnych bajtów.
To dopełnienie, które sprawia, że wyjście jest wielokrotnością 4 znaków. Jedno „=" oznacza, że wejście miało 2 bajty reszty; dwa „=" oznaczają 1 bajt; brak „=" oznacza, że długość była już wielokrotnością 3 bajtów.
Base64URL to to samo kodowanie z alfabetem bezpiecznym dla adresów URL i nazw plików: - i _ zastępują + i /, a dopełnienie = jest zazwyczaj pomijane. Jest powszechne w adresach URL, nazwach plików i wielu webowych API.
Dowolne dane binarne: obrazy, PDF-y, klucze, pliki wykonywalne. Base64 działa na surowych bajtach, więc oryginalny typ treści nie ma znaczenia.
Nie. Kodowanie i dekodowanie odbywają się całkowicie w Twojej przeglądarce. Nic, co wklejasz, nie jest przesyłane ani rejestrowane.