# Converter arquivo para Base64 (e Base64 para arquivo)

> Esta ferramenta converte qualquer arquivo, como uma imagem, um PDF ou uma fonte, em Base64, pronto para usar como data URI no HTML, no CSS ou em uma API. Ela também faz o caminho inverso: transforma um Base64 ou data URI de volta em arquivo, descobre o tipo pelo conteúdo e mostra a prévia de imagens. Nada é enviado a um servidor.

- Endereço oficial: https://pradev.com.br/base64-de-arquivo
- Categoria: Codificação e segurança
- Tipo: Utilitário
- Atualizado em: 2026-10-01
- Autor: Leonardo Gaertner (https://pradev.com.br/sobre)
- Preço: grátis, sem cadastro. O processamento acontece no navegador de quem usa.

## Como usar

1. Para converter um arquivo, escolha ou arraste o arquivo e selecione o formato: Base64 puro, data URI, CSS ou tag <img>.
2. Para recuperar um arquivo, escolha Base64 para arquivo e cole o Base64 ou o data URI.
3. Copie o resultado ou clique em Baixar arquivo. Imagens aparecem em uma prévia.

## Como funciona

O arquivo é lido no navegador e convertido em Base64, que representa os bytes com 64 caracteres seguros. O resultado fica cerca de 33% maior que o arquivo: 3 bytes viram 4 caracteres. O data URI junta o tipo do arquivo e o Base64 em um endereço como data:image/png;base64,...

No caminho inverso, a ferramenta aceita Base64 puro, data URI, quebras de linha no meio e a variante para URL. O tipo vem do data URI ou, se não houver, dos primeiros bytes do arquivo, a assinatura: PNG, JPEG, GIF, WebP, SVG, PDF, ZIP e outros. Assim o download sai com a extensão certa.

Data URIs são úteis para ícones pequenos e imagens em e-mails, mas não para imagens grandes: o arquivo não fica em cache separado, e o HTML ou o CSS ficam mais pesados. A ferramenta avisa quando o arquivo passa de 2 MB.

### Exemplo

```text
Arquivo: ponto.png (1 pixel, 68 bytes)
Data URI: data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAE...
```

## Em código

Para converter arquivos em Base64 e de volta em código, leia o arquivo como bytes, não como texto: assim imagens e PDFs não se corrompem.

```javascript
import { readFileSync, writeFileSync } from 'node:fs';

// Arquivo para data URI (Node.js)
function arquivoParaDataUri(caminho, tipo = 'application/octet-stream') {
  return `data:${tipo};base64,${readFileSync(caminho).toString('base64')}`;
}

// Data URI ou Base64 puro de volta para arquivo
function base64ParaArquivo(texto, caminho) {
  const base64 = texto.replace(/^data:[^,]*;base64,/, '');
  writeFileSync(caminho, Buffer.from(base64, 'base64'));
}
```

_JavaScript. Node.js._

```python
import base64
import mimetypes


def arquivo_para_data_uri(caminho: str) -> str:
    tipo = mimetypes.guess_type(caminho)[0] or "application/octet-stream"
    with open(caminho, "rb") as f:
        return f"data:{tipo};base64,{base64.b64encode(f.read()).decode('ascii')}"


def base64_para_arquivo(texto: str, caminho: str) -> None:
    dados = texto.split(",", 1)[1] if texto.startswith("data:") else texto
    with open(caminho, "wb") as f:
        f.write(base64.b64decode(dados))
```

_Python_

```php
<?php
function arquivoParaDataUri(string $caminho): string
{
    $tipo = mime_content_type($caminho) ?: 'application/octet-stream';
    return 'data:' . $tipo . ';base64,' . base64_encode(file_get_contents($caminho));
}

function base64ParaArquivo(string $texto, string $caminho): void
{
    $base64 = preg_replace('/^data:[^,]*;base64,/', '', $texto);
    file_put_contents($caminho, base64_decode($base64, true));
}
```

_PHP_

## Perguntas frequentes

### Como usar uma imagem em Base64 no HTML?

Escolha o formato Tag <img> e cole o resultado no HTML, ou use o data URI no atributo src: <img src="data:image/png;base64,...">. No CSS, o formato CSS background-image já sai pronto.

### Por que o Base64 fica maior que o arquivo?

Porque cada 3 bytes do arquivo viram 4 caracteres de texto, um aumento de cerca de 33%. Com a compressão gzip do servidor, parte dessa diferença é recuperada, mas não toda.

### Vale a pena colocar imagens em Base64 no site?

Só para imagens muito pequenas, como ícones de poucos KB, em que poupar uma requisição compensa. Imagens maiores devem ficar em arquivos separados, que o navegador guarda em cache e carrega em paralelo.

### Como sei o tipo de um arquivo em Base64?

Se for um data URI, o tipo vem logo depois de data:. Se for Base64 puro, cole aqui: a ferramenta identifica o tipo pelos primeiros bytes, como PNG, JPEG, PDF e ZIP, e mostra a prévia se for imagem.

## Fontes

- [RFC 4648: codificações Base16, Base32 e Base64](https://www.rfc-editor.org/rfc/rfc4648)
- [RFC 2397: o esquema de URL data:](https://www.rfc-editor.org/rfc/rfc2397)

## Ferramentas relacionadas

- [Codificar Base64](https://pradev.com.br/codificar-base64): Converta texto para Base64 online, com suporte a acentos (UTF-8) e opção URL-safe. Grátis, no navegador, sem enviar seus dados.
- [Decodificar Base64](https://pradev.com.br/decodificar-base64): Decodifique Base64 para texto online, com suporte a UTF-8 e Base64 URL-safe. Grátis, direto no navegador, sem enviar seus dados.
- [Gerador de Hash](https://pradev.com.br/gerador-de-hash): Gere hash MD5, SHA-1, SHA-256, SHA-384 e SHA-512 de um texto ou arquivo. Grátis, e o conteúdo não sai do navegador.
- [Gerador de UUID](https://pradev.com.br/gerador-de-uuid): Gere UUID v4 aleatório com um clique: em lote, em maiúsculas, com ou sem hífens. Grátis, gerado no seu navegador.
- [Gerador de Senha](https://pradev.com.br/gerador-de-senha): Crie senhas fortes e aleatórias com o tamanho e os caracteres que quiser. Geradas no seu navegador, nunca enviadas nem armazenadas.
- [Decodificador JWT](https://pradev.com.br/decodificador-jwt): Decodifique um JWT online e veja header, payload e datas de exp, iat e nbf. O token não sai do navegador. Não verifica a assinatura.
