> base64 | decode | PNG <

// Decodifique strings Base64 e data URIs de volta em imagens PNG — alfa preservado, pré-visualização instantânea, download em um clique

0 caracteres
🖼️

O PNG decodificado aparecerá aqui

[LOSSLESS]

Bit-perfeito

O PNG decodificado é byte-idêntico ao original — alfa, paleta e perfil de cor sobrevivem ao round-trip intactos.

[SECURE]

Decodificação local

O payload Base64 é decodificado no seu navegador com atob(). Sem upload para servidor, sem registro dos seus bytes PNG.

[INSTANT]

Pré-visualização ao vivo

Veja a imagem decodificada, suas dimensões e o tamanho aproximado do arquivo instantaneamente antes de baixar.

// SOBRE BASE64 PARA PNG

O que esta ferramenta aceita

  • >Data URI: data:image/png;base64,iVBORw0KGgo…
  • >Payload PNG Base64 bruto (começa com iVBORw0KGgo)
  • >Base64 com espaços em branco / quebras de linha incorporados
  • >Alfabeto padrão RFC 4648 (+/, preenchimento = opcional)
  • >Base64 URL-safe (-_) — normalizado automaticamente na decodificação
  • >Colagem com reconhecimento de Unicode — BOMs são removidos

Casos de uso comuns

  • >Salvar uma captura de tela a partir do data URI de um inspetor de DOM
  • >Extrair um logotipo de um plano de fundo CSS data-uri
  • >Recuperar uma imagem de uma resposta de API JSON
  • >Restaurar uma imagem de uma coluna TEXT de um banco de dados
  • >Recuperar um PNG de uma parte MIME de e-mail
  • >Inspecionar um ícone incorporado dentro de um SVG inline
  • >Depurar uma tag <img src="data:image/png;base64,…"> quebrada

Como funciona a decodificação Base64 → PNG

O decodificador remove qualquer prefixo de data URI, normaliza espaços em branco e caracteres URL-safe e, em seguida, chama atob() para converter cada grupo de 4 caracteres de volta em 3 bytes binários. O array de bytes é envolvido em um Blob com tipo MIME image/png, recebe um object URL e é renderizado em um elemento <img>. Como o Base64 é bijetivo com o binário, a saída é bit-idêntica ao PNG original — um SHA-256 do arquivo decodificado corresponde ao original.

Exemplo de data URI de PNG:

data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mP8/5+hHgAHggJ/PchI7wAAAABJRU5ErkJggg==

Desempenho e compatibilidade

  • >A decodificação é O(n) no comprimento do payload — lida com 100 MB+ sem problemas
  • >Usa o atob() nativo do navegador — sem shim JS pesado
  • >Suporta APNG de múltiplos quadros quando o visualizador o suporta
  • >Funciona em todos os navegadores modernos (Chrome, Firefox, Safari, Edge)
  • >Pré-visualização responsiva para celular com pinça para ampliar
  • >O download usa um Blob URL — sem round-trip intermediário ao servidor

// COMO DECODIFICAR BASE64 PARA PNG

📋

Passo 1: Colar

Cole a string Base64 ou o data URI completo no campo de entrada

🔍

Passo 2: Decodificar

Clique em [DECODE] — o PNG é renderizado na pré-visualização instantaneamente

📊

Passo 3: Inspecionar

Verifique dimensões, tamanho do arquivo e canal alfa antes de salvar

💾

Passo 4: Baixar

Clique em [DOWNLOAD .png] para salvar um PNG bit-idêntico no disco

// EXEMPLOS DE CÓDIGO — BASE64 PARA PNG

JavaScript (Browser)

// Decode Base64 → PNG Blob → download link
const b64 = 'iVBORw0KGgoAAAANSUhEUg...';
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/png' });
const url = URL.createObjectURL(blob);
window.open(url);

Decodifique um payload Base64 bruto em um Blob e abra-o. Para um data URI completo, a tag <img> o aceita diretamente.

Node.js

const fs = require('fs');
const b64 = 'iVBORw0KGgoAAAANSUhEUg...';
fs.writeFileSync('out.png', Buffer.from(b64, 'base64'));

Uma linha usando o Buffer integrado do Node para decodificar Base64 e gravar um arquivo PNG.

Python

import base64
with open('out.png', 'wb') as f:
    f.write(base64.b64decode('iVBORw0KGgoAAAANSUhEUg...'))

Apenas biblioteca padrão — decodifique texto Base64 de volta em bytes PNG.

PHP

<?php
file_put_contents('out.png', base64_decode('iVBORw0KGgoAAAANSUhEUg...'));

Uma linha usando os nativos base64_decode() e file_put_contents().

Shell (macOS / Linux)

echo 'iVBORw0KGgoAAAANSUhEUg...' | base64 -d > out.png

POSIX base64 -d / -D lê texto da stdin e grava o PNG decodificado na stdout.

// FAQ — BASE64 PARA PNG

P: O que é a decodificação de Base64 para PNG?

R: Ela reverte um PNG codificado em Base64 de volta à sua forma binária original. A string que você cola é 4 caracteres ASCII por 3 bytes binários; o decodificador lê 4 caracteres por vez, aplica a busca no alfabeto RFC 4648 e grava 3 bytes por grupo até a string se esgotar. O array de bytes resultante é um arquivo PNG completo e válido que você pode pré-visualizar, salvar ou enviar para qualquer lugar onde um PNG normal seja aceito.

P: Como sei que a string Base64 é realmente um PNG?

R: Os primeiros 8 bytes de todo PNG são a assinatura mágica 89 50 4E 47 0D 0A 1A 0A. Quando codificados em Base64, esses 8 bytes sempre começam com iVBORw0KGgo. Portanto, qualquer string Base64 que comece com iVBORw0KGgo é um PNG. Outros formatos têm prefixos diferentes: /9j/ é JPEG, R0lGOD é GIF, UklGR é WebP. Nosso decodificador detecta PNGs automaticamente por esse prefixo mágico e recorre ao tipo MIME no data URI, se presente.

P: Posso colar um data URI ou apenas Base64 bruto?

R: Ambos. Se a sua string começar com data:image/png;base64,, o decodificador remove o prefixo automaticamente. Se você colar apenas a parte do payload, inferimos o tipo MIME PNG a partir dos bytes mágicos. Espaços em branco, quebras de linha, retornos de carro e tabulações são normalizados antes da decodificação, então você pode colar uma resposta JSON formatada de forma legível sem quebrar nada.

P: O PNG decodificado está quebrado — por quê?

R: Causas comuns:
String truncada — o Base64 foi cortado em algum lugar (por exemplo, por um limite de linha na sua fonte de cópia). Um Base64 PNG completo termina com RU5ErkJggg== (o chunk IEND); se isso estiver faltando, o arquivo está incompleto.
Alfabeto URL-safe — se a string usa -_ em vez de +/ (base64url), nossa ferramenta normaliza; outros decodificadores podem rejeitá-lo.
Codificado em dobro — o PNG foi codificado em Base64 duas vezes. Decodifique-o novamente.
Não é um PNG — o payload é, na verdade, JPEG ou WebP. Use nosso decodificador genérico de Base64 → Imagem que detecta qualquer formato automaticamente.

P: A decodificação de volta para PNG perde qualidade ou transparência?

R: Não. Base64 é uma transformação reversível bit a bit. O PNG decodificado é byte-idêntico ao original: canal alfa, paleta (PLTE), transparência (tRNS), perfil de cor (iCCP/sRGB), gama (gAMA) e dimensões físicas dos pixels (pHYs) sobrevivem todos. Um hash SHA-256 do arquivo decodificado corresponde ao hash do original. Se você notar qualquer diferença, a alteração ocorreu antes da codificação, não durante o round-trip do Base64.

P: Posso decodificar Base64 para PNG usando o terminal?

R: Sim. No macOS e Linux:
echo 'iVBORw0KGgo…' | base64 -d > out.png
(o macOS usa -D em versões mais antigas.)
No Windows PowerShell:
[IO.File]::WriteAllBytes('out.png', [Convert]::FromBase64String('iVBORw0KGgo…'))
Se a string for um data URI completo, remova primeiro o prefixo data:image/png;base64, (a maioria dos shells aceita sed 's|^data:.*base64,||').

P: Qual o tamanho máximo da entrada Base64 PNG?

R: Decodificamos no navegador, portanto o limite é a memória do seu dispositivo — confortavelmente 100 MB+ no desktop. Um PNG decodificado de 100 MB precisaria de ~135 MB de texto Base64, que a maioria dos navegadores cola sem reclamar. Se você trabalha com PNGs científicos ou médicos muito grandes, considere a decodificação no lado do servidor, pois o desempenho do atob() no navegador degrada perto do teto de memória.

P: Este decodificador funciona offline?

R: Sim. Toda a decodificação usa as APIs nativas atob() + Uint8Array + Blob, integradas a todos os navegadores modernos. Depois que a página carrega uma vez, você pode se desconectar da rede e continuar decodificando. Sem serviços externos, sem round-trip ao servidor, sem análises sobre o seu payload de imagem.

P: Qual a diferença entre um PNG Base64 e um arquivo PNG normal?

R: Eles contêm exatamente os mesmos bytes. Um arquivo .png normal é o binário bruto; uma string PNG Base64 é esse mesmo binário reescrito no alfabeto ASCII de 64 caracteres. A forma Base64 é 33% maior, mas segura para inserir em atributos HTML, strings JSON, url() de CSS e e-mails. Você não pode colocar bytes PNG brutos em HTML — eles contêm bytes nulos e caracteres de bit alto que quebram os analisadores de texto. Base64 é a solução alternativa.

P: Um PNG Base64 carrega mais rápido que um arquivo .png separado?

R: Apenas para imagens minúsculas. O Base64 economiza um round-trip HTTP, que pode ser de 50–100 ms em uma conexão nova — útil para ícones de UI críticos abaixo de 4 KB. Para qualquer coisa maior, um arquivo .png separado servido com cabeçalhos de cache de longa duração quase sempre vence porque (a) o gzip comprime mal o texto Base64, (b) os data URIs não podem ser armazenados em cache de forma independente e (c) eles bloqueiam a análise do HTML. Use Base64 para microativos acima da dobra, não para imagens hero.

P: Posso decodificar Base64 para PNG sem enviar os dados para lugar algum?

R: Sim — esta ferramenta funciona 100% no lado do cliente. Sua string Base64 é decodificada em JavaScript no seu dispositivo, envolvida em um Blob localmente e exibida via URL.createObjectURL(). Nada é enviado. Você pode verificar isso abrindo a aba Rede das ferramentas de desenvolvedor do navegador enquanto decodifica — nenhuma requisição é enviada. Executar todo o fluxo offline (modo avião) também funciona após o carregamento inicial da página.

P: Como decodifico Base64 para PNG em código de produção?

R: Em Node.js: fs.writeFileSync('out.png', Buffer.from(b64, 'base64')). Em Python: open('out.png','wb').write(base64.b64decode(b64)). Em Go: b, _ := base64.StdEncoding.DecodeString(b64); os.WriteFile("out.png", b, 0644). Em Java: Files.write(Path.of("out.png"), Base64.getDecoder().decode(b64)). Em Rust: std::fs::write("out.png", base64::decode(b64)?)?. Em PHP: file_put_contents('out.png', base64_decode($b64)). A biblioteca padrão de cada runtime vem com um decodificador Base64 — você raramente precisa de uma dependência de terceiros.

P: Base64 para PNG vs Base64 para JPG — qual decodificador devo usar?

R: Use Base64 → PNG quando a string Base64 começar com iVBORw0KGgo (ou o data URI disser data:image/png;base64,). Use Base64 → JPG quando a string começar com /9j/4AAQ ou /9j/2wC. Se você não tiver certeza, use nosso decodificador genérico de Base64 → Imagem que inspeciona os bytes mágicos e escolhe o formato certo automaticamente. Nunca force um formato que não corresponda ao payload — o arquivo decodificado terá bytes válidos, mas será ilegível.

// OTHER LANGUAGES