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.
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
- Część adresu (
encodeURIComponent): koduje wszystko oprócz A–Z, a–z, 0–9 i- _ . ! ~ * ' ( )– także/ ? & = #. Właściwe dla pojedynczych wartości, np. wyszukiwanej frazy w?q=…. - Cały adres (
encodeURI): zachowuje znaki o specjalnym znaczeniu (: / ? # & = +…) i koduje tylko spacje, litery ze znakami diakrytycznymi i podobne. Dla całego linku, który ma nadal działać. - Dane formularza (
application/x-www-form-urlencoded): tak formularze HTML wysyłają dane. Spacja staje się+, a! ' ( ) ~są również kodowane. Przy dekodowaniu+wraca do postaci spacji.
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
- RFC 4648: RFC 4648 – The Base16, Base32, and Base64 Data Encodings (§ 4 Base64, § 5 Base64url, § 3.2 Padding)
- RFC 3986: RFC 3986 – Uniform Resource Identifier (URI): Generic Syntax (§ 2.1 Percent-Encoding, § 2.2 Reserved Characters)
- WHATWG URL Standard – application/x-www-form-urlencoded
- MDN Web Docs – encodeURIComponent()
- MDN Web Docs – encodeURI()
- MDN Web Docs – Base64 (Unicode problem, TextEncoder)
Stan na:
Podobne narzędzia
- Generator hash: SHA-256, SHA-512, SHA-1, MD5Generator hash online: oblicz SHA-256, SHA-384, SHA-512, SHA-1 i MD5 tekstu lub pliku i sprawdź sumę kontrolną – lokalnie w przeglądarce, bez wysyłania.
- Regex testerRegex tester: sprawdzaj wyrażenia regularne JavaScript na żywo – podświetlone dopasowania, grupy w tabeli i objaśnienie wzorca. Za darmo, bez wysyłania danych.
- JSON formatter, walidator i minifikatorSprawdź JSON według RFC 8259: dokładna linia, kolumna i zrozumiały opis błędu. Formatowanie JSON, minifikacja, sortowanie kluczy – lokalnie w przeglądarce.
- Generator UUID: twórz i sprawdzaj UUID v4 i v7Generuj UUID online: wersja 4 (losowa) lub 7 (z czasem, sortowalna), do 1000 naraz. Sprawdź poprawność UUID i odczytaj wersję, wariant i znacznik czasu.
- Generator hasełGenerator haseł online: twórz silne, losowe hasła i łatwe do zapamiętania frazy z wyrazów, z entropią w bitach – wszystko w przeglądarce, nic nie jest wysyłane.
- Algorytm Luhna: walidator i kalkulator cyfry kontrolnejSprawdź numer algorytmem Luhna (mod 10, ISO/IEC 7812-1) albo oblicz cyfrę kontrolną – tylko kontrola formatu, obliczenia działają lokalnie w przeglądarce.