Quatro formas de contar o mesmo texto
Computadores armazenam texto como números, e existe mais de uma forma razoável de contar esses números. Apps e jogos escolhem uma — geralmente sem avisar —, então o mesmo nome pode caber em um lugar e ser “longo demais” em outro.

| Medida | O que conta |
|---|---|
| Grafemas (caracteres que você vê) | O que um leitor percebe como um único caractere, mesmo quando é formado por várias peças. |
| Pontos de código | Cada caractere Unicode separadamente, incluindo uniões invisíveis e marcas combinantes. |
| unidades UTF-16 | A unidade de armazenamento usada no JavaScript, no Java, no Windows e em muitos apps. Caracteres acima de U+FFFF ocupam duas. |
| Bytes UTF-8 | O tamanho quando armazenado ou enviado como UTF-8, a codificação usual da web: de 1 a 4 bytes por ponto de código. |
Exemplos testados
Todos os números abaixo foram gerados por código, não digitados à mão: os grafemas com Intl.Segmenter no Node.js 22.22.2 (ICU 78.2, Unicode 17.0) e as outras contagens a partir do texto codificado, conferidas em Python. Versões diferentes de software podem às vezes discordar sobre os limites de grafemas em escritas complexas.
| Texto | O que é | Grafemas | Pontos de código | UTF-16 | Bytes UTF-8 |
|---|---|---|---|---|---|
| Luna | Letras latinas simples | 4 | 4 | 4 | 4 |
| Zoë | ë como um único caractere (U+00EB) | 3 | 3 | 3 | 4 |
| Zoë | e + trema combinante (U+0308) | 3 | 4 | 4 | 5 |
| 𝓛𝓾𝓷𝓪 | Letras cursivas em negrito (Mathematical Alphanumeric Symbols) | 4 | 4 | 8 | 16 |
| ꧁Luna꧂ | Nome em uma moldura de pontuação javanesa | 6 | 6 | 6 | 10 |
| Luna🔥 | Nome + um emoji | 5 | 5 | 6 | 8 |
| 👍🏽 | Emoji + modificador de tom de pele | 1 | 2 | 4 | 8 |
| 🇯🇵 | Bandeira (duas letras indicadoras regionais) | 1 | 2 | 4 | 8 |
| 👨👩👧 | Emoji de família (três emojis unidos por uniões de largura zero) | 1 | 5 | 8 | 18 |
| ليلى | Letras árabes | 4 | 4 | 4 | 8 |
Grafemas: o que você realmente vê
O Unicode Standard Annex #29 define os agrupamentos de grafemas estendidos — os caracteres como o usuário os percebe. Uma letra com acento combinante, um emoji com tom de pele, uma bandeira formada por duas letras indicadoras regionais e um emoji de família unido por uniões de largura zero são, cada um, um grafema.
Por dentro do emoji de família
| Ponto de código | Nome | UTF-16 | Bytes |
|---|---|---|---|
| U+1F468 | Homem | 2 | 4 |
| U+200D | Zero Width Joiner | 1 | 3 |
| U+1F469 | Mulher | 2 | 4 |
| U+200D | Zero Width Joiner | 1 | 3 |
| U+1F467 | Menina | 2 | 4 |
Pontos de código: os números do Unicode
Um ponto de código é o número de um caractere no Unicode, escrito como U+ seguido de dígitos hexadecimais. “ë” pode ser escrito como um único ponto de código (U+00EB) ou como “e” mais U+0308 COMBINING DIAERESIS. Os dois parecem idênticos — é por isso que dois nomes que parecem iguais podem ser contados de forma diferente, e por isso alguns apps normalizam o texto antes.
UTF-16: por que letras estilizadas contam em dobro
O UTF-16 armazena pontos de código até U+FFFF em uma unidade de 16 bits e tudo acima disso em duas (um par substituto). As letras em negrito, cursivas e góticas da NameFonts vêm, em sua maioria, do bloco Mathematical Alphanumeric Symbols (U+1D400–U+1D7FF), e a maioria dos emojis também fica acima de U+FFFF — então cada um ocupa duas unidades. Os nove novos emojis do Unicode 18.0 não são exceção. Em JavaScript, "𝓛".length é 2.
UTF-8: bytes no disco e na rede
O UTF-8 usa 1 byte para letras ASCII, 2 bytes para a maioria dos acentos latinos, grego, cirílico, árabe e hebraico, 3 bytes para a maioria dos outros caracteres até U+FFFF (incluindo CJK e muitos símbolos) e 4 bytes acima disso. Limites de bancos de dados e de rede costumam ser expressos em bytes.
Qual delas meu app usa?
Não listamos limites de apps ou jogos específicos: eles raramente são documentados e mudam. Você descobre qual unidade um app conta com um teste rápido:
- Digite um nome simples até o limite e anote o número.
- Troque uma letra por uma letra estilizada (por exemplo, do gerador de letra cursiva).
- Se o nome passar a contar um a mais, o app conta unidades UTF-16; se a contagem continuar igual, ele conta grafemas ou pontos de código.
- Teste “Zoë” escrito das duas formas (da tabela acima) para diferenciar grafemas de pontos de código.
Perguntas frequentes
Por que meu nome conta mais caracteres do que eu vejo?
Alguns caracteres visíveis são formados por vários pontos de código, e caracteres acima de U+FFFF usam duas unidades UTF-16. Apps que contam pontos de código ou unidades UTF-16 mostram um número maior do que o que você vê.
Um grafema é a mesma coisa que uma letra?
Nem sempre. Um grafema é o que um leitor percebe como um único caractere. Em texto latino geralmente é uma letra, mas uma sequência de emojis ou uma letra com marcas combinantes também é um grafema.
Fontes
- Unicode Standard Annex #29: Unicode Text Segmentation — agrupamentos de grafemas estendidos
- The Unicode Standard, Chapter 3 (Conformance): encoding forms — UTF-8, UTF-16 e pontos de código
- MDN: Intl.Segmenter — a API usada para contar os grafemas
Cole seu próprio nome para ver as quatro contagens, caractere por caractere.


