Contador de caracteres SMS: a armadilha do GSM-7 e do UCS-2

Atualizado em 2026 · Leitura de 5 min

Você envia uma campanha SMS de 150 caracteres. Fatura 3 SMS por destinatário em vez de 1. Seu orçamento de marketing evapora e ninguém avisou. O culpado quase sempre é o mesmo: um único caractere que não encaixa no alfabeto GSM e força uma mudança de codificação que corta o limite pela metade.

Aqui está a realidade sem rodeios.

A dura realidade do GSM 7-bit

O SMS padrão não usa UTF-8. Usa o GSM 03.38, um alfabeto de 7 bits herdado da telefonia dos anos 80. Com 7 bits por símbolo, um único SMS transporta 160 caracteres. É o número que todo mundo cita e quase ninguém entende.

O alfabeto GSM 7-bit cobre as letras latinas básicas (A–Z), os dígitos, alguma pontuação e um punhado de símbolos e acentos selecionados: @, £, $, ¥, ¡, ¿, è, é, ù, ì, ò, à, ñ, ç, ä, ö, ü, Å, æ, ß. Mas, criticamente, não inclui o á, o â, o ã, o ê, o í, o ó, o ô, o õ e o ú — todos comuns em português — nem as aspas tipográficas, nem os travessões longos, nem, claro, nenhum emoji. (Curiosamente, é, à e ç fazem parte do alfabeto básico.)

Existe ainda uma pequena tabela de extensão (acessada com um prefixo ESC) para €, ^, {, }, \, [, ~, ] e |. Esses caracteres não forçam UCS-2, mas cada um consome 2 slots (ESC + símbolo), então cada aparição encurta o seu limite de 160.

Assim que um único caractere cai fora do alfabeto básico e da tabela de extensão, o sistema SMS muda toda a codificação da mensagem para UCS-2 (UTF-16). Essa mudança não é parcial: vale para a mensagem inteira.

A armadilha do emoji (e do "ã")

O UCS-2 usa 16 bits por caractere. O limite por SMS despenca de 160 para 70 caracteres. E como a mudança vale para a mensagem inteira, não basta tirar o emoji: se o ã de "não" está lá, todo o SMS viaja em UCS-2. Para quem faz marketing em português, isso dói mais do que em outros idiomas, porque "não" é uma das palavras mais frequentes da língua.

Veja o custo real:

MensagemCaracteresCodificaçãoSMS consumidosCusto relativo
Venha hoje!11GSM-7 (160 máx)11×
Venha, não!11UCS-2 (70 máx, o ã força)11× (limite bem menor)
Promo de 140 caracteres com um emoji140UCS-22 (140 > 70)2×
O mesmo texto de 140 sem emoji nem acentos proibidos140GSM-71 (140 < 160)1×

Um emoji solitário — ou um único ã — pode dobrar o custo de um envio em massa. Numa campanha para 100.000 contatos, a diferença entre GSM-7 e UCS-2 não é um matiz técnico: é o dobro da fatura.

Concatenação: o detalhe que multiplica o gasto

Mensagens longas são divididas em segmentos. Para encaixá-las e reconstruí-las no receptor, cada segmento carrega um cabeçalho de usuário (UDH) que rouba espaço:

CodificaçãoLimite no SMS simplesLimite por segmento (concatenado)
GSM-7160153
UCS-27067

Assim, uma mensagem de 160 caracteres em GSM-7 cabe em um SMS. Mas 160 caracteres em UCS-2 exigem 3 segmentos (160 ÷ 67 = 2,39 → 3), porque cada segmento transporta só 67. Três SMS por mensagem. E se seu provedor cobra por segmento, você já está pagando o triplo.

Tabela comparativa de codificações

CodificaçãoLimite baseConsequência de excederCaracteres segurosCaracteres inseguros (forçam UCS-2)
GSM 7-bit160 (153 concatenado)Divide em segmentos de 153A–Z, 0–9, espaço, @, £, $, ¥, ¡, ¿, è, é, ù, ì, ò, à, ñ, ç, ä, ö, ü, ?, !, ., ,á, â, ã, ê, í, ó, ô, õ, ú, Á, Ã, Õ, aspas tipográficas, travessão —, emojis, outros alfabetos
UCS-2 / UTF-1670 (67 concatenado)Divide em segmentos de 67; custo 2–3×Tudo do GSM-7 + qualquer caractere UnicodeNenhum (já é o "pior caso")

Caracteres de extensão (não forçam UCS-2, mas custam o dobro): €, ^, {, }, \, [, ~, ], | são enviados em GSM-7 por meio de um prefixo ESC, então cada um consome 2 slots do seu limite de 160. O euro € está aqui, não no alfabeto básico: um texto com vários € acaba sem espaço antes do que você espera.

Como proteger seu orçamento

  1. Conte antes de enviar. Use o contador de caracteres para medir o texto exato que vai no SMS.
  2. Retire acentos para manter o GSM-7. Em português isso dói mais do que no espanhol, porque o ã aparece em palavras onipresentes: "não" → "nao", "promoção" → "promocao", "você" → "voce". É uma escolha de estilo, não de clareza: o leitor entende. Para campanhas de volume, a economia compensa.
  3. Evite emojis no corpo do SMS. Se precisar deles para branding, ponha no link de destino ou no RCS, não no SMS puro.
  4. Revise aspas e travessões. Aspas tipográficas e o travessão — (colados de editores que "autocorrigem") são uma causa frequente e invisível de mudança para UCS-2. Use sempre " retas e - hífen simples.
  5. Cuidado com os símbolos de extensão. Cada € ou ^ conta em dobro: dez euros numa mensagem tiram 10 slots a mais.
  6. Verifique com seu provedor. Alguns agregadores informam a contagem de segmentos antes do envio. Peça e confira com seus 153/67.

Meça o texto exato da sua campanha antes de enviar e evite cobrança surpresa por segmento.

Abrir contador de caracteres

A regra de ouro: uma mensagem que cabe em 160 caracteres com GSM-7 pode virar 3 SMS com um único emoji ou um único ã. Meça, substitua os caracteres inseguros e valide com o contador de caracteres antes de apertar enviar. Seu orçamento de campanha agradece.