Skip to content

Converter Base64 para PDF e arquivo · PDF para Base64

Base64 para PDF online: cole Base64 puro, uma data URI ou a resposta JSON inteira. Detecta o tipo real do arquivo, mostra a prévia, faz o download e avisa se o PDF estiver truncado. Também PDF para Base64. Nada é enviado.

Sem rastreamento Roda no navegador Grátis
A decodificação e a codificação rodam inteiramente no seu navegador. Seu Base64 e seus arquivos nunca são enviados.

Interpretado assim:

Que arquivo é este Base64? Veja como ele começa

Todo tipo de arquivo começa com bytes "mágicos" fixos, então o Base64 dele começa com caracteres fixos. Os prefixos abaixo são calculados a partir de cabeçalhos de arquivos reais pelo mesmo motor que esta ferramenta usa.

O Base64 começa com Tipo de arquivo Bytes mágicos (hex)
JVBERi0 PDF 25 50 44 46 2D
iVBORw0KGgoAAAANSUhEU PNG 89 50 4E 47 0D 0A 1A 0A 00 00 00 0D 49 48 44 52
/9j/ JPEG FF D8 FF
R0lGOD GIF 47 49 46 38
UEsDB ZIP / DOCX / XLSX / PPTX 50 4B 03 04
0M8R4KGxGu Office 97–2003 (DOC/XLS/PPT) D0 CF 11 E0 A1 B1 1A E1
H4sI Gzip 1F 8B 08
UklGR RIFF (WebP / WAV / AVI) 52 49 46 46
SUQz MP3 (ID3) 49 44 33
e1xydG RTF 7B 5C 72 74 66
Comportamento verificado com base nas RFC 4648, RFC 2045 e RFC 2397 e nas assinaturas de arquivo de PDF, PNG, ZIP e Office. — Go Tools Engineering · Sep 30, 2026

Escrito e revisado pelos engenheiros que desenvolvem as ferramentas de codificação do Go Tools. Cada tamanho, prefixo e exemplo desta página é gerado pelo próprio motor da página e conferido por testes automatizados.

Base64 para PDF — respostas rápidas

Que arquivo é um Base64 que começa com JVBERi0?

JVBERi0 = PDF Um PDF. Todo PDF começa com os bytes `%PDF-`, que em Base64 viram `JVBERi0`. `iVBORw0KGgo` é um PNG, `/9j/` é um JPEG e `UEsDB` é um ZIP, o que inclui DOCX e XLSX.

Quanto o Base64 é maior que o arquivo original?

+33.3% 4 caracteres a cada 3 bytes, ou seja, cerca de 33.3% maior: um PDF de 1 MB (1.048.576 bytes) vira 1.398.104 caracteres. Com uma quebra de linha a cada 76 caracteres, como nos anexos de e-mail, são 1.434.896 caracteres, 36.8% maior.

O que é um PDF em Base64?

Base64 representa bytes quaisquer usando apenas 64 caracteres de texto seguros (A–Z, a–z, 0–9, +, /), com = como preenchimento (padding). Cada 3 bytes viram 4 caracteres. Isso permite que um arquivo binário como um PDF passe por canais que só transportam texto: um campo JSON, um elemento XML, o corpo de um e-mail, uma coluna de texto no banco de dados. Converter Base64 para PDF é só fazer o caminho de volta: transformar os caracteres em bytes de novo e salvá-los com a extensão .pdf. O problema é que o Base64 do mundo real raramente chega limpo: vem com prefixo data:, escapes JSON, quebras de linha ou outro alfabeto, e muitos conversores geram sem avisar um arquivo que não abre.

%PDF-1.4          → bytes 25 50 44 46 2D 31 2E 34
JVBERi0xLjQ=      → the same bytes in Base64
data:application/pdf;base64,JVBERi0xLjQ=   → data URI form

Recursos

Cole do jeito que chegou

Trata data URIs, escapes JSON \/ e \n, aspas, quebras de linha MIME, - _ URL-safe, %2B %2F vindos de URLs, cabeçalhos PEM e padding = faltando, e mostra cada etapa aplicada.

Aceita a resposta JSON inteira

Cole {"code":0,"data":{"file":"JVBERi0…"}} como está. O campo mais longo com cara de Base64 é usado e o caminho dele (data.file) é exibido, para você saber qual campo foi decodificado.

Tipo real pelos bytes mágicos

PDF, PNG, JPEG, GIF, WebP, DOCX, XLSX, PPTX, ZIP, GZIP, MP3, MP4 e mais de 40 outros formatos são reconhecidos pelos primeiros bytes. O download recebe a extensão certa mesmo quando o prefixo diz outra coisa.

Explica arquivos que não abrem

Aponta PDF sem %%EOF (cortado ao copiar ou pelo limite de tamanho de uma coluna), Base64 codificado duas vezes, hexadecimal colado como Base64, dados compactados com gzip e PDFs criptografados.

Prévia na página

PDFs abrem no visualizador embutido do navegador, imagens e SVG são exibidos, texto e JSON aparecem como texto. HTML nunca é renderizado, só o código-fonte, porque ele seria executado nesta página.

PDF ou qualquer arquivo para Base64

Solte um arquivo de até 50 MB e obtenha Base64 puro ou uma data URI, opcionalmente URL-safe ou com quebra a cada 76 caracteres, com o aumento de tamanho exato.

Base64 para PDF em Python, Java, JavaScript e mais

Python

base64.b64decode

open('out.pdf', 'wb').write(base64.b64decode(s)). Use urlsafe_b64decode para - e _; b64decode ignora quebras de linha, a menos que você passe validate=True.

Java

java.util.Base64

Files.write(Path.of("out.pdf"), Base64.getMimeDecoder().decode(s)). getDecoder() rejeita quebras de linha; getUrlDecoder() é para - e _.

Node.js

Buffer

fs.writeFileSync('out.pdf', Buffer.from(s, 'base64')). Buffer aceita os dois alfabetos e ignora espaços, mas também pula sem avisar qualquer outro caractere inválido em vez de lançar erro, então confira se o resultado começa com %PDF-.

JavaScript no navegador

atob / Uint8Array.fromBase64

Monte um Uint8Array antes de criar o Blob. Uint8Array.fromBase64() é a função nativa mais recente; verifique o suporte nos navegadores que você atende.

PHP

base64_decode

file_put_contents('out.pdf', base64_decode($s, true)). Passe true para o modo estrito; caso contrário, caracteres inválidos são descartados sem aviso.

C#

Convert.FromBase64String

File.WriteAllBytes("out.pdf", Convert.FromBase64String(s)). Espaços em branco são aceitos; - e _, não.

Linha de comando

base64 -d / certutil

macOS e Linux: base64 -d < in.txt > out.pdf. Windows: certutil -decode in.txt out.pdf.

Exemplos de Base64 para PDF

Base64 puro de um PDF

JVBERi0xLjQKMSAwIG9iago8PCAvVHlwZSAvQ2F0YWxvZyAvUGFnZXMgMiAwIFIgPj4K…
PDF · versão 1.4 · baixado como file.pdf

Começa com JVBERi0, que é %PDF-. Não há nada para limpar, então é decodificado como está.

String copiada de uma resposta JSON

"data:application\/pdf;base64,JVBERi0xLjQK…"
Interpretado assim: aspas removidas → escapes JSON desfeitos → prefixo data URI removido (application/pdf)

O json_encode do PHP e alguns serializadores Java escrevem / como \/. Colado num decodificador que não desfaz isso, a barra invertida é um caractere inválido.

Resposta inteira da API

{"code":0,"data":{"name":"invoice.pdf","file":"JVBERi0xLjQK…"}}
Interpretado assim: campo data.file extraído do JSON

Não precisa recortar a string na mão. O campo mais longo com cara de Base64 é usado e o caminho dele é exibido.

Rotulado como PDF, mas é um PNG

data:application/pdf;base64,iVBORw0KGgoAAAANSUhEUgAA…
Aviso: a data URI diz application/pdf, mas os bytes são PNG. Salvo como file.png

Muitos conversores gravariam um .pdf que nenhum leitor consegue abrir. Os bytes mágicos valem mais que o rótulo.

Hexadecimal colado no lugar de Base64

255044462d312e370a…
Aviso: isto parece hexadecimal; lido como hex, é um PDF. [Decodificar como hex]

Todos os dígitos hexadecimais são caracteres Base64 válidos, então a decodificação Base64 não falha: ela gera lixo sem avisar. 25 50 44 46 é %PDF.

Como converter Base64 para PDF

  1. 1

    Cole o Base64 do jeito que você recebeu

    Base64 puro, data:application/pdf;base64,…, uma string copiada de um JSON com escapes \/ ou a resposta inteira da API. Para strings muito longas, use Abrir um arquivo .txt em vez de colar.

  2. 2

    Confira como ele foi interpretado

    A linha abaixo da caixa lista cada etapa de limpeza: prefixo removido, escapes desfeitos, padding adicionado, campo extraído do JSON. Se algo estiver errado, o erro aponta o caractere exato e a posição.

  3. 3

    Veja o tipo detectado e os avisos

    O selo mostra o tipo lido dos bytes mágicos do arquivo. Aparece uma nota amarela se na verdade não for um PDF, se a data URI mentir sobre o tipo ou se o PDF estiver cortado antes de %%EOF.

  4. 4

    Visualize e baixe

    PDFs abrem no visualizador do próprio navegador; imagens e texto aparecem na página. Renomeie o arquivo se quiser e clique em Baixar. Para o sentido inverso, mude para PDF / arquivo → Base64 e solte um arquivo.

Por que um PDF em Base64 não abre: erros comuns

Decodificar o prefixo data URI junto com os dados

data:application/pdf;base64, não faz parte do Base64. Deixá-lo ali ou gera erro (: e ; são inválidos) ou, em decodificadores permissivos, corrompe os primeiros bytes, e o arquivo deixa de começar com %PDF-.

✗ Incorreto
base64.b64decode(value)  # value = 'data:application/pdf;base64,JVBERi0…'
✓ Correto
b64 = value.split(',', 1)[1] if value.startswith('data:') else value
pdf = base64.b64decode(b64)

Gravar os bytes decodificados como texto

Um PDF é binário. Converter os bytes decodificados em string e gravá-la com uma codificação de texto substitui bytes inválidos e altera as quebras de linha, o que quebra a tabela de referências cruzadas.

✗ Incorreto
fs.writeFileSync('out.pdf', Buffer.from(b64, 'base64').toString())
✓ Correto
fs.writeFileSync('out.pdf', Buffer.from(b64, 'base64'))

Decodificador estrito com Base64 quebrado em linhas

O Base64.getDecoder() do Java rejeita quebras de linha. Base64 vindo de e-mail ou do comando base64 no Linux é quebrado a cada 76 caracteres. Use o decodificador MIME ou remova os espaços antes.

✗ Incorreto
byte[] pdf = Base64.getDecoder().decode(wrapped);  // IllegalArgumentException
✓ Correto
byte[] pdf = Base64.getMimeDecoder().decode(wrapped);

Base64 URL-safe num decodificador padrão

JWTs e muitos parâmetros de URL usam - e _ no lugar de + e /, e dispensam o padding =. Um decodificador padrão os rejeita ou decodifica os bytes errados.

✗ Incorreto
base64.b64decode(token_part)  # contains - and _
✓ Correto
base64.urlsafe_b64decode(token_part + '=' * (-len(token_part) % 4))

Usar o resultado de atob() como texto

No navegador, atob devolve uma string binária, um caractere por byte. Passá-la para new Blob([str]) a codifica em UTF-8, transformando cada byte acima de 127 em dois bytes. Copie antes para um Uint8Array.

✗ Incorreto
new Blob([atob(b64)], { type: 'application/pdf' })
✓ Correto
const bytes = Uint8Array.from(atob(b64), c => c.charCodeAt(0));
new Blob([bytes], { type: 'application/pdf' })

String truncada

Um PDF termina com %%EOF. Se o Base64 foi cortado por uma coluna VARCHAR, por um limite de tamanho de linha de log ou por uma cópia incompleta, o arquivo decodifica, mas os leitores mostram erro ou páginas faltando. Compare o tamanho com o que o remetente gerou.

✗ Incorreto
SELECT LENGTH(pdf_b64) FROM docs;  -- 65535: suspiciously round
✓ Correto
ALTER TABLE docs MODIFY pdf_b64 LONGTEXT;  -- or store the bytes in a BLOB

Quando converter Base64 para PDF

Uma API devolve o PDF em Base64
APIs de emissão de notas, assinatura eletrônica e impressão de etiquetas costumam devolver documentos dentro de um JSON. Cole a resposta para conferir o documento antes de escrever o código que o salva.
Depurar um PDF que não abre
Quando o arquivo salvo sai em branco ou corrompido, cole aqui o mesmo Base64. A ferramenta diz se ele está truncado, codificado duas vezes, se nem é um PDF ou se está tudo certo, o que significa que o bug está na forma como seu código grava o arquivo.
Enviar um arquivo numa requisição JSON
Muitos endpoints de upload esperam {"filename": …, "content": "<base64>"}. Codifique o arquivo aqui para montar uma requisição de teste no Postman ou no cURL.
Incorporar um arquivo em HTML, CSS ou e-mail
Gere uma data URI para um link de PDF inline, uma fonte ou uma imagem pequena, ou Base64 com 76 colunas para uma parte MIME de e-mail.
Recuperar anexos de logs e bancos de dados
Arquivos guardados numa coluna de texto ou impressos num log podem ser extraídos direto, e a falta do %%EOF mostra que a coluna ou a linha de log era curta demais.

Como funciona a codificação Base64 de arquivos

Por que o Base64 é 33% maior
Cada caractere carrega 6 bits, então 3 bytes (24 bits) precisam de 4 caracteres. Com padding, o tamanho é 4 × ⌈n ÷ 3⌉: 100 KB (102.400 bytes) viram 136.536 caracteres. A quebra MIME adiciona um CRLF a cada 76 caracteres, então 1 MB vira 1.434.896 caracteres em vez de 1.398.104.
Alfabeto padrão e alfabeto URL-safe
A RFC 4648 define dois alfabetos que só diferem nos dois últimos caracteres: + / (padrão, seção 4) e - _ (seguro para URL e nome de arquivo, seção 5). O Base64 URL-safe costuma omitir o padding =. Se uma string mistura os dois, ela foi editada ou juntada de duas fontes.
Padding e tamanhos impossíveis
O padding = deixa o tamanho múltiplo de 4. Sem ele, um resto de 2 ou 3 pode ser restaurado; um resto de 1 é impossível para qualquer Base64 válido: um caractere foi perdido ou acrescentado. Um = no meio geralmente indica que duas strings foram concatenadas.
Os bytes mágicos definem o tipo
Um arquivo declara o formato nos primeiros bytes: %PDF- para PDF, 89 50 4E 47 para PNG, 50 4B 03 04 para formatos baseados em ZIP como DOCX e XLSX. Esses bytes fixam os primeiros caracteres do Base64, então dá para saber o tipo antes de decodificar: veja a tabela na ferramenta.
Como um PDF truncado é detectado
Um PDF termina com %%EOF. Se ele não aparece nos últimos 1.024 bytes, o arquivo quase certamente foi cortado. O cabeçalho pode começar até 1.024 bytes adiante; a maioria dos leitores ainda abre esses arquivos, então isso é avisado, mas não rejeitado.

Boas práticas para enviar arquivos em Base64

Envie o tipo MIME e o nome do arquivo junto com os dados
Base64 não carrega nome nem tipo. Coloque os dois ao lado ({"filename": "invoice.pdf", "mime": "application/pdf", "content": "…"}) ou use uma data URI, para quem recebe não precisar adivinhar.
Confira os bytes mágicos no lado que recebe
Antes de salvar, verifique se os bytes decodificados começam com %PDF-. Uma linha de código pega campo errado, codificação dupla e páginas de erro devolvidas em Base64.
Para arquivos grandes, prefira multipart ou uma URL
Base64 aumenta o tamanho em um terço e a string inteira precisa ficar na memória. Acima de alguns megabytes, multipart/form-data ou uma URL de download pré-assinada é mais leve para os dois lados.
Guarde bytes, não Base64, no banco de dados
Uma coluna BLOB/bytea ocupa um terço a menos e não pode ser truncada sem aviso como um VARCHAR. Codifique em Base64 só na fronteira da API.

Base64 para PDF — perguntas frequentes

Como converter Base64 para PDF?
Cole o Base64 na caixa desta página. Ele é decodificado na hora, o PDF abre na prévia e Baixar salva como .pdf. O prefixo data:application/pdf;base64,, as aspas, as quebras de linha e os escapes JSON podem ficar: são removidos automaticamente.
Por que meu PDF decodificado não abre?
As causas comuns são: o prefixo data: foi decodificado como parte dos dados; os bytes foram gravados como texto em vez de binário; a string foi cortada (sem %%EOF no final); o Base64 foi codificado duas vezes; ou nem é um PDF, por exemplo um PNG ou uma mensagem de erro em JSON. Cole a mesma string aqui: cada um desses casos mostra um aviso específico.
Meu arquivo é enviado para algum servidor?
Não. A decodificação, a detecção do tipo, a prévia e a codificação rodam no seu navegador com JavaScript. Nada do que você cola ou solta é enviado para lugar nenhum, então é seguro para notas fiscais, contratos e documentos de identidade.
Como saber que tipo de arquivo é o Base64?
Veja como ele começa: JVBERi0 é PDF, iVBORw0KGgo é PNG, /9j/ é JPEG, R0lGOD é GIF, UEsDB é ZIP (e portanto DOCX, XLSX, PPTX), H4sI é gzip. A ferramenta lê os bytes mágicos decodificados, mostra o tipo e salva o arquivo com a extensão correspondente.
Dá para converter Base64 em Word, Excel, imagem ou ZIP?
Sim. Qualquer tipo de arquivo pode ser decodificado; a extensão vem do conteúdo. DOCX, XLSX e PPTX são reconhecidos dentro do contêiner ZIP, e os antigos DOC/XLS são reconhecidos como Office 97–2003. Imagens, áudio e vídeo têm prévia; os outros tipos são baixados direto.
Como converter um PDF para Base64?
Abra a aba PDF / arquivo → Base64 e solte o PDF. Escolha Base64 puro ou data URI, opcionalmente URL-safe ou com quebra a cada 76 caracteres, e depois copie ou baixe como arquivo .txt.
Qual a diferença entre Base64 e data URI?
Uma data URI é Base64 com um cabeçalho que informa o tipo: data:application/pdf;base64,JVBERi0…. Os navegadores conseguem abri-la direto como link ou src. As APIs geralmente querem só a parte Base64 depois da vírgula.
Por que aparece "Isto não é um PDF"?
Porque os bytes decodificados não começam com %PDF-. O tipo exibido é o que os bytes realmente são. As surpresas mais comuns são um scan em PNG ou JPEG, um DOCX, um ZIP com vários PDFs, ou uma mensagem de erro em JSON ou HTML codificada em Base64 no lugar do documento.
O que significa "sem %%EOF no final"?
Todo PDF termina com o marcador %%EOF. Quando ele falta, o Base64 quase certamente foi truncado: copiado só em parte, cortado por uma coluna de banco de dados como um TEXT do MySQL (65.535 bytes) ou encurtado por um limite de tamanho de linha de log. Pegue a string completa de novo; decodificar não recupera dados que faltam.
O que significa "decodificado uma segunda vez"?
Os dados decodificados eram, eles mesmos, texto em Base64. Isso acontece quando um valor é codificado uma vez pelo seu código e de novo por um framework ou cliente HTTP. A ferramenta só decodifica a camada interna quando ela se revela um arquivo reconhecível, então texto comum nunca é desembrulhado por engano.
Existe limite de tamanho?
O texto colado pode ter até 100 MB e os arquivos para codificar até 50 MB. Para Base64 muito longo, Abrir um arquivo .txt é mais rápido que colar. A prévia de texto mostra os primeiros 100.000 caracteres; o download é sempre completo.
Por que a prévia do PDF fica em branco no celular?
Navegadores móveis tratam PDFs incorporados de formas diferentes; alguns mostram só a primeira página ou nada. Use Abrir em nova aba ou Baixar: o arquivo em si não é afetado.

Ferramentas relacionadas

Ver todas as ferramentas →

Tabela ASCII e conversor de caracteres

Codificação e Formatação

A tabela ASCII completa: 128 caracteres em decimal, hexadecimal, octal e binário, mais um conversor texto ↔ ASCII. Cada caractere de controle traz seu escape, sua notação caret e onde você o encontra.

Gerador de Código de Barras Grátis — EAN-13, UPC-A, Code 128

Codificação e Formatação

Gere EAN-13, UPC-A, Code 128, Code 39 e mais 11 tipos de código de barras em SVG ou PNG pronto para impressão. Digite 12 dígitos e o dígito verificador é preenchido automaticamente; errou um, dizemos qual deveria ser.

Decodificador e Codificador Base64

Codificação e Formatação

Decodifique e codifique Base64 online gratuitamente. Conversão em tempo real com suporte completo a UTF-8 e emoji. 100% privado — executa no seu navegador. Sem necessidade de cadastro.

Conversor de Base64 para Imagem

Codificação e Formatação

Decodifique uma string Base64 ou data URI de volta para imagem no navegador. Pré-visualize, leia dimensões e MIME, e baixe como PNG, JPG, GIF, SVG. Sem upload.

Conversor CSV para JSON

Codificação e Formatação

Converta CSV para JSON no navegador. RFC 4180, inferência de tipos, cabeçalho, seguro para inteiros grandes. 100% privado, sem upload.

Conversor de Codificação e Corretor de Mojibake

Codificação e Formatação

Cole o texto corrompido e recupere o original. Toda cadeia de codificação plausível — UTF-8, GBK, Big5, Shift_JIS, EUC-KR, Windows-1252 — é testada e ordenada, com a cadeia exata à vista. Grátis, roda no navegador.