O que é esta ferramenta?
Para texto ASCII simples (letras em inglês, dígitos, pontuação básica), a contagem de caracteres e a de bytes são o mesmo número — cada caractere ocupa exatamente um byte em UTF-8. Assim que o texto inclui letras acentuadas, caracteres chineses/japoneses/coreanos, cirílico, árabe, emoji, ou a maioria dos outros caracteres não ASCII, isso deixa de ser verdade: um único caractere pode ocupar 2, 3 ou 4 bytes em UTF-8, e 2 ou 4 bytes em UTF-16.
Isso importa sempre que um sistema tem um limite em bytes em vez de caracteres — mensagens SMS, tamanhos de coluna de banco de dados, limites de payload de API, e algumas plataformas sociais medem tudo em bytes, não caracteres, então o mesmo texto pode silenciosamente exceder um limite dependendo de qual idioma ou símbolos ele contém.
Por que usar?
- Está desenvolvendo uma integração com a API do X (Twitter) e quer entender por que uma postagem em português com acentos está batendo num limite em bytes mesmo tendo poucos caracteres — comparar a contagem de caracteres com a de bytes UTF-8 mostra a diferença na hora.
- Trabalha numa loja virtual multilíngue e precisa checar se o nome de um produto em português cabe numa coluna VARCHAR(255) do banco de dados quando esse limite é definido em bytes, não em caracteres.
- Está implementando um sistema de notificação por SMS para clientes internacionais e quer estimar em quantos segmentos uma mensagem com emoji e acentuação será dividida antes de mandar de verdade.
- Está investigando um erro de limite de payload numa API e percebeu que o texto em português parece curto, mas o número de bytes está estranhamente alto.
- Tentou cadastrar um nome de usuário com emoji num sistema estrangeiro e recebeu um aviso de que sobrou menos espaço do que o esperado — dá pra ver quantos bytes e unidades de código o emoji realmente ocupa por trás dos panos.
- Mesmo lidando com dados de clientes ou strings de um sistema interno da empresa, o texto é processado só no navegador, então dá pra conferir sem mandar nada para fora.
Como usar
- Digite ou cole texto na caixa.
- Leia a contagem de caracteres, contagem de bytes UTF-8, e contagem de bytes UTF-16 abaixo — elas atualizam enquanto você digita.
Exemplo
Entrada
Hello, 世界! 🌍Resultado
12 caracteres, 19 bytes UTF-8, 26 bytes UTF-16A parte ASCII ("Hello, " e "! ") ocupa 1 byte por caractere em UTF-8. Cada caractere chinês ocupa 3 bytes, e o emoji ocupa 4 bytes — por isso as contagens em bytes são visivelmente maiores que a contagem de caracteres.
Usos comuns
- Verificar se uma descrição de produto multilíngue vai caber em uma coluna de banco de dados definida por comprimento em bytes em vez de contagem de caracteres.
- Estimar o uso de segmentos SMS, já que SMS é cobrado e dividido por tamanho em bytes, e texto não latino usa um limite por segmento diferente.
- Verificar se um payload de API ou campo de formulário fica abaixo de um limite de tamanho baseado em bytes antes de enviar.
- Entender por que uma string que "parece curta" está sendo rejeitada por um sistema com verificação de comprimento baseada em bytes.
Quantos bytes cada tipo de caractere ocupa em UTF-8
Mesmo sendo "1 caractere" nos dois casos, o número de bytes usado em UTF-8 varia bastante dependendo do tipo de caractere. Veja a referência abaixo.
| Tipo de caractere | Bytes em UTF-8 | Exemplo |
|---|---|---|
| Letras e números sem acento, pontuação básica | 1 byte | A, 1, !, espaço |
| Letras acentuadas do português, cirílico, grego | 2 bytes | á, ç, é, Ж |
| Caracteres CJK (chinês, japonês, coreano) | 3 bytes | 中, あ, 한 |
| Emoji e alguns símbolos especiais | 4 bytes | 🌍, 🎉 |
Perguntas frequentes
Por que a contagem de caracteres e a de bytes não coincidem?
Texto Unicode é armazenado como bytes, e quantos bytes cada caractere precisa depende da codificação e do próprio caractere. Em UTF-8, caracteres ASCII ocupam 1 byte, a maioria das letras latinas acentuadas e cirílico/grego/hebraico/árabe ocupam 2 bytes, a maioria dos caracteres CJK ocupam 3 bytes, e emoji tipicamente ocupam 4 bytes. A contagem de caracteres simplesmente conta símbolos, ignorando como são armazenados.
Qual contagem de bytes devo usar para um campo limitado por bytes?
Use a codificação que o sistema realmente usa para armazenar ou transmitir o texto — a maioria das APIs web modernas, bancos de dados e arquivos usam UTF-8, então a contagem de bytes UTF-8 costuma ser a relevante. Alguns sistemas mais antigos (como o tratamento interno de strings do Windows/Java) usam UTF-16.
Isso conta emoji corretamente?
Sim. Muitos emoji são armazenados internamente como um par de unidades de código "substitutas" UTF-16, que métodos ingênuos de contagem contam como 2 caracteres. Esta ferramenta conta pontos de código Unicode corretamente, então um emoji é contado como 1 caractere, combinando com quantos caracteres uma pessoa realmente vê.
Isso é a mesma coisa que a ferramenta Contador de Palavras?
Não — o Contador de Palavras foca em contagem de palavras e frases para escrita. Esta ferramenta é especificamente sobre tamanho em bytes versus contagem de caracteres, que importa para limites técnicos em vez de requisitos de contagem de palavras.
Meu texto é enviado para algum lugar?
Não. A contagem acontece localmente no seu navegador usando o codificador de texto embutido do JavaScript; nada é enviado a um servidor.
Quantos bytes ocupam as letras acentuadas do português, como ç, ã e é?
Em UTF-8, letras com acento ou cedilha do português — como á, é, ã, õ e ç — ocupam 2 bytes cada, contra 1 byte de uma letra sem acento. Isso significa que um texto em português cheio de acentuação pode facilmente ocupar 20 a 30% mais bytes do que a mesma quantidade de caracteres em inglês.
O emoji 🇧🇷 (bandeira do Brasil) conta como 1 caractere?
Visualmente sim, mas tecnicamente uma bandeira como 🇧🇷 é formada por dois pontos de código Unicode combinados (letras regionais especiais), então pode aparecer como 2 caracteres na contagem, mesmo sendo exibida como um único emoji de bandeira na tela — vale ficar de olho nesse detalhe em campos com limite apertado.
Isso calcula bytes em codificações antigas, tipo ISO-8859-1 (Latin-1)?
Não, a ferramenta calcula apenas bytes em UTF-8 e UTF-16. Codificações mais antigas usadas em alguns sistemas legados, como ISO-8859-1, têm regras de bytes por caractere diferentes (geralmente 1 byte fixo, mas sem suporte a todos os caracteres acentuados). Se você precisa de compatibilidade com um sistema legado assim, é preciso um cálculo específico para essa codificação.
Quebras de linha e espaços também entram na contagem de bytes?
Sim. Um espaço comum ou quebra de linha (LF) conta como 1 byte em UTF-8. Ao colar um texto longo, espaços e quebras de linha acumulados podem passar despercebidos visualmente, mas ainda contribuem para o total de bytes — vale considerar isso quando estiver perto do limite.