Какой файл закодирован в Base64, который начинается с JVBERi0?
JVBERi0 = PDF PDF. Любой PDF начинается с байтов `%PDF-`, а в Base64 они превращаются в `JVBERi0`. `iVBORw0KGgo` — это PNG, `/9j/` — JPEG, `UEsDB` — ZIP, в том числе DOCX и XLSX.
Base64 в PDF онлайн: вставьте чистый Base64, data URI или весь JSON-ответ. Инструмент определит настоящий тип файла, покажет и скачает его, предупредит об обрезанном PDF. Есть и PDF в Base64. Ничего не загружается.
Как прочитано:
Перетащите сюда PDF или любой другой файл либо нажмите, чтобы выбрать
Любой тип файла · до 50 МБ · никуда не загружается
Каждый тип файла начинается с фиксированных «магических» байтов, поэтому его Base64 тоже начинается с фиксированных символов. Префиксы ниже вычислены из заголовков реальных файлов тем же движком, на котором работает этот инструмент.
| Base64 начинается с | Тип файла | Магические байты (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 |
Написано и проверено инженерами, которые разрабатывают инструменты кодирования Go Tools. Каждая длина, префикс и пример на этой странице получены движком самой страницы и проверены автоматическими тестами.
JVBERi0 = PDF PDF. Любой PDF начинается с байтов `%PDF-`, а в Base64 они превращаются в `JVBERi0`. `iVBORw0KGgo` — это PNG, `/9j/` — JPEG, `UEsDB` — ZIP, в том числе DOCX и XLSX.
+33,3 % На каждые 3 байта приходится 4 символа, то есть примерно на 33,3 % больше: PDF размером 1 МБ (1 048 576 байт) превращается в 1 398 104 символа. С переносом строки каждые 76 символов, как в почтовых вложениях, выходит 1 434 896 символов, или на 36,8 % больше.
Base64 записывает произвольные байты всего 64 безопасными текстовыми символами (A–Z, a–z, 0–9, +, /), а = служит дополнением. Каждые 3 байта превращаются в 4 символа. Благодаря этому двоичный файл вроде PDF можно передать по каналам, которые понимают только текст: в поле JSON, элементе XML, теле письма, текстовом столбце базы данных. Конвертация Base64 в PDF — обратная операция: символы снова превращаются в байты и сохраняются с расширением .pdf. Проблема в том, что настоящий Base64 редко приходит чистым: с префиксом data:, JSON-экранированием, переносами строк или другим алфавитом, и многие конвертеры молча выдают файл, который не открывается.
%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
Понимает data URI, JSON-экранирования \/ и \n, кавычки, переносы строк MIME, URL-safe - _, %2B %2F из URL, заголовки PEM и недостающее дополнение = — и показывает каждый выполненный шаг.
Вставьте {"code":0,"data":{"file":"JVBERi0…"}} целиком. Берется самое длинное поле, похожее на Base64, и показывается его путь (data.file), так что видно, какое поле декодировано.
PDF, PNG, JPEG, GIF, WebP, DOCX, XLSX, PPTX, ZIP, GZIP, MP3, MP4 и еще более 40 форматов распознаются по первым байтам. Скачанный файл получает правильное расширение, даже если префикс утверждает другое.
Предупреждает о PDF без %%EOF (обрезан при копировании или ограничением длины столбца), о Base64, закодированном дважды, о hex, вставленном вместо Base64, о данных в gzip и о зашифрованных PDF.
PDF открывается во встроенном просмотрщике браузера, изображения и SVG отображаются, текст и JSON показываются как текст. HTML никогда не отрисовывается — только его исходный код, иначе он выполнился бы на этой странице.
Перетащите файл до 50 МБ и получите чистый Base64 или data URI, при желании в варианте URL-safe или с переносом по 76 символов, с точным приростом размера.
base64.b64decode open('out.pdf', 'wb').write(base64.b64decode(s)). Для - и _ используйте urlsafe_b64decode; b64decode игнорирует переносы строк, если не передать validate=True.
java.util.Base64 Files.write(Path.of("out.pdf"), Base64.getMimeDecoder().decode(s)). getDecoder() отвергает переносы строк; getUrlDecoder() нужен для - и _.
Buffer fs.writeFileSync('out.pdf', Buffer.from(s, 'base64')). Buffer принимает оба алфавита и игнорирует пробельные символы, но и любые другие недопустимые символы молча пропускает, а не выбрасывает ошибку, поэтому проверьте, что результат начинается с %PDF-.
atob / Uint8Array.fromBase64 Прежде чем создавать Blob, соберите Uint8Array. Uint8Array.fromBase64() — более новый встроенный метод; проверьте его поддержку в целевых браузерах.
base64_decode file_put_contents('out.pdf', base64_decode($s, true)). Передайте true для строгого режима, иначе недопустимые символы молча отбрасываются.
Convert.FromBase64String File.WriteAllBytes("out.pdf", Convert.FromBase64String(s)). Пробельные символы допускаются, - и _ — нет.
base64 -d / certutil macOS и Linux: base64 -d < in.txt > out.pdf. Windows: certutil -decode in.txt out.pdf.
JVBERi0xLjQKMSAwIG9iago8PCAvVHlwZSAvQ2F0YWxvZyAvUGFnZXMgMiAwIFIgPj4K…
PDF · версия 1.4 · скачивается как file.pdf
Начинается с JVBERi0, то есть с %PDF-. Очищать нечего, строка декодируется как есть.
"data:application\/pdf;base64,JVBERi0xLjQK…"
Как прочитано: удалены обрамляющие кавычки → сняты JSON-экранирования → удален префикс data URI (application/pdf)
json_encode в PHP и некоторые Java-сериализаторы записывают / как \/. Если вставить такую строку в декодер, который не снимает экранирование, обратная косая черта окажется недопустимым символом.
{"code":0,"data":{"name":"invoice.pdf","file":"JVBERi0xLjQK…"}} Как прочитано: из JSON взято поле data.file
Вырезать строку вручную не нужно. Берется самое длинное поле, похожее на Base64, и показывается его путь.
data:application/pdf;base64,iVBORw0KGgoAAAANSUhEUgAA…
Предупреждение: в data URI указан application/pdf, но по байтам это PNG. Сохранено как file.png
Многие конвертеры записали бы .pdf, который не откроет ни одна программа. Магические байты важнее пометки.
255044462d312e370a…
Предупреждение: похоже на шестнадцатеричную строку — если читать как hex, это PDF. [Декодировать как hex]
Шестнадцатеричные цифры — допустимые символы Base64, поэтому декодирование Base64 не падает, а молча выдает мусор. 25 50 44 46 — это %PDF.
Чистый Base64, data:application/pdf;base64,…, строку, скопированную из JSON с экранированием \/, или весь ответ API. Очень длинные строки удобнее не вставлять, а загрузить кнопкой Открыть файл .txt.
Строка под полем перечисляет каждый шаг очистки: удален префикс, сняты экранирования, добавлено дополнение, взято поле из JSON. Если что-то не так, ошибка укажет конкретный символ и его позицию.
Значок показывает тип, определенный по магическим байтам файла. Желтое предупреждение появляется, если это на самом деле не PDF, если data URI указывает неверный тип или если PDF обрывается до %%EOF.
PDF открывается во встроенном просмотрщике браузера, изображения и текст показываются прямо на странице. При желании переименуйте файл и нажмите Скачать. Для обратного направления переключитесь на PDF / файл → Base64 и перетащите файл.
data:application/pdf;base64, не входит в Base64. Если его оставить, декодер либо выбросит ошибку (: и ; недопустимы), либо, если он нестрогий, испортит первые байты, и файл перестанет начинаться с %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 — двоичный файл. Если превратить декодированные байты в строку и записать ее в текстовой кодировке, недопустимые байты будут заменены, а концы строк изменятся, и таблица перекрестных ссылок сломается.
fs.writeFileSync('out.pdf', Buffer.from(b64, 'base64').toString()) fs.writeFileSync('out.pdf', Buffer.from(b64, 'base64')) Base64.getDecoder() в Java отвергает переносы строк. Base64 из писем или из base64 в Linux разбит на строки по 76 символов. Используйте MIME-декодер или сначала удалите пробельные символы.
byte[] pdf = Base64.getDecoder().decode(wrapped); // IllegalArgumentException
byte[] pdf = Base64.getMimeDecoder().decode(wrapped);
JWT и многие параметры URL используют - и _ вместо + и / и отбрасывают дополнение =. Стандартный декодер их отвергнет или выдаст не те байты.
base64.b64decode(token_part) # contains - and _
base64.urlsafe_b64decode(token_part + '=' * (-len(token_part) % 4))
В браузере atob возвращает двоичную строку — один символ на байт. Если передать ее в new Blob([str]), она будет закодирована в UTF-8, и каждый байт больше 127 превратится в два. Сначала скопируйте ее в 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 заканчивается на %%EOF. Если Base64 обрезал столбец VARCHAR, ограничение длины строки лога или неполное копирование, файл декодируется, но программы просмотра показывают ошибку или часть страниц пропадает. Сравните длину с тем, что отправил источник.
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>"}. Закодируйте файл здесь и соберите тестовый запрос для Postman или cURL.%%EOF подскажет, что столбец или строка лога оказались слишком короткими.+ / (стандартный, раздел 4) и - _ (безопасный для URL и имен файлов, раздел 5). В URL-safe Base64 дополнение = обычно опускают. Если в одной строке встречаются оба варианта, ее правили вручную или склеили.= делает длину кратной 4. Без него остаток 2 или 3 можно восстановить; остаток 1 невозможен ни для какого корректного Base64 — символ потерялся или добавился лишний. = в середине обычно означает, что две строки склеили.%PDF- у PDF, 89 50 4E 47 у PNG, 50 4B 03 04 у форматов на основе ZIP, таких как DOCX и XLSX. Эти байты задают первые символы Base64, поэтому тип можно прочитать еще до декодирования — см. таблицу в инструменте.%%EOF. Если маркера нет в последних 1 024 байтах, файл почти наверняка обрезан. Заголовок может начинаться со смещением до 1 024 байт; большинство программ такие файлы все же открывают, поэтому это отмечается, но файл не отвергается.{"filename": "invoice.pdf", "mime": "application/pdf", "content": "…"}) или используйте data URI, чтобы получателю не пришлось угадывать.%PDF-. Одна строка кода ловит не то поле, двойное кодирование и страницы ошибок, вернувшиеся в виде Base64.multipart/form-data или предподписанная ссылка на скачивание легче для обеих сторон.BLOB/bytea на треть меньше, и его нельзя молча обрезать, как VARCHAR. Кодируйте в Base64 только на границе API.data:application/pdf;base64,, кавычки, переносы строк и JSON-экранирования можно не убирать — они удаляются автоматически. data: декодирован вместе с данными; байты записаны как текст, а не в двоичном режиме; строка обрезана (в конце нет %%EOF); Base64 закодирован дважды; или это вообще не PDF — например, PNG или сообщение об ошибке в JSON. Вставьте сюда ту же строку: для каждого из этих случаев есть отдельное предупреждение. JVBERi0 — это PDF, iVBORw0KGgo — PNG, /9j/ — JPEG, R0lGOD — GIF, UEsDB — ZIP (а значит, и DOCX, XLSX, PPTX), H4sI — gzip. Инструмент читает магические байты декодированных данных, показывает тип и сохраняет файл с подходящим расширением. data:application/pdf;base64,JVBERi0…. Браузер может открыть его напрямую как ссылку или src. API обычно ждут только часть Base64 после запятой. %PDF-. Показанный тип — это то, чем байты являются на самом деле. Частые сюрпризы: скан в PNG или JPEG, DOCX, ZIP с несколькими PDF внутри или сообщение об ошибке в JSON либо HTML, которое закодировали в Base64 вместо документа. %%EOF. Если его нет, Base64 почти наверняка обрезан: скопирован не полностью, урезан столбцом базы данных, например TEXT в MySQL (65 535 байт), или укорочен ограничением длины строки лога. Получите строку целиком заново: недостающие данные декодирование не восстановит. Кодирование и форматирование
Полная таблица ASCII: 128 символов в десятичном, шестнадцатеричном, восьмеричном и двоичном виде плюс конвертер текста и кодов. Управляющие символы — с escape-последовательностями, caret-записью и тем, где их встретить.
Кодирование и форматирование
Создавайте EAN-13, UPC-A, Code 128, Code 39 и ещё 11 типов штрихкодов — экспорт в SVG или PNG для печати. Введите 12 цифр, и контрольная цифра подставится сама; ошиблись — страница назовёт, какая цифра должна быть.
Кодирование и форматирование
Декодирование и кодирование Base64 онлайн бесплатно. Преобразование в реальном времени с полной поддержкой UTF-8 и эмодзи. Полная приватность — работает в браузере. Без регистрации.
Кодирование и форматирование
Декодируйте строку Base64 или data URI обратно в изображение прямо в браузере. Предпросмотр, размеры и MIME, затем скачивание как PNG, JPG, GIF, SVG. Без загрузки.
Кодирование и форматирование
Конвертируйте CSV в JSON в браузере. RFC 4180, определение типов, заголовок, безопасность больших целых. 100% приватно, без загрузки.
Кодирование и форматирование
Вставьте кракозябры — и получите исходный текст. Перебираются все правдоподобные цепочки кодировок: UTF-8, Windows-1251, GBK, Big5, Shift_JIS, EUC-KR. Бесплатно, локально в браузере.