> base64 | decode | JPG <
// Decodifique strings Base64 e data URIs de volta para fotos JPG / JPEG — EXIF preservado, pré-visualização instantânea, download com um clique
O JPEG decodificado aparecerá aqui
Sem recompressão
Os bytes JPEG que saem do decodificador são idênticos bit a bit ao que foi codificado — mesma qualidade, mesmo EXIF, mesmos coeficientes DCT.
Decodificação local
Sua string Base64 é decodificada com atob() inteiramente no navegador. Sem upload. Sem servidor. Sem análise do payload.
Pré-visualização ao vivo
Veja a foto decodificada e suas dimensões imediatamente — baixe como .jpg com um clique.
// SOBRE BASE64 PARA JPG
O que esta ferramenta aceita
- >Data URI: data:image/jpeg;base64,/9j/4AAQSkZ…
- >Payload Base64 JPEG bruto (começa com /9j/)
- >Base64 com espaços em branco / quebras de linha incorporados
- >Alfabeto padrão RFC 4648 (+/, preenchimento = opcional)
- >Base64 seguro para URL (-_) — normalizado automaticamente na decodificação
- >JPEGs multipartes (marcadores JFIF, EXIF, Adobe, SPIFF)
Casos de uso comuns
- >Recuperar uma foto de uma resposta de API JSON
- >Extrair um avatar de perfil de uma coluna TEXT de banco de dados
- >Decodificar um campo de imagem de CMS armazenado como data URI
- >Reconstruir uma foto de uma parte MIME de e-mail
- >Renderizar um instantâneo de câmera enviado por WebSocket
- >Depurar uma tag <img src="data:image/jpeg;base64,…"> quebrada
- >Aplicativos offline-first que armazenam fotos em cache como Base64
Como funciona a decodificação de Base64 → JPG
O decodificador remove qualquer prefixo de data URI, normaliza espaços em branco e caracteres seguros para URL e, em seguida, chama atob() para converter cada grupo Base64 de 4 caracteres de volta em 3 bytes binários. O resultado é encapsulado em um Blob com tipo MIME image/jpeg e pré-visualizado com uma tag <img>. Como o Base64 é uma transformação bijetiva de binário para texto, o JPEG de saída é idêntico bit a bit ao original — seu hash SHA-256 corresponde e nenhuma qualidade é perdida.
Exemplo de data URI JPEG:
data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEASABIAAD/2wBDAAYEBQYFBAYGBQYHBwYIChAKCgkJChQODwwQFxQYGBcUFhYaHSUfGhsjHBYWICwgIyYnKSopGR8tMC0oMCUoKSj/wAALCAABAAEBAREA/8QAFQABAQAAAAAAAAAAAAAAAAAAAAv/xAAUEAEAAAAAAAAAAAAAAAAAAAAA/9oACAEBAAA/AKp//9k=
Desempenho e compatibilidade
- >A decodificação é O(n) no comprimento do payload — lida com 100 MB+ sem problemas
- >Usa atob() + Uint8Array nativos — sem bibliotecas de terceiros
- >Suporta JPEGs ricos em EXIF de todos os principais fabricantes de câmeras
- >Funciona no Chrome, Firefox, Safari, Edge e navegadores móveis
- >Pré-visualização com zoom por pinça em dispositivos móveis
- >Download via Blob URL — sem ida e volta ao servidor
// COMO DECODIFICAR BASE64 PARA JPG
Passo 1: Colar
Cole a string Base64 ou o data URI completo no campo de entrada
Passo 2: Decodificar
Clique em [DECODE] — o JPEG é renderizado instantaneamente
Passo 3: Inspecionar
Verifique a foto, suas dimensões e o tamanho do arquivo antes de salvar
Passo 4: Baixar
Clique em [DOWNLOAD .jpg] para salvar no disco um JPEG idêntico bit a bit
// EXEMPLOS DE CÓDIGO — BASE64 PARA JPG
JavaScript (Browser)
// 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);
Decodifique um payload Base64 JPEG bruto, encapsule em um Blob e renderize com <img>. Os data URIs podem ser definidos diretamente em src.
Node.js
const fs = require('fs');
const b64 = '/9j/4AAQSkZJRgAB...';
fs.writeFileSync('out.jpg', Buffer.from(b64, 'base64'));
Decodifique texto Base64 em um arquivo JPEG usando o Buffer integrado do Node.
Python
import base64
with open('out.jpg', 'wb') as f:
f.write(base64.b64decode('/9j/4AAQSkZJRgAB...'))
Apenas biblioteca padrão — Base64 → bytes JPEG → arquivo.
PHP
<?php
file_put_contents('out.jpg', base64_decode('/9j/4AAQSkZJRgAB...'));
Uma linha usando base64_decode() e file_put_contents().
Shell (macOS / Linux)
echo '/9j/4AAQSkZJRgAB...' | base64 -d > out.jpg
O base64 -d do POSIX lê a string da entrada padrão e grava o JPEG no disco.
// FAQ — BASE64 PARA JPG
P: O que é a decodificação de Base64 para JPG?
R: Ela reverte um JPEG codificado em Base64 de volta à sua forma binária original. O decodificador lê 4 caracteres ASCII de cada vez da string Base64, procura-os no alfabeto RFC 4648 e gera 3 bytes binários por grupo. O array de bytes resultante é um arquivo JPEG completo e válido — mesmos coeficientes DCT, mesmas tabelas de Huffman, mesmos metadados EXIF, mesma qualidade de antes da codificação.
P: Como saber se a string Base64 é realmente um JPEG?
R: Todo JPEG começa com os dois bytes mágicos FF D8 (Start-Of-Image). Quando esses bytes são codificados em Base64, os primeiros 4 caracteres são sempre /9j/. Portanto, qualquer string Base64 que comece com /9j/4AAQ (cabeçalho JFIF) ou /9j/2wC (muitas câmeras de smartphone que usam Adobe APP14) é um JPEG. Outros formatos têm prefixos diferentes: iVBORw0KGgo para PNG, R0lGOD para GIF, UklGR para WebP.
P: Posso decodificar um data URI diretamente?
R: Sim. Se sua string começar com data:image/jpeg;base64,, o decodificador remove esse prefixo automaticamente e processa o payload. Se você tiver apenas a parte Base64 bruta, nossa ferramenta detecta o número mágico do JPEG (/9j/) e encapsula os bytes decodificados como image/jpeg para a pré-visualização. Espaços em branco, quebras de linha e tabulações são todos removidos antes da decodificação, então você pode colar um valor JSON formatado diretamente.
P: A decodificação reduz a qualidade do meu JPEG?
R: Não. A decodificação Base64 é uma transformação binária pura — cada caractere Base64 mapeia deterministicamente para 6 bits, e 4 caracteres decodificam para 3 bytes. Os bytes JPEG que saem são idênticos bit a bit ao que foi codificado, então a qualidade é aquela com que o JPEG original foi salvo. Um hash SHA-256 do arquivo decodificado corresponderá ao hash do original. Se sua foto decodificada parecer pior do que o esperado, a perda de qualidade ocorreu quando o JPEG foi salvo pela primeira vez, não durante a ida e volta do Base64.
P: O JPG decodificado está corrompido — o que pode estar errado?
R: Causas típicas:
• String truncada — o Base64 foi cortado em algum lugar. Um JPEG completo termina com FF D9 (End-Of-Image), que codifica para /9k= ou 2Q== em Base64. Se sua string não terminar com um desses padrões mais o preenchimento opcional, ela está incompleta.
• Codificado duas vezes — o JPEG foi codificado em Base64 duas vezes. Decodifique-o novamente.
• Alfabeto seguro para URL — se a string usa -_ em vez de +/, alguns decodificadores a rejeitam. Nossa ferramenta normaliza ambos.
• Na verdade, um formato diferente — o payload é PNG ou WebP. Use nosso decodificador genérico Base64 → Imagem, que detecta o formato automaticamente.
P: Meus metadados EXIF são preservados após a decodificação?
R: Sim. O segmento EXIF APP1 (modelo da câmera, GPS, data/hora, lente, ISO, balanço de branco, orientação, etc.) faz parte do fluxo de bytes do JPEG. Como o Base64 é reversível bit a bit, cada byte — incluindo o EXIF — é restaurado. Se você precisar de fotos sem EXIF por motivos de privacidade, remova os metadados depois da decodificação usando uma ferramenta como exiftool -all= out.jpg ou uma reexportação baseada em canvas no navegador.
P: Posso decodificar Base64 para JPG no terminal?
R: Sim. No macOS e Linux: echo '/9j/4AAQSkZJRgAB…' | base64 -d > out.jpg
(o base64 mais antigo do macOS usa -D.)
No Windows PowerShell: [IO.File]::WriteAllBytes('out.jpg', [Convert]::FromBase64String('/9j/4AAQSkZJRgAB…'))
Se sua entrada for um data URI completo, passe-a primeiro por sed 's|^data:.*base64,||' para remover o prefixo.
P: Qual o tamanho máximo de um Base64 JPG que posso decodificar?
R: Até o limite de memória do seu navegador. Um JPEG decodificado de 100 MB requer ~135 MB de texto Base64, que os navegadores de desktop modernos lidam sem problemas. Os navegadores móveis são confiáveis até ~40 MB. Para fotos extremamente grandes (exportações JPEG convertidas de RAW de câmeras de formato médio), considere a decodificação no lado do servidor: base64 -d photo.b64 > photo.jpg é muito mais rápido do que uma ida e volta no navegador.
P: O decodificador funciona offline?
R: Sim, após o carregamento inicial da página. Toda a decodificação usa APIs integradas do navegador (atob(), Uint8Array, Blob, URL.createObjectURL()), nenhuma das quais requer uma conexão de rede. Você pode confirmar isso desativando sua rede e continuando a decodificar — a pré-visualização e o download continuam funcionando.
P: O JPEG em Base64 é criptografado ou privado?
R: Não. Base64 é uma codificação, não criptografia. Qualquer pessoa com sua string Base64 pode decodificá-la de volta para a foto original em milissegundos, e os dados EXIF (incluindo coordenadas GPS) vêm junto. Se o JPEG contiver informações sensíveis, criptografe-o (AES-GCM, age, PGP) antes de aplicar o Base64 e transporte a string somente por HTTPS.
P: A decodificação é no lado do cliente — algo é enviado para upload?
R: Nada é enviado. Cada etapa — remover o prefixo, normalizar espaços em branco, chamar atob(), construir o Blob, renderizar a <img>, acionar o download — acontece no seu navegador. Abra a aba Rede das ferramentas de desenvolvedor do navegador durante a decodificação e você verá zero requisições de saída para o seu payload Base64. Esta ferramenta é segura para capturas de tela confidenciais, fotos pessoais e dados regulamentados.
P: Como decodifico Base64 para JPG em código de produção?
R: Em Node.js: fs.writeFileSync('out.jpg', Buffer.from(b64, 'base64')). Em Python: open('out.jpg','wb').write(base64.b64decode(b64)). Em Go: b, _ := base64.StdEncoding.DecodeString(b64); os.WriteFile("out.jpg", b, 0644). Em Java: Files.write(Path.of("out.jpg"), Base64.getDecoder().decode(b64)). Em Rust: std::fs::write("out.jpg", base64::decode(b64)?)?. Em Ruby: File.binwrite('out.jpg', Base64.decode64(b64)). Em PHP: file_put_contents('out.jpg', base64_decode($b64)).
P: Base64 para JPG vs Base64 para PNG — qual devo usar?
R: Observe o prefixo da string Base64. Se começar com /9j/, é JPEG — use Base64 → JPG. Se começar com iVBORw0KGgo, é PNG — use Base64 → PNG. Você não pode forçar um decodificador JPEG a gerar PNG (ou vice-versa); os bytes mágicos dizem a verdade. Em caso de dúvida, use o decodificador genérico, que detecta o formato automaticamente e salva com a extensão correta.