Base64 декодер и кодировщик: в PDF, картинку или файл

Вставьте Base64 и получите файл обратно: PDF, картинку, текст или JWT. Или перетащите файл, чтобы перевести его в Base64. Всё в этой вкладке.

Распознаёт 33 формата файлов по их собственным байтам · RFC 4648 · ничего не загружается
Закодировано

Вставьте что-нибудь в поле выше, перетащите файл на карточку или нажмите один из примеров.

Примеры

Всё остаётся в этой вкладке: ничего из того, что вы вставляете или перетаскиваете, не загружается, а декодированный HTML или скрипт показывается как текст и никогда не выполняется.

3 байта → 4 символа
Пример: Man
M77 · 4DБайт 1
a97 · 61Байт 2
n110 · 6EБайт 3
1922546

Три байта — это 24 бита. Base64 режет те же 24 бита на четыре группы по шесть, и каждая группа обозначает один из 64 символов. Белые линии — там, где кончаются байты: они не совпадают с границами групп, и в этом весь фокус.

Символ 1

16 + 2 + 1 = 19 T

Индекс 19 в стандартном алфавите.

1здесь кончается байтдобавлено, не вашеиначе в URL-безопасномНаведите на символ, чтобы увидеть, как складываются его шесть бит.

Как пользоваться Base64 декодером и кодировщиком онлайн

Вставьте что угодно в одно поле (текст, Base64, целый data: URI или JWT), нажмите Выбрать файл или перетащите файл на карточку. Инструмент сам понимает, в какую сторону преобразовывать, пишет это на метке и позволяет одним кликом прочитать ввод наоборот.

При декодировании файла вы получаете тип, определённый по самим байтам, размер, размер изображения в пикселях, вкладку Просмотр для изображения или PDF и скачивание с правильным расширением. Если закодировать файл в Base64, вы получите сам Base64, готовый data: URI и то, во сколько кодирование обошлось по размеру. Параметры Алфавит, Дополнение и Переносы строк под результатом меняют вывод.

Base64 декодер: вставленная строка Base64 декодирована в документ PDF, с типом, размером и схемой «3 байта → 4 символа»Base64 декодер: вставленная строка Base64 декодирована в документ PDF, с типом, размером и схемой «3 байта → 4 символа»Одно поле в обе стороныВставьте текст, Base64, data: URI или JWT. Метка показывает, как это прочитано, а меню меняет направление.Выбрать файлИли перетащите файл в любое место карточки: он станет Base64 и data: URI, не покидая вкладку.Что это за байтыПри декодировании результат начинается с типа файла, размера и сигнатуры, затем идут просмотр и скачивание.Параметры выводаСтандартный или URL-безопасный алфавит, дополнение вкл. или выкл. и переносы строк для MIME или PEM.3 байта → 4 символаВаши собственные байты, заново разрезанные на группы по шесть бит. Наведите на символ, чтобы увидеть, как складываются его биты.
Инструмент декодирует PDF. Выберите номер, чтобы узнать, что делает каждая часть.

Что такое Base64 и зачем он нужен?

Base64 записывает любые байты 64 символами, которые проходят где угодно: A–Z, a–z, 0–9, + и /. Он существует потому, что почта, URL, JSON и XML создавались для текста, а сырой байт может оказаться управляющим кодом, кавычкой или нулевым байтом и сломать их.

Он берёт по три байта за раз, выстраивает их 24 бита в ряд и режет этот ряд на четыре группы по шесть. В шесть бит помещается 64 значения, поэтому каждая группа обозначает ровно один символ. Три байта на входе, четыре символа на выходе, всегда: вот почему Base64 примерно на треть больше исходных данных.

Man → TWFu
M77 · 4DБайт 1
a97 · 61Байт 2
n110 · 6EБайт 3
1922546TWFu

Три байта — это 24 бита. Base64 заново режет их на четыре группы по шесть, и каждая группа обозначает один из 64 печатных символов, поэтому три байта всегда превращаются в четыре символа. Отсюда и рост на 33 %.

Ma → TWE=
M77 · 4DБайт 1
a97 · 61Байт 2
нет байта—Байт 3
19224—TWE=

Два байта — это 16 бит. Base64 добавляет 2 нулевых бита, чтобы закончить третью группу, а один = стоит на месте четвёртого символа.

M → TQ==
M77 · 4DБайт 1
нет байта—Байт 2
нет байта—Байт 3
1916——TQ==

Один байт — это 8 бит. Base64 добавляет 4 нулевых бита, чтобы закончить вторую группу, а два = стоят на месте третьего и четвёртого символов. = вообще не несёт битов.

Белые линии отмечают, где кончается один байт и начинается следующий. С группами по шесть они не совпадают, и в этом сдвиге весь механизм. Источник: RFC 4648 §4

Как декодировать Base64 в PDF?

Вставьте строку, и инструмент восстановит PDF: покажет версию и размер, откроет документ во встроенном просмотрщике PDF вашего браузера и даст его скачать. Не нужно указывать, что это PDF, и не нужно сначала убирать префикс data:.

PDF узнаётся по первым пяти байтам, %PDF-, поэтому файл определяется, даже если его имя, тип, заявленный отправителем, или поле, в котором он пришёл, говорят другое. Если байты — не PDF, страница скажет, что это, вместо того чтобы безуспешно открывать документ, которого никогда не было.

Файл собирается в вашем браузере. Ничего не загружается на сервер, а это важно, когда PDF — расчётный листок, договор или счёт.

JSON из API"document": "JVBERi0xLjcKJeLjz9MKMS…"Поле в ответе. Кавычки не входят в Base64.
Вложение в письмеContent-Transfer-Encoding: base64MIME разбивает тело на строки по 76 символов. Вставляйте вместе с переносами: они пропускаются.
data: URIdata:application/pdf;base64,JVBERi0x…Вставляйте целиком. Префикс прочитается сам, убирать его вручную не нужно.
Первые байты говорят, что это
  1. 25%
  2. 50P
  3. 44D
  4. 46F
  5. 2D-
  6. 311
  7. 2E.
  8. 377

Первые 5 байт, %PDF-, — это и есть вся сигнатура. Байты с 6 по 8 — это версия: 1.7. Расширение файла здесь ни при чём, поэтому PDF, который кто-то назвал .txt, всё равно вернётся как PDF.

Три места, откуда обычно копируют PDF в Base64, и байты, по которым его узнают после декодирования. Источник: ISO 32000-1:2008 §7.5.2, RFC 8118 §8

Как перевести картинку в Base64 и когда это стоит делать?

Перетащите изображение и получите его Base64 и готовый data: URI, чтобы вставить в HTML или CSS. Стоит ли это делать — вопрос сложнее: Base64 всегда обходится примерно на треть дороже, а встроенную картинку нельзя закешировать отдельно.

В обратную сторону, из Base64 в картинку, вы получаете формат, размер и настоящий размер в пикселях, прочитанный из заголовка самого файла, а не с картинки на экране, и скачивание с правильным расширением.

  • Файл на диске12,9 кБ 100 %
  • В виде Base6417,3 кБ +33,4 %
  • С переносом через 76 символов (MIME)17,5 кБ +35,1 %
  • Файл после gzip11,7 кБ -9,5 %
  • Base64 после gzip12,5 кБ -3,2 %
Отдельный файл
  • скачивается один раз
  • кешируется браузером и CDN
  • загружается рядом со страницей, а не внутри неё
То же изображение, встроенное в код
  • на треть больше до сжатия
  • кешируется только вместе с файлом, в котором лежит
  • разбирается вместе с таблицей стилей или HTML

Сжатие возвращает почти всю разницу: после gzip Base64 всего на 7 % больше сжатого файла. Чего оно не вернёт, так это собственной записи изображения в кеше: встроенное в HTML-страницу, оно скачивается заново с каждой страницей, где встречается.

Практическое правило: встраивайте несколько сотен байт (иконку, разделитель, логотип в письме), а всё, что больше, подключайте ссылкой. Это изображение PNG (12,9 кБ) уже за этой чертой.

Измерено на изображении, которое декодирует пример в инструменте: одни и те же байты, переданные пятью способами, gzip на максимальном уровне. Источник: RFC 2045 §6.8

Base64 и URL-безопасный Base64: в чём разница?

URL-безопасный Base64 (RFC 4648 §5) — та же кодировка, в которой заменены два символа: + становится -, а / становится _. Дополнение при этом тоже часто опускают.

Используйте его везде, где результат попадает в URL, имя файла или cookie. JSON Web Token использует его во всех частях, поэтому части токена никогда не заканчиваются на =. Этот инструмент читает оба алфавита и сообщает, если в одной строке есть символы обоих.

Стандартный (RFC 4648 §4)+/8=
URL-безопасный (RFC 4648 §5)-_8=
base64url в JWT (RFC 7515 §2)-_8
  • + → -Индекс 62. В строке запроса декодер форм читает + как пробел, и данные возвращаются испорченными.
  • / → _Индекс 63. В пути / начинает новый сегмент, и значение разрезается надвое.
  • = отброшенВ URL знак = обычно кодируется процентами как %3D (RFC 4648 §5). JWT отбрасывает его совсем (RFC 7515 §2): одна только длина говорит, где кончаются байты.

Первые 62 символа двух алфавитов одинаковы, поэтому инструмент, который читает оба алфавита, декодирует любой из них, а эта страница сообщает, если в строке есть символы обоих.

Два алфавита различаются только 2 символами. Во всём остальном они одинаковы. Источник: RFC 4648 §5, RFC 7515 §2

Base64 — это шифрование? Нет.

Base64 ничего не скрывает. Нет ни ключа, ни секрета, а обратное преобразование не требует никаких усилий: декодер вроде этого делает его прямо при вводе.

Особенно это важно для аутентификации HTTP Basic: заголовок несёт имя пользователя и пароль одной строкой Base64, которую может прочитать любой, кто её увидит, поэтому RFC 7617 считает такую схему безопасной только поверх зашифрованного соединения, например TLS. Если что-то должно оставаться нечитаемым, нужно шифрование. Base64 лишь безопасно проводит байты через канал, созданный для текста.

Заголовок Authorization в том виде, как его строит RFC 7617 §2

Authorization: Basic dXNlcjpwYXNzd29yZA==

Один шаг обратно: не нужен ни ключ, ни пароль

user:password

RFC 7617 строит заголовок шаг за шагом, и последний шаг — это вся его «защита»: клиент «получает basic-credentials, кодируя эту последовательность октетов с помощью Base64». Его §1 объясняет, что это значит: если соединение не защищено TLS или подобной системой, «идентификатор пользователя и пароль передаются по сети открытым текстом». У Base64 нет ключа, поэтому и взламывать нечего: у кого есть строка, у того есть пароль.

Учётные данные выше выдуманы. Чтобы прочитать их обратно, нужен один шаг и никакого ключа: вот что значит «кодирование, а не шифрование». Источник: RFC 7617 §2, §1

Почему декодированный текст превратился в кракозябры?

Потому что Base64 переносит байты, а байты становятся буквами, только когда что-то выбирает кодировку символов. Прочитайте текст в UTF-8 как ISO-8859-1, и é превратится в é; прочитайте ISO-8859-1 как UTF-8, и получится знак замены.

data: URI может объявлять свою кодировку, и эта страница читает текст именно в ней, а не прогоняет всё через UTF-8. Если в вашем браузере нет декодера для объявленной кодировки, страница прямо об этом скажет, а не будет молча показывать неверные буквы.

«Café» в UTF-8436166C3A9
«Café» в ISO-8859-1436166E9

В UTF-8 é — это 2 байта, в ISO-8859-1 — 1 байт. Base64 переносит байты, а не буквы, поэтому сама строка не может подсказать декодеру, что имелось в виду.

Прочитано правильноCafé
Байты UTF-8, прочитанные как ISO-8859-1Café
Байты ISO-8859-1, прочитанные как UTF-8Caf�
У кракозябр (mojibake) две формы: читаемая бессмыслица (Café), когда UTF-8 читают как однобайтовую кодовую страницу, и знак замены (Caf�), когда байты вообще не являются корректным UTF-8. Источник: RFC 4648 §4, RFC 2397 §4

Base64 в Python, JavaScript, Java, C#, Go, PowerShell и в терминале

Base64 встроен в каждый язык. Ловушки везде одни и те же: кодируйте байты, а не строку, и указывайте, в какой кодировке записан текст.

Самое острое место — btoa() в JavaScript: он принимает только символы до U+00FF, поэтому всё, что выходит за пределы Latin-1, сначала нужно превратить в байты UTF-8 через TextEncoder. Каждый пример ниже кодирует и декодирует «Man», и каждый был запущен, чтобы проверить вывод.

import base64

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

Запущено 26 октября 2026 г.: Python 3.14.4 выводит то, что показано в комментариях.

Каждый фрагмент запускали на «Man», и он выводит то, что показано в его комментариях. На старых версиях macOS вместо base64 -d в терминале пишут -D. Источник: gnu.org, developer.mozilla.org

Алфавит Base64: от 0 до 63

Каждая группа из шести бит — число от 0 до 63, а это таблица, по которой его ищут. Base64 чувствителен к регистру: A — это 0, а a — 26, так что смена регистра буквы ломает строку.

Его стоит узнавать с первого взгляда: ряд A — это ряд нулевых байтов, а строка Base64, которая начинается с JVBER, — это PDF, с iVBOR — PNG, а с /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. +URL-безопасный: -62
  64. /URL-безопасный: _63

0–25 — это A–Z, 26–51 — a–z, 52–61 — 0–9. Два алфавита различаются только двумя последними символами таблицы, они отмечены выше. = в таблице нет вовсе: это не значение, а знак того, что последняя группа из трёх байтов была неполной.

64 символа в порядке, который задаёт RFC 4648 §4. Число под каждым — шестибитное значение, которое он обозначает. Источник: RFC 4648 §4

Base64: вопросы и ответы

Что значит декодировать Base64?

Декодирование Base64 превращает каждую группу из четырёх символов обратно в три байта, которые она обозначает. Эти байты могут быть текстом или целым файлом, например PDF, изображением PNG или архивом ZIP. Инструмент читает первые байты, чтобы понять, что это, а затем показывает сам текст или файл, а не экран непонятных символов, и даёт его скачать.

Как декодировать файл из Base64?

Вставьте строку Base64 в поле. Инструмент декодирует её, сверит первые байты с сигнатурами файлов, которые он знает (всего 33 формата файлов), назовёт формат, покажет изображение или PDF и даст скачать файл с правильным расширением. Указывать, что это за файл, не нужно, и ради этого ничего не загружается на сервер.

Для чего используется Base64?

Он переносит байты там, где всё рассчитано на текст: во вложениях писем (MIME), в data: URI внутри HTML и CSS, в двоичных полях JSON и XML, в JSON Web Token, в аутентификации HTTP Basic, в сертификатах и ключах в файлах PEM. Везде данные проходят через канал, который может изменить или потерять сырые байты, поэтому они путешествуют обычными буквами и цифрами.

Base64 — это шифрование?

Нет. Base64 — это кодировка, а не шифр: у неё нет ни ключа, ни секрета, и любой обратит её за секунду, как эта страница делает прямо при вводе. Считайте всё, что записано в Base64, лежащим на виду. Если данные должны остаться приватными, сначала зашифруйте их, а затем, если их нужно передать как текст, закодируйте зашифрованные байты в Base64.

Безопасно ли декодировать Base64 онлайн?

На этой странице — да, и это можно проверить: всё декодирует JavaScript в вашей собственной вкладке браузера, и ничего из того, что вы вставляете или перетаскиваете, не загружается. Декодированные HTML, SVG и скрипты показываются как текст и не выполняются; изображение или PDF показывает встроенный просмотрщик браузера. Откройте вкладку «Сеть» в инструментах разработчика, пока пользуетесь страницей: ни один запрос не несёт ваших данных.

Почему Base64 на 33 % больше оригинала?

Потому что каждые три байта становятся четырьмя символами, а четыре, делённое на три, — это 1,33. В конце может добавиться до двух символов дополнения =, а перенос строк через 76 символов для почты добавляет разрыв в каждую строку, поэтому длинная строка часто примерно на 35 % больше байтов, которые она несёт. Сжатие вроде gzip возвращает большую часть этой разницы.

Что такое URL-безопасный Base64?

Это Base64, в котором + заменён на -, а / — на _, как определяет RFC 4648 §5, так что результат можно поставить в URL, имя файла или cookie без экранирования. Дополнение обычно тоже убирают, как в JSON Web Token. Этот инструмент читает оба алфавита, даже вперемешку в одной строке, и умеет записывать любой из них.

Почему не получается декодировать Base64?

Почти всегда из-за одного символа, которого нет в алфавите Base64: многоточия там, где мессенджер обрезал строку, фигурной кавычки из текстового процессора или неразрывного пробела из PDF. Инструмент называет этот символ, показывает его место и позицию, сообщает, сколько декодировалось без ошибок до него, и предлагает кнопку «Удалить его и декодировать», когда оставшуюся строку ещё можно декодировать.

Можно ли перевести Base64 в картинку?

Да. Вставьте строку, с префиксом вроде data:image/png;base64, или без него, и появится изображение с форматом, размером и настоящим размером в пикселях, прочитанным из заголовка самого файла. Затем скачайте его с правильным расширением. PNG, JPEG, GIF, WebP, BMP, ICO и AVIF показываются сразу; SVG сначала показывается как текст, потому что SVG может содержать скрипт.

Что означает = в конце Base64?

Это значит, что последняя группа из трёх байтов была неполной. Два оставшихся байта становятся тремя символами и одним =, а один оставшийся байт — двумя символами и ==. Само дополнение не несёт никаких данных: оно лишь подсказывает декодеру, где кончаются байты. Многие декодеры, включая этот, читают и Base64 без дополнения.

Есть ли ограничение по размеру?

Выбранный или перетащенный файл может весить до 10 МБ; файл больше отклоняется с указанием имени и размера и никогда не читается наполовину. Предел для вставленного текста — 14 349 002 символа: этого хватает на Base64 файла размером 10 МБ вместе с переносами строк, так что всё, что инструмент закодировал, можно декодировать обратно. Большие данные читаются в фоне, и ввод не тормозит.

Можно ли здесь декодировать JWT?

Да. Вставьте токен, и его заголовок и полезная нагрузка появятся в виде отформатированного JSON, с датами рядом с полями iat и exp, а подпись — в виде байтов. Страница только декодирует три части base64url: она не проверяет подпись и никогда не утверждает, что токен действителен, поэтому не решайте по ней, можно ли ему доверять.

Чего-то не хватает?Предложите функцию или новый инструмент