Dekodowanie i kodowanie Base64: na PDF, obraz lub plik

Wklej Base64 i odzyskaj plik: PDF, obraz, tekst albo JWT. Możesz też upuścić plik, żeby dostać jego Base64. Wszystko dzieje się w tej karcie.

Rozpoznaje 33 formaty plików po ich własnych bajtach · RFC 4648 · nic nie jest wysyłane
Zakodowano

Wklej coś powyżej, upuść plik na panel albo kliknij jeden z przykładów.

Wypróbuj

Wszystko zostaje w tej karcie: nic, co wklejasz lub upuszczasz, nie jest wysyłane, a zdekodowany HTML lub skrypt jest pokazywany jako tekst i nigdy nie jest uruchamiany.

3 bajty → 4 znaki
Przykład: Man
M77 · 4DBajt 1
a97 · 61Bajt 2
n110 · 6EBajt 3
1922546

Trzy bajty to 24 bity. Base64 tnie te same 24 bity na cztery grupy po sześć, a każda grupa wskazuje jeden z 64 znaków. Białe linie pokazują, gdzie kończą się bajty: nie pokrywają się z granicami grup i na tym polega cały trik.

Znak 1

16 + 2 + 1 = 19 T

Indeks 19 w alfabecie standardowym.

1tu kończy się bajtdodane, nie twojeinne w wariancie dla URLWskaż znak, aby zobaczyć, jak sumuje się jego sześć bitów.

Jak używać dekodera i kodera Base64 online

Wklej cokolwiek do jednego pola (tekst, Base64, cały data: URI albo JWT), kliknij Wybierz plik albo upuść plik na panel. Narzędzie samo ustala, w którą stronę zamieniać, pokazuje to na etykiecie, a drugie odczytanie zostawia o jedno kliknięcie dalej.

Przy dekodowaniu pliku dostajesz typ odczytany z samych bajtów, rozmiar, rozmiar obrazu w pikselach, kartę Podgląd dla obrazu lub PDF-a i pobieranie z właściwym rozszerzeniem. Przy kodowaniu dostajesz Base64, gotowy data: URI i informację, ile kodowanie kosztowało w rozmiarze. Opcje Alfabet, Dopełnienie i Podziały wierszy pod wynikiem zmieniają dane wyjściowe.

Dekodowanie Base64: wklejony ciąg Base64 zdekodowany do dokumentu PDF, z typem, rozmiarem i schematem 3 bajty → 4 znakiDekodowanie Base64: wklejony ciąg Base64 zdekodowany do dokumentu PDF, z typem, rozmiarem i schematem 3 bajty → 4 znakiJedno pole w obie stronyWklej tekst, Base64, data: URI albo JWT. Etykieta pokazuje, jak to odczytano, a menu to zmienia.Wybierz plikAlbo upuść go w dowolnym miejscu panelu: stanie się Base64 i data: URI bez opuszczania karty.Czym są te bajtyPrzy dekodowaniu wynik zaczyna się od typu pliku, rozmiaru i sygnatury, a potem są podgląd i pobieranie.Opcje wynikuAlfabet standardowy lub bezpieczny dla URL, dopełnienie włączone lub wyłączone i wiersze łamane dla MIME lub PEM.3 bajty → 4 znakiTwoje własne bajty pocięte na nowo na grupy po sześć. Wskaż znak, aby zobaczyć, jak sumują się jego bity.
Narzędzie dekoduje PDF. Wybierz numer, aby zobaczyć, do czego służy każda część.

Czym jest Base64 i po co istnieje?

Base64 zapisuje dowolne bajty za pomocą 64 znaków, które wszędzie przechodzą bez szwanku: A–Z, a–z, 0–9, + i /. Istnieje, bo e-mail, adresy URL, JSON i XML zbudowano z myślą o tekście, a surowy bajt może być znakiem sterującym, cudzysłowem albo bajtem zerowym i je zepsuć.

Bierze po trzy bajty naraz, układa ich 24 bity w rząd i tnie ten rząd na cztery grupy po sześć. Sześć bitów mieści 64 wartości, więc każda grupa wskazuje dokładnie jeden znak. Trzy bajty na wejściu, cztery znaki na wyjściu, zawsze: dlatego Base64 jest mniej więcej o jedną trzecią większy niż dane wejściowe.

Man → TWFu
M77 · 4DBajt 1
a97 · 61Bajt 2
n110 · 6EBajt 3
1922546TWFu

Trzy bajty to 24 bity. Base64 tnie je na nowo na cztery grupy po sześć, a każda grupa wskazuje jeden z 64 drukowalnych znaków, więc trzy bajty zawsze kosztują cztery znaki. Stąd bierze się wzrost o 33%.

Ma → TWE=
M77 · 4DBajt 1
a97 · 61Bajt 2
brak bajtu—Bajt 3
19224—TWE=

Dwa bajty to 16 bitów. Base64 dodaje 2 bity zerowe, aby dokończyć trzecią grupę, a jeden = stoi w miejscu czwartego znaku.

M → TQ==
M77 · 4DBajt 1
brak bajtu—Bajt 2
brak bajtu—Bajt 3
1916——TQ==

Jeden bajt to 8 bitów. Base64 dodaje 4 bity zerowe, aby dokończyć drugą grupę, a dwa = stoją w miejscu trzeciego i czwartego znaku. = nie niesie żadnych bitów.

Białe linie pokazują, gdzie kończy się jeden bajt, a zaczyna następny. Nie pokrywają się z grupami po sześć i to przesunięcie jest całym mechanizmem. Źródło: RFC 4648 §4

Jak zdekodować Base64 na PDF?

Wklej ciąg, a narzędzie odtworzy PDF: pokaże wersję i rozmiar, otworzy dokument we wbudowanym czytniku PDF twojej przeglądarki i pozwoli go pobrać. Nie musisz mówić, że to PDF, ani najpierw usuwać prefiksu data:.

PDF rozpoznaje się po pierwszych pięciu bajtach, %PDF-, więc plik zostaje zidentyfikowany nawet wtedy, gdy jego nazwa, typ podany przez nadawcę albo pole, w którym przyszedł, mówią co innego. Jeśli bajty nie są PDF-em, strona powie, czym są, zamiast bezskutecznie otwierać dokument, którego nigdy nie było.

Plik jest odtwarzany w twojej przeglądarce. Nic nie jest wysyłane, co ma znaczenie, gdy PDF to pasek wypłaty, umowa albo faktura.

JSON z API"document": "JVBERi0xLjcKJeLjz9MKMS…"Pole w odpowiedzi. Cudzysłowy nie należą do Base64.
Załącznik w e-mailuContent-Transfer-Encoding: base64MIME łamie treść co 76 znaków. Wklej ją razem z podziałami wierszy: są pomijane.
data: URIdata:application/pdf;base64,JVBERi0x…Wklej całość. Prefiks zostanie odczytany, nie musisz go usuwać ręcznie.
Pierwsze bajty mówią, co to jest
  1. 25%
  2. 50P
  3. 44D
  4. 46F
  5. 2D-
  6. 311
  7. 2E.
  8. 377

Pierwszych 5 bajtów, %PDF-, to cała sygnatura. Bajty od 6 do 8 to wersja: 1.7. Rozszerzenie pliku nie ma tu znaczenia, więc PDF, który ktoś nazwał .txt, i tak wraca jako PDF.

Trzy miejsca, z których kopiuje się PDF w Base64, i bajty, które go identyfikują po zdekodowaniu. Źródło: ISO 32000-1:2008 §7.5.2, RFC 8118 §8

Jak zamienić obraz na Base64 i kiedy warto to robić?

Upuść obraz, a dostaniesz jego Base64 i gotowy data: URI do wklejenia w HTML lub CSS. Trudniejsze pytanie brzmi, czy warto: Base64 zawsze kosztuje mniej więcej o jedną trzecią więcej, a osadzonego obrazu nie da się buforować osobno.

W drugą stronę, z Base64 na obraz, dostajesz format, rozmiar i prawdziwy rozmiar w pikselach odczytany z nagłówka samego pliku, a nie z obrazka na ekranie, oraz pobieranie z właściwym rozszerzeniem.

  • Plik na dysku12,9 kB 100%
  • Jako Base6417,3 kB +33,4%
  • Łamany co 76 znaków (MIME)17,5 kB +35,1%
  • Plik po gzip11,7 kB -9,5%
  • Base64 po gzip12,5 kB -3,2%
Osobny plik
  • pobierany raz
  • buforowany przez przeglądarkę i CDN
  • pobierany obok strony, a nie w jej środku
Ten sam obraz osadzony w kodzie
  • o jedną trzecią większy przed kompresją
  • buforowany tylko jako część pliku, który go zawiera
  • parsowany jako część arkusza stylów lub HTML

Kompresja odzyskuje większość: po gzip Base64 jest tylko o 7% większy od spakowanego pliku. Nie odzyska jednak osobnego wpisu obrazu w pamięci podręcznej: osadzony w stronie HTML obraz jest pobierany od nowa z każdą stroną, która go zawiera.

Praktyczna zasada: osadzaj kilkaset bajtów (ikonę, odstęp, logo w e-mailu), a wszystko większe linkuj. Ten obraz PNG (12,9 kB) jest już za tą granicą.

Zmierzone na obrazie, który dekoduje przykład w narzędziu: te same bajty przenoszone na pięć sposobów, gzip na najwyższym poziomie. Źródło: RFC 2045 §6.8

Base64 a Base64 bezpieczny dla URL: czym się różnią?

Base64 bezpieczny dla URL (RFC 4648 §5) to to samo kodowanie z dwoma zamienionymi znakami: + zmienia się w -, a / w _. Często pomija się też dopełnienie.

Używaj go wszędzie tam, gdzie wynik trafia do adresu URL, nazwy pliku lub ciasteczka. JSON Web Token używa go we wszystkich częściach, dlatego części tokenu nigdy nie kończą się na =. To narzędzie czyta oba alfabety i mówi ci, gdy jeden ciąg zawiera znaki z obu.

Standardowy (RFC 4648 §4)+/8=
Bezpieczny dla URL (RFC 4648 §5)-_8=
base64url w JWT (RFC 7515 §2)-_8
  • + → -Indeks 62. W ciągu zapytania dekoder formularzy czyta + jako spację, więc dane wracają błędne.
  • / → _Indeks 63. W ścieżce / zaczyna nowy segment, więc wartość zostaje rozcięta na dwie.
  • = pominiętyW URL znak = zwykle koduje się procentowo jako %3D (RFC 4648 §5). JWT całkowicie go pomija (RFC 7515 §2): sama długość mówi, gdzie kończą się bajty.

Pierwsze 62 znaki obu alfabetów są identyczne, dlatego narzędzie, które czyta oba alfabety, zdekoduje każdy z nich, a ta strona mówi ci, gdy ciąg zawiera znaki z obu.

Oba alfabety różnią się tylko 2 znakami. Poza tym są takie same. Źródło: RFC 4648 §5, RFC 7515 §2

Czy Base64 to szyfrowanie? Nie.

Base64 niczego nie ukrywa. Nie ma klucza ani sekretu, a odwrócenie go nie wymaga żadnego wysiłku: dekoder taki jak ten robi to w trakcie pisania.

Najbardziej liczy się to przy uwierzytelnianiu HTTP Basic: nagłówek niesie nazwę użytkownika i hasło jako jeden ciąg Base64, czytelny dla każdego, kto go zobaczy, dlatego RFC 7617 uznaje je za bezpieczne tylko przez szyfrowane połączenie, takie jak TLS. Jeśli coś ma pozostać nieczytelne, potrzebuje szyfrowania. Base64 tylko bezpiecznie przeprowadza bajty przez kanał zbudowany dla tekstu.

Nagłówek Authorization zbudowany tak, jak opisuje RFC 7617 §2

Authorization: Basic dXNlcjpwYXNzd29yZA==

Jeden krok wstecz: nie trzeba klucza ani hasła

user:password

RFC 7617 buduje nagłówek krok po kroku, a ostatni krok to cała jego „ochrona”: klient „uzyskuje basic-credentials, kodując tę sekwencję oktetów za pomocą Base64”. Jego §1 mówi, co to oznacza: jeśli połączenia nie chroni TLS lub podobny system, „identyfikator użytkownika i hasło są przesyłane przez sieć jako tekst jawny”. Base64 nie ma klucza, więc nie ma czego łamać: kto ma ten ciąg, ten ma hasło.

Dane logowania powyżej są zmyślone. Odczytanie ich wymaga jednego kroku i żadnego klucza: to właśnie znaczy „kodowanie, nie szyfrowanie”. Źródło: RFC 7617 §2, §1

Dlaczego zdekodowany tekst wygląda jak krzaki?

Bo Base64 przenosi bajty, a bajty stają się literami dopiero wtedy, gdy coś wybierze kodowanie znaków. Odczytaj tekst w UTF-8 tak, jakby był w ISO-8859-1, a é zamieni się w é; odczytaj ISO-8859-1 jako UTF-8, a pojawi się znak zastępczy.

data: URI może deklarować swój zestaw znaków, a ta strona czyta tekst właśnie w nim, zamiast przepuszczać wszystko przez UTF-8. Gdy twoja przeglądarka nie ma dekodera dla zadeklarowanego zestawu, strona mówi o tym wprost, zamiast po cichu pokazywać złe litery.

„Café” zapisane w UTF-8436166C3A9
„Café” zapisane w ISO-8859-1436166E9

W UTF-8 é to 2 bajty, a w ISO-8859-1 to 1 bajt. Base64 przenosi bajty, nie litery, więc sam ciąg nie powie dekoderowi, o które kodowanie chodziło.

Odczytane poprawnieCafé
Bajty UTF-8 odczytane jako ISO-8859-1Café
Bajty ISO-8859-1 odczytane jako UTF-8Caf�
Krzaki (mojibake) mają dwie postacie: czytelne bzdury (Café), gdy UTF-8 czyta się jako jednobajtową stronę kodową, i znak zastępczy (Caf�), gdy bajty w ogóle nie są poprawnym UTF-8. Źródło: RFC 4648 §4, RFC 2397 §4

Base64 w Pythonie, JavaScripcie, Javie, C#, Go, PowerShellu i w terminalu

Każdy język ma Base64 wbudowane. Pułapki są wszędzie te same: koduj bajty, a nie napis, i podawaj, w jakim kodowaniu znaków jest tekst.

Najostrzejszą krawędzią jest btoa() w JavaScripcie: przyjmuje tylko znaki do U+00FF, więc wszystko spoza Latin-1 trzeba najpierw zamienić na bajty UTF-8 za pomocą TextEncoder. Każdy przykład poniżej koduje i dekoduje „Man” i został uruchomiony, żeby sprawdzić jego wynik.

import base64

b64 = base64.b64encode("Man".encode("utf-8")).decode("ascii")
print(b64)                                    # TWFu
print(base64.b64decode(b64).decode("utf-8"))  # Man

Uruchomiono 26 października 2026: Python 3.14.4 wypisuje to, co pokazują komentarze.

Każdy fragment uruchomiono na „Man” i wypisuje on to, co pokazują jego komentarze. W terminalu starszych wersji macOS zamiast base64 -d jest -D. Źródło: gnu.org, developer.mozilla.org

Alfabet Base64 od 0 do 63

Każda grupa sześciu bitów to liczba od 0 do 63, a to jest tabela, w której się ją wyszukuje. Base64 rozróżnia wielkość liter: A to 0, a a to 26, więc zmiana wielkości litery psuje ciąg.

Warto rozpoznawać go na oko: ciąg samych A to ciąg zerowych bajtów, a ciąg Base64 zaczynający się od JVBER to PDF, od iVBOR PNG, a od /9j/ JPEG.

  1. A0
  2. B1
  3. C2
  4. D3
  5. E4
  6. F5
  7. G6
  8. H7
  9. I8
  10. J9
  11. K10
  12. L11
  13. M12
  14. N13
  15. O14
  16. P15
  17. Q16
  18. R17
  19. S18
  20. T19
  21. U20
  22. V21
  23. W22
  24. X23
  25. Y24
  26. Z25
  27. a26
  28. b27
  29. c28
  30. d29
  31. e30
  32. f31
  33. g32
  34. h33
  35. i34
  36. j35
  37. k36
  38. l37
  39. m38
  40. n39
  41. o40
  42. p41
  43. q42
  44. r43
  45. s44
  46. t45
  47. u46
  48. v47
  49. w48
  50. x49
  51. y50
  52. z51
  53. 052
  54. 153
  55. 254
  56. 355
  57. 456
  58. 557
  59. 658
  60. 759
  61. 860
  62. 961
  63. +Bezpieczny dla URL: -62
  64. /Bezpieczny dla URL: _63

0–25 to A–Z, 26–51 to a–z, 52–61 to 0–9. Oba alfabety różnią się tylko dwoma ostatnimi znakami tabeli, oznaczonymi powyżej. = w ogóle nie ma w tabeli: to nie wartość, tylko znak, że ostatnia grupa trzech bajtów była niepełna.

64 znaki w kolejności podanej w RFC 4648 §4. Liczba pod każdym to sześciobitowa wartość, którą oznacza. Źródło: RFC 4648 §4

Base64: pytania i odpowiedzi

Czym jest dekodowanie Base64?

Dekodowanie Base64 zamienia każdą grupę czterech znaków z powrotem na trzy bajty, które oznacza. Te bajty mogą być tekstem albo całym plikiem, na przykład PDF-em, obrazem PNG lub archiwum ZIP. To narzędzie czyta pierwsze bajty, aby ustalić, czym są, a potem pokazuje sam tekst lub plik zamiast ekranu pełnego symboli i pozwala go pobrać.

Jak zdekodować plik Base64?

Wklej ciąg Base64 do pola. Narzędzie go zdekoduje, porówna pierwsze bajty z sygnaturami plików, które zna (łącznie 33 formaty plików), nazwie format, pokaże podgląd obrazu lub PDF-a i da ci pobrać plik z właściwym rozszerzeniem. Nigdy nie musisz mówić, jaki to rodzaj pliku, a żeby to ustalić, nic nie jest wysyłane.

Do czego służy Base64?

Przenosi bajty przez miejsca zbudowane dla tekstu: załączniki e-mail (MIME), data: URI w HTML i CSS, pola binarne w JSON i XML, JSON Web Token, uwierzytelnianie HTTP Basic oraz certyfikaty i klucze w plikach PEM. W każdym z tych przypadków dane muszą przejść przez kanał, który mógłby zmienić lub zgubić surowe bajty, więc podróżują jako zwykłe litery i cyfry.

Czy Base64 to szyfrowanie?

Nie. Base64 to kodowanie, a nie szyfr: nie ma klucza ani sekretu i każdy może je odwrócić w mgnieniu oka, tak jak ta strona robi to w trakcie pisania. Traktuj wszystko zapisane w Base64 tak, jakby leżało na widoku. Jeśli dane mają pozostać prywatne, najpierw je zaszyfruj, a potem zakoduj zaszyfrowane bajty w Base64, jeśli muszą podróżować jako tekst.

Czy dekodowanie Base64 online jest bezpieczne?

Na tej stronie tak i możesz to sprawdzić: wszystko dekoduje JavaScript w twojej własnej karcie przeglądarki, a nic, co wklejasz lub upuszczasz, nie jest wysyłane. Zdekodowany HTML, SVG i skrypty są pokazywane jako tekst, nigdy nie są uruchamiane; obraz lub PDF wyświetla wbudowany czytnik przeglądarki. Podczas korzystania otwórz kartę Sieć w narzędziach dla deweloperów: żadne żądanie nie niesie twoich danych.

Dlaczego Base64 jest o 33% większy od oryginału?

Bo każde trzy bajty stają się czterema znakami, a cztery podzielone przez trzy to 1,33. Na końcu mogą dojść maksymalnie dwa znaki dopełnienia =, a łamanie wierszy co 76 znaków na potrzeby poczty dodaje podział do każdego wiersza, więc długi ciąg jest często mniej więcej o 35% większy od bajtów, które niesie. Kompresja, na przykład gzip, odzyskuje większość tej różnicy.

Czym jest Base64 bezpieczny dla URL?

To Base64, w którym + zastąpiono znakiem -, a / znakiem _, zgodnie z definicją w RFC 4648 §5, aby wynik mógł trafić do adresu URL, nazwy pliku lub ciasteczka bez escapowania. Dopełnienie zwykle też się pomija, jak w JSON Web Token. To narzędzie czyta oba alfabety, nawet wymieszane w jednym ciągu, i potrafi zapisać każdy z nich.

Dlaczego dekodowanie Base64 się nie udaje?

Prawie zawsze z powodu jednego znaku, którego nie ma w alfabecie Base64: wielokropka w miejscu, gdzie komunikator uciął ciąg, cudzysłowu drukarskiego z edytora tekstu albo twardej spacji z PDF-a. To narzędzie nazywa ten znak, pokazuje, gdzie stoi i na której pozycji, mówi, ile zdekodowało się poprawnie przed nim, i proponuje przycisk „Usuń go i zdekoduj”, gdy resztę da się jeszcze zdekodować.

Czy mogę zamienić Base64 na obraz?

Tak. Wklej ciąg, z prefiksem takim jak data:image/png;base64, albo bez niego, a obraz pojawi się z formatem, rozmiarem i prawdziwym rozmiarem w pikselach odczytanym z nagłówka samego pliku. Potem pobierz go z właściwym rozszerzeniem. PNG, JPEG, GIF, WebP, BMP, ICO i AVIF mają podgląd; SVG jest najpierw pokazywany jako tekst, bo SVG może zawierać skrypt.

Co oznacza = na końcu Base64?

Oznacza, że ostatnia grupa trzech bajtów była niepełna. Dwa pozostałe bajty stają się trzema znakami i jednym =, a jeden pozostały bajt dwoma znakami i ==. Dopełnienie nie niesie żadnych danych: mówi tylko dekoderowi, gdzie kończą się bajty. Wiele dekoderów, w tym ten, czyta też Base64, w którym dopełnienie pominięto.

Czy jest limit rozmiaru?

Plik wybrany lub upuszczony może mieć do 10 MB; większy zostaje odrzucony z podaniem nazwy i rozmiaru i nigdy nie jest czytany do połowy. Limit dla wklejonego tekstu to 14 349 002 znaki: tyle wystarcza na Base64 pliku o rozmiarze 10 MB razem z podziałami wierszy, więc wszystko, co narzędzie zakoduje, da się z powrotem zdekodować. Duże dane są czytane w tle, więc pisanie pozostaje płynne.

Czy mogę tu zdekodować JWT?

Tak. Wklej token, a jego nagłówek i ładunek zostaną wypisane jako sformatowany JSON, z datami obok pól iat i exp oraz podpisem pokazanym jako bajty. Ta strona tylko dekoduje trzy części base64url: nie weryfikuje podpisu i nigdy nie mówi, że token jest ważny, więc nie używaj jej, by zdecydować, czy mu ufać.

Czegoś brakuje?Zaproponuj funkcję lub nowe narzędzie