> base64 | decode | JPG <

// Декодируйте строки Base64 и URI данных обратно в фотографии JPG / JPEG — EXIF сохраняется, мгновенный предпросмотр, скачивание в один клик

0 символов
🖼️

Декодированный JPEG появится здесь

[FAITHFUL]

Без повторного сжатия

Байты JPEG, выходящие из декодера, побитово идентичны тому, что было закодировано — то же качество, тот же EXIF, те же DCT-коэффициенты.

[PRIVATE]

Локальное декодирование

Ваша Base64-строка декодируется с помощью atob() полностью в браузере. Без загрузки. Без сервера. Без аналитики на полезной нагрузке.

[INSTANT]

Живой предпросмотр

Смотрите декодированное фото и его размеры немедленно — скачивайте как .jpg одним кликом.

// О КОНВЕРТАЦИИ BASE64 В JPG

Что принимает этот инструмент

  • >URI данных: data:image/jpeg;base64,/9j/4AAQSkZ…
  • >Сырая полезная нагрузка JPEG Base64 (начинается с /9j/)
  • >Base64 со встроенными пробелами / переносами строк
  • >Стандартный алфавит RFC 4648 (+/, опциональный padding =)
  • >URL-safe Base64 (-_) — авто-нормализуется при декодировании
  • >Многосекционные JPEG (маркеры JFIF, EXIF, Adobe, SPIFF)

Частые сценарии использования

  • >Восстановление фотографии из ответа JSON API
  • >Извлечение аватара профиля из TEXT-колонки базы данных
  • >Декодирование поля изображения CMS, хранящегося как URI данных
  • >Реконструкция фотографии из MIME-части email
  • >Отрисовка снимка с камеры, отправленного по WebSocket
  • >Отладка сломанного тега <img src="data:image/jpeg;base64,…">
  • >Оффлайн-first приложения, кэширующие фотографии как Base64

Как работает декодирование Base64 → JPG

Декодер удаляет любой префикс URI данных, нормализует пробелы и URL-safe символы, затем вызывает atob() для преобразования каждой 4-символьной группы Base64 обратно в 3 бинарных байта. Результат оборачивается в Blob с MIME-типом image/jpeg и отображается предпросмотром через тег <img>. Поскольку Base64 — это биективное бинарно-текстовое преобразование, выходной JPEG побитово идентичен оригиналу — его SHA-256 хэш совпадает, и качество не теряется.

Пример URI данных JPEG:

data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEASABIAAD/2wBDAAYEBQYFBAYGBQYHBwYIChAKCgkJChQODwwQFxQYGBcUFhYaHSUfGhsjHBYWICwgIyYnKSopGR8tMC0oMCUoKSj/wAALCAABAAEBAREA/8QAFQABAQAAAAAAAAAAAAAAAAAAAAv/xAAUEAEAAAAAAAAAAAAAAAAAAAAA/9oACAEBAAA/AKp//9k=

Производительность и совместимость

  • >Декодирование O(n) по длине полезной нагрузки — без проблем обрабатывает 100 МБ+
  • >Использует нативные atob() + Uint8Array — без сторонних библиотек
  • >Поддерживает EXIF-богатые JPEG от каждого крупного производителя камер
  • >Работает в Chrome, Firefox, Safari, Edge и мобильных браузерах
  • >Предпросмотр с pinch-to-zoom на мобильных устройствах
  • >Скачивание через Blob URL — без обращения к серверу

// КАК ДЕКОДИРОВАТЬ BASE64 В JPG

📋

Шаг 1: Вставьте

Вставьте строку Base64 или полный URI данных в поле ввода

🔍

Шаг 2: Декодируйте

Нажмите [DECODE] — JPEG отрисовывается мгновенно

📊

Шаг 3: Проверьте

Проверьте фотографию, её размеры и размер файла перед сохранением

💾

Шаг 4: Скачайте

Нажмите [DOWNLOAD .jpg], чтобы сохранить побитово идентичный JPEG на диск

// ПРИМЕРЫ КОДА — BASE64 В JPG

JavaScript (браузер)

// Decode Base64 → JPEG Blob → preview
const b64 = '/9j/4AAQSkZJRgAB...';
const bin = atob(b64);
const arr = new Uint8Array(bin.length);
for (let i = 0; i < bin.length; i++) arr[i] = bin.charCodeAt(i);
const blob = new Blob([arr], { type: 'image/jpeg' });
document.getElementById('preview').src = URL.createObjectURL(blob);

Декодируйте сырую полезную нагрузку Base64 JPEG, оберните в Blob и отрисуйте с помощью <img>. URI данных можно задавать напрямую в src.

Node.js

const fs = require('fs');
const b64 = '/9j/4AAQSkZJRgAB...';
fs.writeFileSync('out.jpg', Buffer.from(b64, 'base64'));

Декодируйте текст Base64 в файл JPEG, используя встроенный в Node Buffer.

Python

import base64
with open('out.jpg', 'wb') as f:
    f.write(base64.b64decode('/9j/4AAQSkZJRgAB...'))

Только стандартная библиотека — Base64 → байты JPEG → файл.

PHP

<?php
file_put_contents('out.jpg', base64_decode('/9j/4AAQSkZJRgAB...'));

Однострочник с использованием base64_decode() и file_put_contents().

Shell (macOS / Linux)

echo '/9j/4AAQSkZJRgAB...' | base64 -d > out.jpg

POSIX base64 -d читает строку из stdin и записывает JPEG на диск.

// FAQ — BASE64 В JPG

В: Что такое декодирование Base64 в JPG?

О: Оно обращает Base64-кодированный JPEG обратно в его оригинальную бинарную форму. Декодер читает по 4 ASCII-символа за раз из Base64-строки, ищет их в алфавите RFC 4648 и выводит 3 бинарных байта на группу. Полученный массив байтов — это полный, корректный файл JPEG — те же DCT-коэффициенты, те же таблицы Хаффмана, те же EXIF-метаданные, то же качество, что и до кодирования.

В: Как определить, что Base64-строка действительно JPEG?

О: Каждый JPEG начинается с двух магических байтов FF D8 (Start-Of-Image). Когда эти байты кодируются в Base64, первые 4 символа всегда /9j/. Поэтому любая Base64-строка, начинающаяся с /9j/4AAQ (заголовок JFIF) или /9j/2wC (многие смартфон-камеры, использующие Adobe APP14) — это JPEG. Другие форматы имеют разные префиксы: iVBORw0KGgo для PNG, R0lGOD для GIF, UklGR для WebP.

В: Можно ли декодировать URI данных напрямую?

О: Да. Если ваша строка начинается с data:image/jpeg;base64,, декодер удаляет этот префикс автоматически и обрабатывает полезную нагрузку. Если у вас только сырая Base64-часть, наш инструмент обнаруживает магический номер JPEG (/9j/) и оборачивает декодированные байты как image/jpeg для предпросмотра. Пробелы, переносы строк и табуляции удаляются перед декодированием, поэтому вы можете вставить pretty-printed значение JSON прямо внутрь.

В: Снижает ли декодирование качество моего JPEG?

О: Нет. Декодирование Base64 — это чистое бинарное преобразование: каждый Base64-символ детерминированно отображается в 6 битов, и 4 символа декодируются в 3 байта. Выходящие байты JPEG побитово идентичны тому, что было закодировано, поэтому качество такое же, на каком был сохранён оригинальный JPEG. SHA-256 хэш декодированного файла совпадёт с хэшем оригинала. Если ваше декодированное фото выглядит хуже ожидаемого, потеря качества произошла при первом сохранении JPEG, а не во время кругового пути Base64.

В: Декодированный JPG сломан — что может быть не так?

О: Типичные причины:
Обрезанная строка — Base64 где-то обрезан. Полный JPEG заканчивается на FF D9 (End-Of-Image), что кодируется в /9k= или 2Q== в Base64. Если ваша строка не заканчивается одним из этих паттернов плюс опциональный padding, она неполна.
Двойное кодирование — JPEG был Base64-кодирован дважды. Декодируйте ещё раз.
URL-safe алфавит — если строка использует -_ вместо +/, некоторые декодеры отвергнут её. Наш инструмент нормализует оба.
На самом деле другой формат — полезная нагрузка PNG или WebP. Используйте наш универсальный декодер Base64 → изображение, который автоопределяет формат.

В: Сохраняются ли мои EXIF-метаданные после декодирования?

О: Да. Сегмент EXIF APP1 (модель камеры, GPS, дата/время, объектив, ISO, баланс белого, ориентация и т.д.) — это часть байтового потока JPEG. Поскольку Base64 побитово обратим, каждый байт — включая EXIF — восстанавливается. Если вам нужны фотографии без EXIF из соображений приватности, удалите метаданные после декодирования с помощью инструмента типа exiftool -all= out.jpg или canvas-based повторного экспорта в браузере.

В: Можно ли декодировать Base64 в JPG в терминале?

О: Да. На macOS и Linux:
echo '/9j/4AAQSkZJRgAB…' | base64 -d > out.jpg
(старая macOS base64 использует -D.)
На Windows PowerShell:
[IO.File]::WriteAllBytes('out.jpg', [Convert]::FromBase64String('/9j/4AAQSkZJRgAB…'))
Если ваш ввод — полный URI данных, пропустите его через sed 's|^data:.*base64,||' сначала, чтобы удалить префикс.

В: Насколько большой Base64 JPG можно декодировать?

О: До предела памяти вашего браузера. Декодированный JPEG 100 МБ требует ~135 МБ текста Base64, что современные десктопные браузеры обрабатывают без проблем. Мобильные браузеры надёжны до ~40 МБ. Для чрезвычайно больших фотографий (RAW-конвертированные JPEG-экспорты из среднеформатных камер) рассмотрите серверное декодирование: base64 -d photo.b64 > photo.jpg намного быстрее, чем круговой путь в браузере.

В: Работает ли декодер офлайн?

О: Да, после первоначальной загрузки страницы. Всё декодирование использует встроенные API браузера (atob(), Uint8Array, Blob, URL.createObjectURL()), ни один из которых не требует сетевого подключения. Вы можете подтвердить это, отключив сеть и продолжая декодировать — предпросмотр и скачивание продолжают работать.

В: Зашифрован ли или приватен Base64 JPEG?

О: Нет. Base64 — это кодирование, а не шифрование. Любой с вашей Base64-строкой может декодировать её обратно в оригинальное фото за миллисекунды, и EXIF-данные (включая GPS-координаты) идут вместе с ним. Если JPEG содержит чувствительную информацию, зашифруйте её (AES-GCM, age, PGP) перед применением Base64, и всегда передавайте строку только через HTTPS.

В: Декодирование на стороне клиента — что-то загружается?

О: Ничего не загружается. Каждый шаг — удаление префикса, нормализация пробелов, вызов atob(), построение Blob, отрисовка <img>, запуск скачивания — происходит в вашем браузере. Откройте вкладку Network в браузерных dev-tools во время декодирования, и вы увидите ноль исходящих запросов для вашей полезной нагрузки Base64. Этот инструмент безопасен для конфиденциальных скриншотов, личных фотографий и регулируемых данных.

В: Как декодировать Base64 в JPG в продакшн-коде?

О: В Node.js: fs.writeFileSync('out.jpg', Buffer.from(b64, 'base64')). В Python: open('out.jpg','wb').write(base64.b64decode(b64)). В Go: b, _ := base64.StdEncoding.DecodeString(b64); os.WriteFile("out.jpg", b, 0644). В Java: Files.write(Path.of("out.jpg"), Base64.getDecoder().decode(b64)). В Rust: std::fs::write("out.jpg", base64::decode(b64)?)?. В Ruby: File.binwrite('out.jpg', Base64.decode64(b64)). В PHP: file_put_contents('out.jpg', base64_decode($b64)).

В: Base64 в JPG vs Base64 в PNG — что использовать?

О: Посмотрите на префикс Base64-строки. Если она начинается с /9j/, это JPEG — используйте Base64 → JPG. Если она начинается с iVBORw0KGgo, это PNG — используйте Base64 → PNG. Вы не можете принудить декодер JPEG выдавать PNG (или наоборот); магические байты говорят правду. В случае сомнений используйте универсальный декодер, который определяет формат автоматически и сохраняет с правильным расширением.

// OTHER LANGUAGES