> base64 encoder | tekst | plik <
// Koduj tekst, UTF-8, JSON, obrazy lub dowolny plik na Base64 — standard, bezpieczny dla URL, z dopełnieniem lub bez. 100% po stronie klienta. Przeciągnij i upuść plik do 100 MB.
Kodowanie tekstu i UTF-8
Koduje zwykły tekst, znaki wielobajtowe UTF-8, emoji, JSON, XML i HTML. Używa natywnego TextEncoder do dokładnego UTF-8 na poziomie bajtów.
Plik do Base64
Przeciągnij i upuść lub kliknij, aby przesłać dowolny plik (PNG, JPG, PDF, ZIP, binarny) do 100 MB. Generuje czysty Base64 — skopiuj bezpośrednio do Data URI, API JSON lub HTML.
Bezpieczny dla URL + bez dopełnienia
Włącz <code>--url-safe</code>, aby wygenerować Base64 zgodny z JWT/OAuth przy użyciu alfabetu <code>-_</code>. Włącz <code>--no-padding</code>, aby usunąć końcowe <code>=</code>.
// JAK DZIAŁA KODOWANIE BASE64
Algorytm kodowania Base64:
Base64 pobiera 3 bajty wejściowe (24 bity), dzieli je na cztery 6-bitowe grupy i mapuje każdą grupę na znak z 64-znakowego alfabetu (A-Z a-z 0-9 + /). Gdy długość wejścia nie jest wielokrotnością 3, dodawane jest dopełnienie =, aby długość wyjścia była wielokrotnością 4. Base64 bezpieczny dla URL zastępuje + i / znakami - i _ — bezpieczny w adresach URL, nazwach plików i JWT bez dodatkowego kodowania procentowego.
Przykład kodowania:
Text : Hi!
Bytes : 72 105 33
Bits : 01001000 01101001 00100001
010010 000110 100100 100001
B64 : S G k h
Output : SGkh
Typowe scenariusze kodowania:
- >Osadzanie obrazów inline w HTML/CSS (Data URI)
- >Tworzenie załączników e-mail MIME (RFC 2045 §6.8)
- >Budowanie nagłówków HTTP Basic Auth (Authorization: Basic ...)
- >Tworzenie nagłówka/ładunku JWT (bezpieczne dla URL, bez dopełnienia)
- >Kodowanie ładunków binarnych dla API JSON, które nie mogą przenosić surowych bajtów
- >Budowanie weryfikatorów kodu OAuth 2.0 i wstępnie podpisanych URL-i S3
// NAJCZĘŚCIEJ ZADAWANE PYTANIA
Jak zakodować tekst na Base64 online?
Wpisz lub wklej tekst w obszarze WEJŚCIE powyżej. Automatyczne kodowanie jest domyślnie włączone — wynik Base64 pojawia się w polu WYJŚCIE podczas pisania. Kliknij [ENCODE] lub naciśnij Ctrl/Cmd + Enter, aby uruchomić kodowanie ręcznie. Włącz --url-safe lub --no-padding w zależności od tego, gdzie zostanie użyty Base64 (JWT, OAuth, URL → oba włączone). Wszystko działa lokalnie w Twojej przeglądarce: bez przesyłania, bez logów, bez żądań sieciowych powiązanych z Twoim wejściem.
Jak zakodować plik (PNG, JPG, PDF, ZIP, binarny) na Base64?
Kliknij przycisk [upload file] pod obszarem wejścia i wybierz plik do 100 MB. Koder odczytuje go za pomocą FileReader.readAsArrayBuffer, przesyła bajty przez btoa w porcjach po 32 KB (aby duże pliki nie powodowały awarii przeglądarki) i zapisuje pełny Base64 w polu WYJŚCIE. W przypadku większych plików użyj kodera wiersza poleceń: base64 < input.bin > output.txt (macOS/Linux) lub PowerShell: [Convert]::ToBase64String([IO.File]::ReadAllBytes('input.bin')).
Jeśli chcesz, aby Base64 był sformatowany jako Data URI (np. data:image/png;base64,...), poprzedź wyjście typem MIME i ;base64, lub użyj naszego dedykowanego narzędzia Obraz do Base64, które generuje gotowe do wklejenia Data URI dla PNG, JPG, GIF, WebP i SVG.
Jaka jest różnica między standardowym, bezpiecznym dla URL i bez dopełnienia Base64?
Wszystkie trzy są zdefiniowane w RFC 4648:
• Standardowy Base64 (§4) używa alfabetu A-Z a-z 0-9 + / z dopełnieniem =. Długość wyjścia jest zawsze wielokrotnością 4. Bezpieczny dla MIME, HTTP Basic Auth i wartości łańcuchów JSON.
• Base64 bezpieczny dla URL (§5) zastępuje + znakiem -, a / znakiem _. Wymagany, gdy Base64 jest umieszczany w ścieżkach URL, parametrach zapytań, nazwach plików lub segmentach JWT — standardowe znaki +/ wymagałyby w przeciwnym razie kodowania procentowego.
• Bez dopełnienia (zarówno §4, jak i §5, base64url bez dopełnienia) usuwa końcowe znaki =. Długość nie jest już wielokrotnością 4, ale dekodery mogą obliczyć pierwotną długość z reszty modulo 4. Używany przez JWT (base64url zgodnie z RFC 7515), WebAuthn i niektóre implementacje CBOR/COSE.
Dekoderom trzeba wskazać, jakiego wariantu mają oczekiwać — nasz Dekoder Base64 automatycznie wykrywa wszystkie trzy.
Jak zakodować Base64 w kodzie (JavaScript, Python, PHP, Go, Java)?
Każdy główny język i środowisko uruchomieniowe jest dostarczany z kodowaniem Base64. Gotowe do skopiowania fragmenty:
JavaScript (browser):btoa('Hello') // SGVsbG8=
// Dla UTF-8:
btoa(String.fromCharCode(...new TextEncoder().encode(s))) // bezpieczne dla UTF-8
Node.js:Buffer.from('Hello', 'utf-8').toString('base64') // SGVsbG8=
Buffer.from(bytes).toString('base64url') // bezpieczne dla URL, bez dopełnienia
Python:import base64
base64.b64encode(b'Hello').decode() # SGVsbG8=
base64.urlsafe_b64encode(b'Hello').decode().rstrip('=') # bezpieczne dla URL, bez dopełnienia
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(...) (bez dopełnienia)
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' | base64 → SGVsbG8=. Użyj base64 -w 0 w systemie Linux, aby wyłączyć zawijanie wierszy co 76 kolumn.
Jak duże jest wyjście Base64 w porównaniu z wejściem? Kiedy NIE należy używać Base64?
Wyjście Base64 jest ~33% większe niż wejście: każde 3 bajty wejściowe stają się 4 znakami wyjściowymi. Dokładny wzór: ceil(n / 3) × 4 z dopełnieniem lub ceil(n × 4 / 3) bez. Plus kilka dodatkowych bajtów narzutu, jeśli zawijasz wiersze co 76 kolumn (MIME) lub 64 kolumny (PEM).
Przykłady:
• 1 KB binarny → ~1,37 KB Base64
• 100 KB obraz → ~137 KB Data URI
• 1 MB PDF → ~1,37 MB Base64 w JSON
Kiedy unikać Base64:
• Duże transfery plików: obraz 10 MB osadzony jako Base64 w HTML staje się 13,7 MB przeanalizowanego tekstu, blokuje główny wątek i nie może być buforowany osobno. Preferuj <img src="/assets/photo.png">.
• API krytyczne dla wydajności: ładunek Base64 o rozmiarze 500 KB w JSON jest analizowany ~2-3× wolniej niż równoważny punkt końcowy binarny.
• Jako środek bezpieczeństwa: Base64 nie jest szyfrowaniem — każdy może go zdekodować. Użyj AES-GCM lub podobnego dla poufności.
• BLOB-y baz danych: przechowuj surowe bajty jako BLOB/BYTEA, a nie tekst Base64, aby zaoszczędzić 33% miejsca i uniknąć cykli kodowania/dekodowania.
Jak zakodować tekst na bezpieczny dla URL Base64 dla JWT lub parametru OAuth?
JWT (RFC 7515) i OAuth PKCE (RFC 7636) używają bezpiecznego dla URL Base64 bez dopełnienia, często nazywanego base64url. Aby go wygenerować w tym narzędziu: zaznacz oba pola wyboru --url-safe i --no-padding, a następnie zakoduj swój tekst.
Odpowiedniki programistyczne:
• 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)
Typowe pola JWT wymagające base64url: trzy segmenty oddzielone kropkami (nagłówek, ładunek, podpis), OAuth PKCE code_verifier/code_challenge, wyzwania WebAuthn, klucze Web Push p256dh/auth oraz parametry Request.state Google.
Częstym błędem jest wysłanie JWT ze standardowym Base64 (+/) — API odrzucają go jako zniekształcony, ponieważ + jest dekodowany z URL na spację podczas transmisji.
Czy mogę zakodować Data URI (data:image/png;base64,...) za pomocą tego narzędzia?
Tak, z jednym zastrzeżeniem. Ten koder generuje część Base64 Data URI — część po ;base64,. Aby zbudować pełny Data URI, poprzedź:data:<mime-type>;base64,<encoded-output>
Typowe typy MIME:
• data:image/png;base64,... — obraz PNG
• data:image/jpeg;base64,... — obraz JPEG
• data:image/svg+xml;base64,... — SVG (lub użyj data:image/svg+xml;utf8, bez Base64 — zwykle mniejsze)
• data:application/pdf;base64,... — plik PDF
• data:application/font-woff2;base64,... — osadzenie czcionki
• data:text/plain;charset=utf-8;base64,... — tekst opakowany w Base64
Dla obrazów i plików SVG narzędzie Obraz do Base64 generuje kompletny Data URI gotowy do wklejenia do CSS background-image, inline <img src="..."> lub tagów <object data="...">.
Ostrzeżenie o rozmiarze: Data URI powyżej 20-30 KB szkodzą LCP (Largest Contentful Paint), ponieważ przeglądarka nie może ich wstępnie załadować — utrzymuj inline obrazy Base64 małe i preferuj zwykły <img> z loading="lazy" dla większych zasobów.
Czy ten koder Base64 jest bezpieczny dla wrażliwego tekstu i kluczy API?
Tak — nic nie opuszcza Twojej przeglądarki. Koder działa w całości w JavaScript przy użyciu natywnych API btoa(), TextEncoder i FileReader. Nie ma żadnych wywołań sieciowych dotyczących zawartości wejścia, żadnej telemetrii, żadnego logowania, żadnej analityki firm trzecich na temat tego, co kodujesz. Możesz otworzyć kartę Network w DevTools podczas kodowania i zaobserwować zero powiązanych żądań.
Jednak Base64 nie jest szyfrowaniem — to odwracalne kodowanie, a każdy, kto ma wyjście, może je zdekodować. Dlatego:
• Nie wklejaj sekretów produkcyjnych do czatu, zrzutów ekranu ani logów, nawet w zakodowanej formie.
• W przypadku HTTP Basic Auth nagłówek Base64 Authorization: Basic jest bezpieczny tylko przez TLS (HTTPS). Przez zwykły HTTP można go trywialnie podsłuchać.
• Dla prawdziwej poufności użyj AES-GCM, age, sops lub KMS — a następnie w razie potrzeby zakoduj szyfrogram w Base64 do transportu.
W przypadku rygorystycznych zasad przeciwdziałania eksfiltracji danych zapisz tę stronę offline (Cmd/Ctrl + S). Koder działa w pełni odizolowany po jednym załadowaniu, ponieważ nie ma zależności od serwera.
Czy mogę zakodować bardzo duże pliki na Base64? Jakie są limity przeglądarki?
Koder obsługuje pliki do 100 MB poprzez twardy limit w obsłudze plików — wystarczająco duży dla większości obrazów, plików PDF, archiwów ZIP, a nawet krótkich filmów. Cele wydajnościowe:
• < 1 MB: kodowanie kończy się w <50 ms, bez zawieszania interfejsu.
• 1 – 10 MB: 100-500 ms w zależności od CPU. Przeglądarka pozostaje responsywna, ponieważ kodujemy w porcjach po 32 KB.
• 10 – 100 MB: 2-15 sekund. Pole tekstowe wyjścia może nieco się zacinać podczas wklejania/przewijania tak ogromnych ciągów Base64. W razie potrzeby rozważ pobranie wyjścia jako pliku .txt z DevTools.
• > 100 MB: zablokowane — narzut pamięci przeglądarki (bajty wejściowe + ciąg binarny + ciąg Base64 ≈ 3-4× rozmiar pliku) grozi awarią karty. Użyj:# 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))
W przypadku przepływów strumieniowych/wielogigabajtowych zobacz kodowanie dużych plików na Base64, aby poznać podejście porcjowe z Node.js/Python, które unika ładowania wszystkiego do pamięci.
Jakiego kodowania znaków używa ten koder Base64 dla wejścia tekstowego?
Ten koder używa UTF-8, tego samego kodowania używanego domyślnie przez nowoczesny internet, JSON, Linux, macOS i prawie wszystkie języki programowania. Pod maską tekst jest przekazywany przez new TextEncoder().encode(input), co zawsze generuje bajty UTF-8, a dopiero potem kodowany w Base64.
Dlaczego to ważne: starsza funkcja JavaScript btoa() obsługuje tylko Latin-1 i zgłasza InvalidCharacterError przy znakach takich jak é, 中 lub 😀. Nasz wrapper obsługuje konwersję UTF-8 za Ciebie, więc emoji, chiński, japoński, koreański, arabski, cyrylica i dowolny punkt kodowy Unicode są kodowane poprawnie.
Jeśli potrzebujesz innego kodowania:
• UTF-16 LE (natywne dla Windows): rzadkie — zwykle oznaka starszej interoperacyjności. Mimo to użyj new TextEncoder({ fatal: true }).encode(s) i konwertuj wcześniej.
• ISO-8859-1 / Latin-1: ręcznie mapuj punkty kodowe 0-255 na bajty przed kodowaniem.
• GB18030, Shift_JIS, EUC-KR: użyj biblioteki takiej jak iconv-lite w Node.js, aby najpierw transkodować.
Subtelna pułapka: jeśli dane źródłowe są już w kodowaniu innym niż UTF-8 (np. przy odczycie starego zrzutu MySQL), najpierw zdekoduj je za pomocą właściwego kodeka, a następnie zakoduj ponownie na UTF-8 przed zastosowaniem Base64 — w przeciwnym razie zdekodowany Base64 zachowa mojibake.