Enviar um arquivo
  1. base64hub
  2. Ferramentas de texto
  3. Base64 para UTF-8

Base64 para UTF-8: decodificar Base64 em texto Unicode

Cole o Base64 e leia como texto UTF-8. Se os bytes não forem UTF-8 válido, a ferramenta marca os trechos problemáticos com � e avisa, então um charset errado ou uma string cortada fica evidente.

Grátis sem cadastro, sem limites Local nada é enviado Atualizado 27 de out. de 2026
Entrada 0 BSaída 0 BTamanho –

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

Como decodificar Base64 para UTF-8

  1. Cole o Base64 em Entrada · Base64. O Charset já vem em UTF-8.
  2. Leia o resultado em Saída · texto. A linha de status mostra a contagem de bytes e o tipo de conteúdo detectado.
  3. Se a linha de status disser “Alguns bytes não são UTF-8 válido”, o texto está em outro charset. Experimente Detectar automaticamente, Windows-1252 ou UTF-16LE.
  4. Copiar saída copia o texto; Baixar salva os bytes decodificados sem alteração.

Para codificar na direção inversa, use UTF-8 para Base64.

Exemplos

Base64Decodificado como UTF-8O que mostra
8J+YgA==😀Um emoji, 4 bytes
4oKs€3 bytes, sem preenchimento
bmHDr3ZlIGNhZsOpnaïve caféLetras acentuadas, 2 bytes cada
77u/SGk=Hi5 bytes: uma marca de ordem de bytes e depois Hi
Y2Fm6Q==caf�E9 é é em Latin-1, inválido em UTF-8
8J+Y�Um emoji cortado depois de 3 dos seus 4 bytes
Y2Fmw4PCqQ==caféUTF-8 válido de um texto que já estava corrompido

As três últimas linhas são os problemas tratados abaixo: um charset errado, uma string cortada e um texto que já estava estragado antes de ser codificado.

UTF-8 inválido e o caractere de substituição

O UTF-8 tem regras rígidas: um byte acima de 7F precisa fazer parte de uma sequência de 2, 3 ou 4 bytes com um padrão fixo. Bytes que quebram o padrão não podem ser lidos como UTF-8. O decodificador troca cada sequência quebrada por U+FFFD (�) e mostra o aviso “Alguns bytes não são UTF-8 válido. Tente outro charset.” Nada é descartado em silêncio, então cada � marca o ponto exato de um problema.

Duas causas explicam quase todos os casos:

  • Outro charset. Y2Fm6Q== contém 63 61 66 E9, que é café em ISO-8859-1 e Windows-1252. Troque o Charset e o texto aparece. A página do decodificador Base64 lista os sintomas comuns de cada charset.
  • Uma string truncada. Se o Base64 foi cortado, por exemplo pelo limite de uma coluna no banco de dados ou de uma linha de log, o último caractere pode perder parte dos seus bytes. 8J+YgA== é um emoji completo; 8J+Y é o mesmo emoji sem o último byte e decodifica para um único �. Procure o valor completo na origem.

Texto codificado duas vezes (é e ’)

Quando a saída mostra é no lugar de é, ü no lugar de ü ou ’ no lugar de um apóstrofo curvo, a culpa não é do decodificador. Em algum ponto anterior, bytes UTF-8 foram lidos como Windows-1252 e salvos de novo como UTF-8, transformando cada caractere especial em dois ou três errados. O Base64 guarda fielmente esse texto danificado: Y2Fmw4PCqQ== é UTF-8 válido da string de sete bytes café.

Muitas vezes dá para reparar essa string no código desfazendo o erro: codifique o texto como Windows-1252 e decodifique os bytes como UTF-8. A correção de verdade fica no sistema que gravou o texto.

Marcas de ordem de bytes

Alguns editores, principalmente no Windows, começam arquivos UTF-8 com os bytes EF BB BF, uma marca de ordem de bytes (BOM). Em Base64, o arquivo passa a começar com 77u/. O decodificador reconhece a marca e a deixa fora do texto, enquanto Baixar mantém os bytes exatamente como eram. No código, talvez você precise removê-la por conta própria:

import base64

raw = base64.b64decode("77u/SGk=")
raw.decode("utf-8")       # '\ufeffHi'
raw.decode("utf-8-sig")   # 'Hi'

base64.b64decode("Y2Fm6Q==").decode("utf-8", errors="replace")   # 'caf�'

Sem errors="replace", o Python lança UnicodeDecodeError diante de bytes inválidos. Em JavaScript, new TextDecoder("utf-8", { fatal: true }) lança um TypeError em vez de inserir �, e o decodificador padrão remove o BOM, como esta ferramenta. Mais em Base64 em Python e Base64 em JavaScript.

Perguntas frequentes

Como decodificar Base64 para uma string UTF-8?

Decodifique o Base64 em bytes e depois interprete os bytes como UTF-8. Na ferramenta acima, isso acontece em um passo só. Em Python é base64.b64decode(s).decode("utf-8"); no navegador, new TextDecoder().decode(bytes).

O que significa o caractere � na saída?

É o U+FFFD, o caractere de substituição. O decodificador o insere onde os bytes não formam UTF-8 válido, o que geralmente indica texto codificado em outro charset ou um Base64 cortado.

Por que o texto decodificado começa com um caractere invisível?

A origem provavelmente tinha uma marca de ordem de bytes UTF-8 (Base64 começando com 77u/). Esta ferramenta a descarta, mas o .decode("utf-8") simples do Python a mantém como \ufeff; use "utf-8-sig" para removê-la.

UTF-8 é a escolha certa para o meu Base64?

Muito provavelmente. JSON, a web, o Linux e as APIs modernas usam UTF-8. Dados de programas antigos do Windows ou strings do .NET e do PowerShell podem estar em Windows-125x ou UTF-16.