Contar caracteres: SMS, X, títulos do YouTube e emojis
“Quantos caracteres tem isso?” tem mais de uma resposta, porque cada sistema conta uma coisa diferente: o que você vê, os pontos de código por trás ou os bytes necessários para enviar. Uma mão acenando 👋 é um caractere na tela e dois para o JavaScript; um SMS com uma única letra acentuada aceita 70 caracteres em vez de 160. Este guia explica as regras de onde saem essas contas.
O que é um “caractere”
O que você vê como um caractere, um grafema, pode ser vários pontos de código Unicode, e cada ponto de código, uma ou duas unidades UTF-16. A propriedade length do JavaScript conta unidades, por isso 👋 tem tamanho 2. O emoji de família 👨👩👧 é um grafema formado por cinco pontos de código (homem, junção, mulher, junção, menina) e oito unidades. Até “café” pode ter quatro ou cinco pontos de código, com o acento guardado à parte; a maioria dos sistemas normaliza para quatro.
Um bom contador conta grafemas, o que quem lê vê. Separar o texto em pontos de código ou usar Intl.Segmenter, como explica o MDN, chega lá; só o length, não.
SMS: 160, 70, 153 e 67
Um SMS leva no máximo 140 bytes de texto. Com o alfabeto GSM, de 7 bits por caractere, são 160 caracteres; assim que um caractere fica de fora, a mensagem inteira passa para UCS-2, de 2 bytes por caractere, e cabem 70. Alguns caracteres GSM ocupam dois lugares porque precisam de um escape: € [ ] { } ^ ~ \ |.
Textos maiores são enviados em partes, e cada parte gasta 6 bytes num cabeçalho que diz ao celular como juntá-las, o que deixa 153 caracteres GSM ou 67 caracteres UCS-2 por parte.
| Mensagem | Cabe num SMS | Por parte, se dividida |
|---|---|---|
| Só caracteres GSM | 160 | 153 |
| Pelo menos um caractere diferente (um emoji, ó, ã, ê) | 70 | 67 |
Assim, 161 caracteres GSM precisam de 2 partes e 307 precisam de 3; com um emoji, 71 caracteres já precisam de 2. Os acentos do português são a armadilha comum: à, è, é, ì, ò e ù estão no alfabeto GSM, mas á, ó, ú, â, ê, ô, ã, õ e ç não, então um simples “não” faz a mensagem passar para 70.
Limites no X, no YouTube e no Google
| Onde | Limite | Como conta |
|---|---|---|
| Post no X | 280 | Alfabeto latino, grego, cirílico, árabe e a maioria dos outros 1; chinês, japonês e coreano 2; cada emoji 2, até uma família; cada link 23 |
| Título de vídeo do YouTube | 100 | Caracteres |
| Descrição do YouTube | 5.000 | Caracteres |
| Meta description para o Google | Sem limite | O Google corta o trecho para caber na tela e muitas vezes escreve o próprio a partir da página |
No X, um post em alfabeto latino pode usar os 280 caracteres, mas um em japonês só 140, e um link sempre custa 23, por maior que seja.
Por que dois contadores dão números diferentes
- Um conta grafemas e o outro unidades UTF-16: cada emoji e algumas letras raras fazem diferença.
- Espaços e quebras de linha: algumas ferramentas não contam, e uma quebra de linha do Windows são dois caracteres.
- Normalização: um acento guardado como marca separada soma um ponto de código até o texto ser normalizado.
- Regras de cada plataforma: o X pondera caracteres e links, o SMS conta bytes, um campo de título conta caracteres.
Perguntas frequentes
Por que meu SMS caiu para 70 caracteres?
Porque tem um caractere que não está no alfabeto GSM: um emoji, aspas curvas ou um acento como o de ã. A mensagem inteira é enviada então em UCS-2, onde cabem 70 caracteres, ou 67 por parte.
Por que o € conta como dois num SMS?
Ele está na tabela de extensão GSM, acessada com um caractere de escape, então ocupa dois dos 160 lugares. O mesmo vale para [ ] { } ^ ~ \ e |.
Espaços contam?
Num SMS, num post no X e num título do YouTube, sim: um espaço é um caractere como outro qualquer. O contador de caracteres mostra a contagem com e sem eles.
Qual deve ser o tamanho de uma meta description?
O Google não fixa limite, corta o trecho para caber na tela e muitas vezes escreve o próprio a partir da página. Coloque as palavras importantes primeiro, para que sobrevivam ao corte.
Por que o JavaScript diz 2 para um único emoji?
Porque o length conta unidades UTF-16, e a maioria dos emojis ocupa duas. Conte grafemas, por exemplo com Intl.Segmenter, e 👋 dá 1.
Referências
- 3GPP TS 23.040 — Technical realization of the Short Message Service (SMS)
- 3GPP TS 23.038 — Alphabets and language-specific information
- X Developer Platform — Counting characters
- YouTube Help — Edit video settings
- Google Search Central — Control your snippets in search results
- MDN Web Docs — String: length
Guias relacionados
- Endereços IP explicados: IPv4, IPv6 e as faixas reservadas
- Sub-redes e CIDR explicados: prefixos, máscaras e hosts utilizáveis
- Registros DNS explicados: A, AAAA, CNAME, MX, TXT e NS
- Um site está fora do ar ou é só com você? Como verificar, passo a passo
- Códigos de status HTTP e erros da Cloudflare: o que significam 403, 404, 429, 500, 503 e 521
- Timestamps Unix e fusos horários explicados
- Contagem de datas: dias entre datas, anos bissextos e semanas ISO
- Fusos horários e horário de verão: reuniões entre cidades
- Formatos de imagem explicados: JPEG, PNG, WebP, AVIF e HEIC
- O tamanho de uma imagem explicado: pixels, DPI, peso e qualidade
- Fotos de celular explicadas: HEIC, metadados EXIF e sua privacidade
- Força de senhas explicada: comprimento, entropia e frases-senha
- Funções de hash explicadas: SHA-256, checksums e hash de senhas
- JSON Web Tokens explicados: claims, assinaturas e validação segura
- Chaves de API explicadas: tamanho, formato, armazenamento e rotação
- UUIDs explicados: v4, v7 e como escolher a versão certa
- QR codes explicados: capacidade, correção de erros e tamanho de impressão
- Porcentagens e IVA explicados: somar, tirar e acumular
- Erros comuns em JSON e como corrigi-los
- Arquivos CSV explicados: separadores, aspas, codificação e Excel
- Codificações de texto explicadas: UTF-8, Base64 e codificação de URL
- Expressões regulares: classes, quantificadores e grupos
- MB ou MiB, Mbps ou MB/s: tamanho de arquivos e velocidade
- Expressões cron explicadas: campos, passos e fusos horários
- Parâmetros UTM explicados: marcar links para a análise de tráfego
- Ponto de equilíbrio, margem e ROAS: os números de um pequeno negócio
- Preço de freelancer explicado: valor da hora, diária e horas faturáveis
- RPM e CPM do YouTube explicados: quanto um criador ganha de verdade
- Contraste de cores explicado: razões WCAG, texto legível e formatos de cor
- Edição de PDFs no navegador: o que se mantém ao juntar, dividir e converter