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

UTF-8 para Base64: codificar texto Unicode e emojis

Cada caractere é convertido nos seus bytes UTF-8, que depois são codificados em Base64, então emojis, acentos e qualquer escrita saem exatos byte a byte e decodificam igual em qualquer lugar.

Grátis sem cadastro, sem limites Local nada é enviado 1–4 bytes por caractere em UTF-8 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 codificar texto UTF-8 em Base64

  1. Digite ou cole o texto em Entrada · texto. O Charset já está em UTF-8.
  2. O Base64 aparece em Saída · Base64. O número Entrada abaixo da ferramenta é a quantidade de bytes UTF-8; o contador acima da caixa conta caracteres do jeito que o JavaScript conta, então um emoji vale 2.
  3. Marque URL-safe (- _) e Sem preenchimento (=) para URLs e tokens, ou escolha uma Quebra de linha para e-mail ou PEM.
  4. Copie a saída ou baixe-a como base64.txt.

Base64 para UTF-8 transforma o resultado de volta em texto.

Como o UTF-8 transforma caracteres em bytes

O UTF-8 usa de 1 a 4 bytes por code point. O ASCII continua com 1 byte, e é por isso que texto em inglês fica igual em UTF-8 e em ASCII. Todo o resto ocupa mais:

CaractereCode pointBytes UTF-8Base64
AU+004141QQ==
éU+00E9C3 A9w6k=
€U+20ACE2 82 AC4oKs
日本語U+65E5 U+672C U+8A9E9 bytes, 3 cada5pel5pys6Kqe
😀U+1F600F0 9F 98 808J+YgA==

Como o Base64 soma um terço aos bytes, uma frase em chinês ou japonês cresce cerca de quatro vezes, de caracteres para caracteres Base64, e um emoji sozinho vira 8 caracteres. Lembre disso em campos com limite de comprimento; a calculadora de tamanho ajuda.

Sequências de emojis e tons de pele

O que parece um emoji costuma ser vários code points colados. Um tom de pele é um modificador separado, e emojis de família ou de profissão unem várias pessoas com um zero-width joiner invisível (U+200D):

EmojiCode pointsBytes UTF-8Base64
😀148J+YgA==
👍🏽2 (polegar para cima + tom de pele médio)88J+RjfCfj70=
👨‍👩‍👧5 (três pessoas + dois joiners)188J+RqOKAjfCfkanigI3wn5Gn

Cortar uma string Base64 ou os bytes decodificados no meio de uma sequência dessas deixa caracteres quebrados, então nunca trunque UTF-8 codificado em um byte qualquer.

Mesmo texto, bytes diferentes: normalização Unicode

Alguns caracteres têm duas grafias válidas no Unicode. é pode ser o code point único U+00E9 (composto, NFC) ou e seguido de U+0301 COMBINING ACUTE ACCENT (decomposto, NFD). Os dois aparecem iguais na tela, mas os bytes são diferentes:

TextoFormaBytesBase64
éNFCC3 A9w6k=
éNFD65 CC 81ZcyB
naïveNFC6bmHDr3Zl
naïveNFD7bmFpzIh2ZQ==

Nomes de arquivos no antigo sistema de arquivos HFS+ da Apple são guardados na forma decomposta, enquanto a maioria dos teclados gera texto composto. Se você compara valores Base64, assina esses valores ou os usa como chaves, normalize antes. Esta ferramenta codifica exatamente os code points que você cola e não normaliza.

UTF-8 para Base64 no código

Em JavaScript, o TextEncoder sempre gera UTF-8. Normalize antes quando a entrada puder vir de fontes diferentes:

const text = "e\u0301".normalize("NFC");
Buffer.from(text, "utf8").toString("base64");   // "w6k=" (Node.js)
new TextEncoder().encode(text);                  // Uint8Array [195, 169]

Nos navegadores, os bytes do TextEncoder podem ir para bytes.toBase64() onde houver suporte (Uint8Array.toBase64), ou passar pelo helper com btoa da página de JavaScript.

import base64, unicodedata

s = unicodedata.normalize("NFC", "nai\u0308ve")
base64.b64encode(s.encode("utf-8")).decode()   # 'bmHDr3Zl'

Veja Base64 em Python para arquivos e streaming.

Perguntas frequentes

Base64 de UTF-8 é a mesma coisa que Base64 normal?

Sim. O Base64 sempre codifica bytes; “UTF-8 para Base64” só diz quais bytes. Para texto ASCII simples, os bytes UTF-8 são iguais aos bytes ASCII, então a saída é idêntica nos dois casos.

Por que duas strings que parecem idênticas geram Base64 diferente?

O Unicode permite escrever alguns caracteres de mais de uma forma. é como um único code point é w6k=, enquanto e mais um acento combinante é ZcyB. Normalize para NFC antes de codificar se os valores precisarem bater.

O codificador adiciona um byte order mark de UTF-8?

Não. A saída começa direto com os bytes do seu texto. Se um consumidor exigir um BOM, o Base64 precisa começar com 77u/, que é a codificação dos bytes EF BB BF.

Quantos bytes ocupa um emoji?

Um único code point de emoji ocupa 4 bytes em UTF-8. Emojis com tom de pele ou famílias unidas são vários code points: 👍🏽 tem 8 bytes e a família 👨‍👩‍👧 tem 18.