Enviar um arquivo
  1. base64hub
  2. Ferramentas de arquivo
  3. Base64 para arquivo

Conversor de Base64 para arquivo

Cole uma string Base64 de origem desconhecida e a ferramenta descobre que arquivo é pelos primeiros bytes, mostra o conteúdo e salva com a extensão correta. Tudo roda nesta aba do navegador.

Grátis sem cadastro, sem limites Local nada é enviado Automático detecta mais de 60 tipos de arquivo Atualizado 27 de out. de 2026
Entrada –Saída –Tamanho –

Processado no seu navegador. Esta página não consegue enviar seus dados para lugar nenhum – como sabemos

Como decodificar Base64 para um arquivo

  1. Cole a string em Base64 ou data URI. Base64 padrão e URL-safe são aceitos, com ou sem preenchimento, quebras de linha ou aspas. Um data URI inteiro funciona, assim como um texto que contenha um: um url("data:…") de CSS, um src="data:…" de HTML ou uma imagem em Markdown. Para uma string longa guardada em arquivo, use Abrir arquivo .txt ou arraste o arquivo para a caixa.
  2. Leia a linha de status abaixo da entrada: se a entrada é válida, qual variante ela é (Standard ou Base64URL), o tamanho decodificado e o tipo Detectado. Um data URI também mostra o tipo Declarado.
  3. Olhe a prévia e os três campos abaixo dela. Nome do arquivo, Extensão e Tipo MIME são preenchidos a partir da detecção. O que você digitar ali permanece até você clicar em Limpar.
  4. Clique em Baixar arquivo, ou em Copiar como data URI para ter os bytes de volta como data:<MIME type>;base64,….

Exemplo carrega um arquivo de teste diferente a cada clique: PNG, PDF, ZIP, WAV, DOCX, JSON, gzip e SVG. Se você arrastar um arquivo que já é binário, por exemplo um PDF em vez de um arquivo de texto com o Base64 dele, a ferramenta avisa e indica Arquivo para Base64, que faz o caminho inverso.

Por que o arquivo aparece como application/octet-stream

application/octet-stream significa “alguns bytes, tipo desconhecido”. Esse rótulo vai parar na frente do Base64 por motivos banais. O FileReader.readAsDataURL() do Chrome gera data:application/octet-stream;base64, para qualquer arquivo cujo tipo o navegador não conhece. Sistemas de armazenamento e exportação que guardam os bytes, mas não o tipo, rotulam tudo desse jeito. Algumas APIs declaram todo anexo como octet-stream. Um visualizador que depende do rótulo então se recusa a mostrar o arquivo, e o download fica sem uma extensão útil.

Normalmente os próprios bytes identificam o formato: a maioria dos formatos começa com uma assinatura fixa, e a ferramenta verifica mais de 60 delas. Algumas assinaturas são compartilhadas, então a ferramenta olha mais adiante no arquivo:

Primeiros bytesO Base64 começa comPode serComo a ferramenta diferencia
PK 03 04UEsDBZIP, DOCX, XLSX, PPTX, EPUB, ODT, ODS, JAR, APKNomes das entradas: word/, xl/, ppt/, a entrada mimetype, AndroidManifest.xml, META-INF/MANIFEST.MF
RIFFUklGRWebP, WAV, AVIAs quatro letras no byte 8
ftyp no byte 4AAAA, por exemplo AAAAIGZ0eXBMP4, M4A, MOV, 3GP, HEIC, AVIFA marca nos bytes 8 a 11
OggST2dnUwOgg Vorbis, Opus, vídeo TheoraO cabeçalho do codec na primeira página
1A 45 DF A3GkXfoWebM, MKVO tipo de documento webm
D0 CF 11 E00M8R4KGxGuEDOC, XLS, PPT, MSG do Outlook, arquivos do Office protegidos por senhaNão consegue; informa “DOC/XLS/MSG (OLE)”

A lista completa de assinaturas está em prefixos comuns de Base64.

Quando um data URI declara um tipo e o conteúdo discorda, um aviso indica isso, por exemplo “O data URI diz application/octet-stream, mas o conteúdo parece ser PDF.”, e o tipo detectado é usado. O tipo declarado só prevalece quando a detecção é fraca: quando os bytes parecem texto simples ou binário desconhecido.

Base64 dentro de Base64, codificação de URL e gzip

Dados que passaram por vários sistemas muitas vezes estão embrulhados mais de uma vez. Depois de decodificar, a ferramenta verifica se o resultado é outra camada e oferece Decodificar de novo:

AvisoO que aconteceu
“Os dados decodificados são, eles mesmos, texto Base64 (dentro: PDF).”Codificado duas vezes, normalmente por duas camadas de código que codificaram “por garantia”
“Os dados decodificados são Base64 com codificação de URL”O Base64 recebeu codificação percentual para uma URL (%2B, %2F, %3D) antes de ser codificado de novo
“Os dados decodificados são um data: URI.”Alguém codificou a string data:… inteira em vez só do conteúdo
“Os dados estão compactados com gzip: 817 B descompactados (PDF).”Compactado antes da codificação para economizar espaço, comum em logs e filas de mensagens; zlib também é reconhecido

Decodificar de novo coloca a camada interna na entrada e a decodifica; Voltar retorna um passo e lembra até 20 passos. Os avisos de gzip e zlib só aparecem depois que a ferramenta realmente descompactou os dados, para resultados de até 16 MB. A prévia de gzip também mostra o nome original do arquivo e a data de modificação gravados no cabeçalho, com Salvar descompactado para o conteúdo. Para payloads de texto, o decodificador de Base64 gzip é a ferramenta mais direta.

Salvando com a extensão certa

Windows e macOS escolhem o programa pela extensão, então um PDF salvo como decoded.bin parece quebrado, mesmo com todos os bytes corretos. Os campos Extensão e Tipo MIME acompanham a detecção até você digitar neles:

  • O nome do arquivo vem de um parâmetro name= ou filename= no data URI, ou do nome do arquivo de texto que você abriu, sem a terminação .txt ou .b64: report.pdf.b64.txt é salvo como report.pdf.
  • Para um arquivo OLE que você sabe que é uma planilha, digite xls em Extensão; a ferramenta não consegue distinguir DOC, XLS e MSG.
  • Um Tipo MIME digitado também renderiza a prévia de novo como esse tipo. Se a ferramenta disser Binary, mas você espera áudio, digitar audio/ogg faz com que ela tente o player de áudio.
  • O tipo MIME afeta só o download e o Copiar como data URI; um arquivo no disco não tem tipo MIME, só os seus bytes e o seu nome.

O que a prévia mostra

Todo resultado lista tipo, tipo MIME, extensão, tamanho e um hash SHA-256, com Mostrar dump hex para os primeiros 512 bytes. Para dados binários desconhecidos, o dump hex já vem aberto. Conforme o tipo:

TipoPrévia
ImagensA imagem e o tamanho em pixels; HEIC, TIFF e JPEG XL normalmente recebem um aviso de que não é possível exibir, porque a maioria dos navegadores não tem decodificador para eles. Veja Base64 para imagem.
PDFO visualizador de PDF do seu navegador, versão, quantidade de páginas, título. Veja Base64 para PDF.
Áudio e vídeoUm player com duração e dimensões do vídeo
FontesTexto de exemplo editável na fonte decodificada, com família, estilo e quantidade de glifos
ZIP, DOCX, XLSX, PPTX, EPUBA lista de entradas com Ver e Salvar para cada arquivo, mais o texto do documento para arquivos do Office e e-books. Veja Base64 para ZIP.
TextoCharset, linhas, JSON formatado, uma tabela para CSV, o elemento raiz para XML, HTML em sandbox
Certificados e chavesUm link para o decodificador de certificados

Detectar o tipo MIME de um Base64 no código

Vinte e quatro caracteres de Base64 decodificam para 18 bytes, o suficiente para as assinaturas comuns. Isto funciona em navegadores e no Node.js 16 ou mais recente:

function sniffMime(b64) {
  const head = b64.replace(/^data:[^,]*,/, "").replace(/\s+/g, "").slice(0, 24)
    .replace(/-/g, "+").replace(/_/g, "/");
  const b = Uint8Array.from(atob(head), (c) => c.charCodeAt(0));
  const str = (start, len) => String.fromCharCode(...b.subarray(start, start + len));

  if (str(0, 5) === "%PDF-") return "application/pdf";
  if (str(0, 8) === "\x89PNG\r\n\x1a\n") return "image/png";
  if (b[0] === 0xff && b[1] === 0xd8 && b[2] === 0xff) return "image/jpeg";
  if (str(0, 4) === "GIF8") return "image/gif";
  if (str(0, 4) === "RIFF" && str(8, 4) === "WEBP") return "image/webp";
  if (str(0, 4) === "RIFF" && str(8, 4) === "WAVE") return "audio/wav";
  if (str(4, 4) === "ftyp") return "video/mp4"; // also M4A, MOV, HEIC: see bytes 8-11
  if (str(0, 4) === "PK\x03\x04") return "application/zip"; // also DOCX, XLSX, PPTX
  if (b[0] === 0x1f && b[1] === 0x8b) return "application/gzip";
  if (str(0, 3) === "ID3" || (b[0] === 0xff && (b[1] & 0xe6) === 0xe2)) return "audio/mpeg";
  return "application/octet-stream";
}

sniffMime("data:application/octet-stream;base64,JVBERi0xLjcKJeLjz9MK"); // "application/pdf"

Na linha de comando, o file lê os bytes decodificados da entrada padrão:

base64 -d payload.b64 | file -b --mime-type -

Isso imprime application/pdf para um PDF. Se você decodificar com o OpenSSL, acrescente -A para uma string em uma única linha. Sem ele, o openssl base64 -d não grava nada, em silêncio, quando a linha não tem quebra no final ou é longa demais (1.024 caracteres ou mais no OpenSSL 3.5). Mais em Base64 em JavaScript e Base64 em Bash.

Perguntas frequentes

Como descobrir o tipo MIME de uma string Base64?

Decodifique os primeiros bytes e compare com as assinaturas de arquivo conhecidas: JVBERi0 decodifica para %PDF-, iVBORw0KGgo para a assinatura do PNG. Esta página faz isso para mais de 60 formatos, e a função JavaScript desta página cobre os mais comuns no seu próprio código.

O que significa "não é possível exibir o arquivo como application/octet-stream"?

application/octet-stream é o rótulo genérico para bytes de tipo desconhecido, então um visualizador que confia no rótulo não tem por onde começar. Cole a mesma string aqui: o conteúdo é examinado no lugar do rótulo, e a extensão e o tipo MIME são preenchidos para você.

O que fazer quando o tipo não é detectado?

A prévia mostra então Binary, com um dump hex dos primeiros 512 bytes. Se você souber o formato, digite a extensão e o tipo MIME antes de baixar; o tipo MIME também troca a prévia, então audio/ogg faz a ferramenta tentar tocar os bytes.

Qual o tamanho máximo de arquivo que dá para decodificar?

Não há limite fixo; o limite é a memória do seu dispositivo. Acima de uns 50 MB de Base64, a página dá uma pausa curta enquanto decodifica, e Copiar como data URI fica desativado para arquivos com mais de 32 MB.

O arquivo é enviado para algum lugar?

Não. A decodificação, a detecção do tipo e a prévia rodam no seu navegador, e a Content Security Policy da página a impede de fazer requisições de rede, exceto as do contador de visitas da Cloudflare.