Kodowanie i dekodowanie Base64

Kodowanie Base64 online w trzech krokach: wklej tekst, wybierz kierunek i format, skopiuj wynik. Narzędzie zamienia tekst na Base64 lub Base64url i z powrotem – polskie znaki i emoji poprawnie jako UTF-8 – oraz wykonuje kodowanie URL ze znakami procentu we wszystkich trzech popularnych wariantach. Błędne dane wejściowe są zgłaszane z pozycją błędu.

Aby dekodować, wklej tekst w Base64 lub zakodowany procentowo. Podziały wierszy w Base64 są pomijane.

Twój tekst zostaje w przeglądarce – nie jest wysyłany, zapisywany ani dodawany do paska adresu.

Wynik

Wynik
UG96ZHJvd2llbmlhIHogxYFvZHppLCB6YcW8w7PFgsSHIGfEmcWbbMSFIGphxbrFhCEg8J+Riw==
Rozmiar
42 znaków = 55 bajtów UTF-8 → 76 znaków

Jak to obliczamy

Base64 zapisuje dowolne bajty za pomocą zaledwie 64 drukowalnych znaków (A–Z, a–z, 0–9, + i /). Każde 3 bajty stają się 4 znakami; jeśli na końcu zostają bajty, lukę wypełnia jeden lub dwa znaki równości (dopełnienie, ang. padding). Wynik jest mniej więcej o jedną trzecią dłuższy od oryginału. Dzięki temu dane binarne mogą przejść przez kanały przyjmujące tylko tekst – załączniki e-mail, data URL (data:image/png;base64,…), HTTP Basic Auth czy JSON.

Base64 to nie szyfrowanie. Każdy może bez klucza przywrócić oryginał. Nigdy nie polegaj na Base64 przy ochronie danych logowania.

Base64 a Base64url

Plus i ukośnik mają specjalne znaczenie w adresach URL i nazwach plików. Base64url (RFC 4648 § 5) zastępuje je więc minusem i podkreśleniem i zwykle pomija dopełnienie – tak kodowane są tokeny JWT (JSON Web Token). Przykład: bajty FB FF w Base64 to +/8=, a w Base64url -_8.

Dlaczego UTF-8 ma znaczenie

Base64 koduje bajty, nie litery. Dlatego narzędzie najpierw zamienia tekst na UTF-8: „ą” to dwa bajty, emoji – cztery. Wbudowana w przeglądarkę funkcja btoa() tego nie potrafi i zgłasza błąd przy znakach spoza Latin-1 – a więc już przy polskich literach. Jeśli zdekodowane bajty nie są poprawnym tekstem UTF-8, narzędzie pokazuje je jako wartości szesnastkowe.

Kodowanie URL: trzy warianty

Każdy znak spoza dozwolonego zestawu zapisuje się jako % i dwie cyfry szesnastkowe na każdy bajt UTF-8 (RFC 3986 § 2.1): spacja = %20, ł = %C5%82.

Wszystkie konwersje odbywają się w Twojej przeglądarce. Dane nie są wysyłane, zapisywane ani umieszczane w pasku adresu.

Najczęściej zadawane pytania

Jak zdekodować Base64?

Wybierz „Dekoduj” i format „Base64”, a potem wklej kod – tekst pojawi się od razu. Jeśli kod zawiera - i _, to Base64url; wybierz wtedy ten format.

Co to jest Base64 i czy to szyfrowanie?

Base64 to sposób zapisu dowolnych danych za pomocą 64 znaków tekstowych. To nie szyfrowanie: da się go odwrócić bez klucza. Do ochrony danych potrzebne jest prawdziwe szyfrowanie, a do haseł – funkcja skrótu hasła.

Dlaczego Base64 często kończy się na = lub ==?

Base64 działa w grupach po 3 bajty. Jeśli na końcu zostaje 1 lub 2 bajty, wynik jest dopełniany znakami == lub =, aby długość była wielokrotnością 4. Base64url zwykle pomija to dopełnienie.

Czym różni się encodeURI od encodeURIComponent?

encodeURI służy do całych adresów i nie rusza / ? & = #. encodeURIComponent koduje także te znaki i jest właściwy dla pojedynczych wartości parametrów – inaczej & w wartości rozbiłoby adres URL.

Dlaczego spacja to raz %20, a raz +?

W ścieżkach i według RFC 3986 spację zapisuje się jako %20. Formularze HTML (application/x-www-form-urlencoded) zapisują ją jako +. Przy dekodowaniu trzeba wiedzieć, który wariant masz – prawdziwy plus zapisuje się tam jako %2B.

O ile większy jest plik w Base64?

Mniej więcej 4/3 oryginalnego rozmiaru: 3 bajty stają się 4 znakami. Obraz 300 KB ma w Base64 około 400 KB, z podziałami wierszy MIME trochę więcej.

Źródła i podstawa prawna

Stan na:

Podobne narzędzia