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.
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.
Interpretado assim:
Solte aqui um PDF ou qualquer outro arquivo, ou clique para escolher
Qualquer tipo de arquivo · até 50 MB · nunca é enviado
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 | 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 |
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.
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.
+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.
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
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.
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.
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.
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.
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.
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.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.util.Base64 Files.write(Path.of("out.pdf"), Base64.getMimeDecoder().decode(s)). getDecoder() rejeita quebras de linha; getUrlDecoder() é para - e _.
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-.
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.
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.
Convert.FromBase64String File.WriteAllBytes("out.pdf", Convert.FromBase64String(s)). Espaços em branco são aceitos; - e _, não.
base64 -d / certutil macOS e Linux: base64 -d < in.txt > out.pdf. Windows: certutil -decode in.txt out.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á.
"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.
{"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.
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.
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.
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.
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.
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.
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.
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-.
base64.b64decode(value) # value = 'data:application/pdf;base64,JVBERi0…'
b64 = value.split(',', 1)[1] if value.startswith('data:') else value
pdf = base64.b64decode(b64) 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.
fs.writeFileSync('out.pdf', Buffer.from(b64, 'base64').toString()) fs.writeFileSync('out.pdf', Buffer.from(b64, 'base64')) 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.
byte[] pdf = Base64.getDecoder().decode(wrapped); // IllegalArgumentException
byte[] pdf = Base64.getMimeDecoder().decode(wrapped);
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.
base64.b64decode(token_part) # contains - and _
base64.urlsafe_b64decode(token_part + '=' * (-len(token_part) % 4))
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.
new Blob([atob(b64)], { type: 'application/pdf' }) const bytes = Uint8Array.from(atob(b64), c => c.charCodeAt(0));
new Blob([bytes], { type: 'application/pdf' }) 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.
SELECT LENGTH(pdf_b64) FROM docs; -- 65535: suspiciously round
ALTER TABLE docs MODIFY pdf_b64 LONGTEXT; -- or store the bytes in a BLOB
{"filename": …, "content": "<base64>"}. Codifique o arquivo aqui para montar uma requisição de teste no Postman ou no cURL.%%EOF mostra que a coluna ou a linha de log era curta demais.+ / (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.= 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.%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.%%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.{"filename": "invoice.pdf", "mime": "application/pdf", "content": "…"}) ou use uma data URI, para quem recebe não precisar adivinhar.%PDF-. Uma linha de código pega campo errado, codificação dupla e páginas de erro devolvidas em Base64.multipart/form-data ou uma URL de download pré-assinada é mais leve para os dois lados.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.data:application/pdf;base64,, as aspas, as quebras de linha e os escapes JSON podem ficar: são removidos automaticamente. 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. 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. 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. %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. %%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. 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.
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.
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.
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.
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.
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.