Jaki plik to Base64 zaczynające się od JVBERi0?
JVBERi0 = PDF PDF. Każdy PDF zaczyna się od bajtów `%PDF-`, a te w Base64 dają `JVBERi0`. `iVBORw0KGgo` to PNG, `/9j/` to JPEG, a `UEsDB` to ZIP, do którego należą też DOCX i XLSX.
Konwersja Base64 do PDF online: wklej czyste Base64, data URI lub całą odpowiedź JSON. Rozpoznaje prawdziwy typ pliku, pokazuje podgląd, pobiera plik i ostrzega przed uciętym PDF. Także PDF na Base64. Nic nie jest wysyłane.
Odczytano jako:
Upuść tutaj PDF lub dowolny inny plik albo kliknij, aby wybrać
Dowolny typ pliku · do 50 MB · nigdy nie jest wysyłany
Każdy typ pliku zaczyna się od stałych „magicznych” bajtów, więc jego Base64 zaczyna się od stałych znaków. Poniższe prefiksy są obliczane z prawdziwych nagłówków plików przez ten sam silnik, którego używa to narzędzie.
| Base64 zaczyna się od | Typ pliku | Magiczne bajty (hex) |
|---|---|---|
JVBERi0 | 25 50 44 46 2D | |
iVBORw0KGgoAAAANSUhEU | PNG | 89 50 4E 47 0D 0A 1A 0A 00 00 00 0D 49 48 44 52 |
/9j/ | JPEG | FF D8 FF |
R0lGOD | GIF | 47 49 46 38 |
UEsDB | ZIP / DOCX / XLSX / PPTX | 50 4B 03 04 |
0M8R4KGxGu | Office 97–2003 (DOC/XLS/PPT) | D0 CF 11 E0 A1 B1 1A E1 |
H4sI | Gzip | 1F 8B 08 |
UklGR | RIFF (WebP / WAV / AVI) | 52 49 46 46 |
SUQz | MP3 (ID3) | 49 44 33 |
e1xydG | RTF | 7B 5C 72 74 66 |
Tekst napisany i sprawdzony przez inżynierów, którzy tworzą narzędzia do kodowania w Go Tools. Każda długość, prefiks i przykład na tej stronie pochodzi z silnika samej strony i jest weryfikowany automatycznymi testami.
JVBERi0 = PDF PDF. Każdy PDF zaczyna się od bajtów `%PDF-`, a te w Base64 dają `JVBERi0`. `iVBORw0KGgo` to PNG, `/9j/` to JPEG, a `UEsDB` to ZIP, do którego należą też DOCX i XLSX.
+33,3% 4 znaki na każde 3 bajty, czyli o około 33,3% więcej: PDF o rozmiarze 1 MB (1 048 576 bajtów) zamienia się w 1 398 104 znaki. Z łamaniem wiersza co 76 znaków, jak w załącznikach e-mail, wychodzi 1 434 896 znaków, czyli o 36,8% więcej.
Base64 zapisuje dowolne bajty za pomocą zaledwie 64 bezpiecznych znaków tekstowych (A–Z, a–z, 0–9, +, /), z = jako dopełnieniem. Każde 3 bajty stają się 4 znakami. Dzięki temu plik binarny, taki jak PDF, może przejść przez kanały przenoszące wyłącznie tekst — pole JSON, element XML, treść e-maila, kolumnę tekstową w bazie danych. Konwersja Base64 do PDF po prostu odwraca ten proces: zamienia znaki z powrotem na bajty i zapisuje je z rozszerzeniem .pdf. Kłopot w tym, że prawdziwe Base64 rzadko przychodzi czyste: ma prefiks data:, sekwencje ucieczki JSON, łamanie wierszy albo inny alfabet, a wiele konwerterów po cichu tworzy wtedy plik, którego nie da się otworzyć.
%PDF-1.4 → bytes 25 50 44 46 2D 31 2E 34 JVBERi0xLjQ= → the same bytes in Base64 data:application/pdf;base64,JVBERi0xLjQ= → data URI form
Obsługuje data URI, sekwencje ucieczki JSON \/ i \n, cudzysłowy, łamanie wierszy MIME, znaki URL-safe - _, %2B %2F z adresów URL, nagłówki PEM i brakujące dopełnienie = — i pokazuje każdy wykonany krok.
Wklej {"code":0,"data":{"file":"JVBERi0…"}} bez zmian. Użyte zostaje najdłuższe pole wyglądające na Base64, a jego ścieżka (data.file) jest wyświetlana, więc wiadomo, które pole zostało zdekodowane.
PDF, PNG, JPEG, GIF, WebP, DOCX, XLSX, PPTX, ZIP, GZIP, MP3, MP4 i ponad 40 innych formatów rozpoznawanych jest po pierwszych bajtach. Pobrany plik dostaje właściwe rozszerzenie, nawet gdy prefiks twierdzi co innego.
Wykrywa PDF bez %%EOF (ucięty przy kopiowaniu albo przez limit długości kolumny), Base64 zakodowane dwukrotnie, hex wklejony jako Base64, dane skompresowane gzipem i zaszyfrowane PDF-y.
PDF-y otwierają się we wbudowanej przeglądarce PDF, obrazy i SVG są wyświetlane, tekst i JSON pokazywane jako tekst. HTML nigdy nie jest renderowany — widać tylko kod źródłowy — bo inaczej zostałby wykonany na tej stronie.
Upuść plik do 50 MB i otrzymaj czyste Base64 albo data URI, opcjonalnie w wariancie URL-safe lub z łamaniem co 76 znaków, wraz z dokładnym narzutem rozmiaru.
base64.b64decode open('out.pdf', 'wb').write(base64.b64decode(s)). Dla - i _ użyj urlsafe_b64decode; b64decode ignoruje znaki nowego wiersza, chyba że przekażesz validate=True.
java.util.Base64 Files.write(Path.of("out.pdf"), Base64.getMimeDecoder().decode(s)). getDecoder() odrzuca znaki nowego wiersza; getUrlDecoder() służy do - i _.
Buffer fs.writeFileSync('out.pdf', Buffer.from(s, 'base64')). Buffer akceptuje oba alfabety i ignoruje białe znaki, ale po cichu pomija też każdy inny niedozwolony znak zamiast zgłosić błąd, więc warto sprawdzić, czy wynik zaczyna się od %PDF-.
atob / Uint8Array.fromBase64 Przed utworzeniem Blob zbuduj Uint8Array. Uint8Array.fromBase64() to nowsza wbudowana metoda; sprawdź jej obsługę w docelowych przeglądarkach.
base64_decode file_put_contents('out.pdf', base64_decode($s, true)). Przekaż true, aby włączyć tryb ścisły — inaczej niedozwolone znaki są po cichu odrzucane.
Convert.FromBase64String File.WriteAllBytes("out.pdf", Convert.FromBase64String(s)). Białe znaki są dozwolone; - i _ już nie.
base64 -d / certutil macOS i Linux: base64 -d < in.txt > out.pdf. Windows: certutil -decode in.txt out.pdf.
JVBERi0xLjQKMSAwIG9iago8PCAvVHlwZSAvQ2F0YWxvZyAvUGFnZXMgMiAwIFIgPj4K…
PDF · wersja 1.4 · pobrany jako file.pdf
Zaczyna się od JVBERi0, czyli %PDF-. Nie ma czego czyścić, więc jest dekodowane bez zmian.
"data:application\/pdf;base64,JVBERi0xLjQK…"
Odczytano jako: usunięto otaczające cudzysłowy → cofnięto sekwencje ucieczki JSON → usunięto prefiks data URI (application/pdf)
json_encode w PHP i niektóre serializatory Javy zapisują / jako \/. Po wklejeniu do dekodera, który tego nie cofa, ukośnik wsteczny jest niedozwolonym znakiem.
{"code":0,"data":{"name":"invoice.pdf","file":"JVBERi0xLjQK…"}} Odczytano jako: wyjęto pole data.file z JSON
Nie trzeba ręcznie wycinać ciągu. Użyte zostaje najdłuższe pole wyglądające na Base64, a jego ścieżka jest wyświetlana.
data:application/pdf;base64,iVBORw0KGgoAAAANSUhEUgAA…
Ostrzeżenie: data URI podaje application/pdf, ale bajty to PNG. Zapisano jako file.png
Wiele konwerterów zapisałoby plik .pdf, którego nie otworzy żaden czytnik. Magiczne bajty mają pierwszeństwo przed etykietą.
255044462d312e370a…
Ostrzeżenie: to wygląda na zapis szesnastkowy — odczytane jako hex to PDF. [Dekoduj jako hex]
Cyfry szesnastkowe są poprawnymi znakami Base64, więc dekodowanie Base64 nie zgłasza błędu, tylko po cichu produkuje śmieci. 25 50 44 46 to %PDF.
Czyste Base64, data:application/pdf;base64,…, ciąg skopiowany z JSON z sekwencjami \/ albo cała odpowiedź API. Bardzo długie ciągi lepiej wczytać przez Otwórz plik .txt niż wklejać.
Wiersz pod polem wymienia każdy krok czyszczenia — usunięty prefiks, cofnięte sekwencje ucieczki, dodane dopełnienie, pole wyjęte z JSON. Jeśli coś jest nie tak, komunikat błędu podaje dokładny znak i jego pozycję.
Plakietka pokazuje typ odczytany z magicznych bajtów pliku. Żółta uwaga pojawia się, gdy to w ogóle nie jest PDF, gdy data URI podaje fałszywy typ albo gdy PDF urywa się przed %%EOF.
PDF-y otwierają się we wbudowanej przeglądarce PDF, obrazy i tekst są wyświetlane bezpośrednio na stronie. W razie potrzeby zmień nazwę pliku i kliknij Pobierz. Aby przejść w drugą stronę, przełącz na PDF / plik → Base64 i upuść plik.
data:application/pdf;base64, nie jest częścią Base64. Pozostawiony prefiks albo powoduje błąd (: i ; są niedozwolone), albo — w pobłażliwych dekoderach — psuje pierwsze bajty, przez co plik nie zaczyna się już od %PDF-.
base64.b64decode(value) # value = 'data:application/pdf;base64,JVBERi0…'
b64 = value.split(',', 1)[1] if value.startswith('data:') else value
pdf = base64.b64decode(b64) PDF jest plikiem binarnym. Zamiana zdekodowanych bajtów na ciąg znaków i zapisanie go z kodowaniem tekstowym podmienia nieprawidłowe bajty i zmienia znaki końca wiersza, co psuje tablicę odsyłaczy (xref).
fs.writeFileSync('out.pdf', Buffer.from(b64, 'base64').toString()) fs.writeFileSync('out.pdf', Buffer.from(b64, 'base64')) Base64.getDecoder() w Javie odrzuca znaki nowego wiersza. Base64 z e-maili albo z polecenia base64 w Linuksie jest łamane co 76 znaków. Należy użyć dekodera MIME albo najpierw usunąć białe znaki.
byte[] pdf = Base64.getDecoder().decode(wrapped); // IllegalArgumentException
byte[] pdf = Base64.getMimeDecoder().decode(wrapped);
JWT i wiele parametrów URL używa - i _ zamiast + i / oraz pomija dopełnienie =. Standardowy dekoder je odrzuca albo dekoduje niewłaściwe bajty.
base64.b64decode(token_part) # contains - and _
base64.urlsafe_b64decode(token_part + '=' * (-len(token_part) % 4))
W przeglądarce atob zwraca ciąg binarny, jeden znak na bajt. Przekazany do new Blob([str]) zostaje zakodowany jako UTF-8, więc każdy bajt powyżej 127 zamienia się w dwa. Najpierw skopiuj go do Uint8Array.
new Blob([atob(b64)], { type: 'application/pdf' }) const bytes = Uint8Array.from(atob(b64), c => c.charCodeAt(0));
new Blob([bytes], { type: 'application/pdf' }) PDF kończy się znacznikiem %%EOF. Jeśli Base64 zostało ucięte przez kolumnę VARCHAR, limit długości wiersza logu albo niepełne kopiowanie, plik da się zdekodować, ale czytniki pokażą błąd lub brakujące strony. Porównaj długość z tym, co wygenerował nadawca.
SELECT LENGTH(pdf_b64) FROM docs; -- 65535: suspiciously round
ALTER TABLE docs MODIFY pdf_b64 LONGTEXT; -- or store the bytes in a BLOB
{"filename": …, "content": "<base64>"}. Zakoduj tu plik, aby zbudować testowe żądanie dla Postmana lub cURL.%%EOF zdradza, że kolumna lub wiersz logu były za krótkie.+ / (standardowy, sekcja 4) oraz - _ (bezpieczny dla URL i nazw plików, sekcja 5). Base64 URL-safe zwykle pomija dopełnienie =. Oba warianty w jednym ciągu oznaczają, że był edytowany lub sklejony.= sprawia, że długość jest wielokrotnością 4. Bez niego resztę 2 lub 3 da się odtworzyć; reszta 1 jest niemożliwa w żadnym poprawnym Base64 — jakiś znak zginął albo został dodany. = w środku zwykle oznacza, że sklejono dwa ciągi.%PDF- dla PDF, 89 50 4E 47 dla PNG, 50 4B 03 04 dla formatów opartych na ZIP, takich jak DOCX i XLSX. Te bajty wyznaczają pierwsze znaki Base64, więc typ da się odczytać jeszcze przed dekodowaniem — zobacz tabelę w narzędziu.%%EOF. Jeśli nie ma go w ostatnich 1 024 bajtach, plik niemal na pewno został ucięty. Nagłówek może zaczynać się do 1 024 bajtów od początku; większość czytników i tak otwiera takie pliki, więc jest to zgłaszane, ale plik nie jest odrzucany.{"filename": "invoice.pdf", "mime": "application/pdf", "content": "…"}) albo użyć data URI, żeby odbiorca nie musiał zgadywać.%PDF-. Jedna linijka kodu wyłapuje błędne pola, podwójne kodowanie i strony błędów zwrócone jako Base64.multipart/form-data albo wstępnie podpisany URL do pobrania jest lżejszy dla obu stron.BLOB/bytea jest o jedną trzecią mniejsza i nie może zostać po cichu ucięta jak VARCHAR. Na Base64 koduj dopiero na granicy API.data:application/pdf;base64,, cudzysłowy, łamanie wierszy i sekwencje ucieczki JSON mogą zostać — są usuwane automatycznie. data: został zdekodowany jako część danych; bajty zapisano jako tekst zamiast binarnie; ciąg został ucięty (brak %%EOF na końcu); Base64 zakodowano dwukrotnie; albo to w ogóle nie jest PDF — na przykład PNG lub komunikat błędu w JSON. Wklej tu ten sam ciąg: każdy z tych przypadków ma własne ostrzeżenie. JVBERi0 to PDF, iVBORw0KGgo to PNG, /9j/ to JPEG, R0lGOD to GIF, UEsDB to ZIP (a więc także DOCX, XLSX, PPTX), H4sI to gzip. Narzędzie odczytuje magiczne bajty po zdekodowaniu, pokazuje typ i zapisuje plik z pasującym rozszerzeniem. data:application/pdf;base64,JVBERi0…. Przeglądarki mogą je otworzyć bezpośrednio jako link lub src. API zwykle oczekują tylko części Base64 po przecinku. %PDF-. Wyświetlany typ to to, czym bajty są naprawdę. Częste niespodzianki to skan w PNG lub JPEG, plik DOCX, ZIP z kilkoma PDF-ami albo komunikat błędu w JSON lub HTML zakodowany w Base64 zamiast dokumentu. %%EOF. Jeśli go brakuje, Base64 niemal na pewno zostało ucięte: skopiowane tylko częściowo, obcięte przez kolumnę bazy danych, np. MySQL TEXT (65 535 bajtów), albo skrócone przez limit długości wiersza logu. Trzeba ponownie pobrać pełny ciąg — dekodowanie nie odtworzy brakujących danych. Kodowanie i formatowanie
Pełna tablica ASCII: 128 znaków w systemie dziesiętnym, szesnastkowym, ósemkowym i dwójkowym oraz dwukierunkowy konwerter. Znaki sterujące z sekwencjami escape, notacją z daszkiem i miejscem, gdzie naprawdę się je spotyka.
Kodowanie i formatowanie
Generuj EAN-13, UPC-A, Code 128, Code 39 i 11 innych typów kodów kreskowych jako SVG lub gotowy do druku PNG. Wpisz 12 cyfr — cyfra kontrolna dopisze się sama; przy błędzie strona wskaże właściwą cyfrę.
Kodowanie i formatowanie
Zakoduj i zdekoduj Base64 online za darmo. Konwersja w czasie rzeczywistym z pełną obsługą UTF-8 i emoji. 100% w przeglądarce, bez rejestracji.
Kodowanie i formatowanie
Zdekoduj ciąg Base64 lub data URI z powrotem na obraz w przeglądarce. Podejrzyj, odczytaj wymiary i MIME, a potem pobierz jako PNG, JPG, GIF, SVG. Bez przesyłania.
Kodowanie i formatowanie
Konwertuj CSV na JSON w przeglądarce. RFC 4180, wnioskowanie typów, nagłówek, big-int safe. 100% prywatnie, bez wysyłki.
Kodowanie i formatowanie
Wklej krzaki i odzyskaj oryginalny tekst. Narzędzie sprawdza wszystkie łańcuchy kodowań — UTF-8, GBK, Big5, Shift_JIS, EUC-KR, Windows-1252 — porządkuje wyniki i pokazuje dokładny łańcuch. Za darmo, lokalnie w przeglądarce.