O limite de caracteres de uma única mensagem SMS é de 160 caracteres na codificação GSM-7 ou de 70 caracteres em Unicode (UCS-2). Mensagens mais longas são divididas em segmentos de 153 caracteres GSM-7 ou 67 Unicode, e cada segmento é cobrado como um SMS. Um único caractere fora do alfabeto GSM-7, como um emoji ou aspas curvas, passa a mensagem inteira para Unicode.
Por que os limites são 160 e 70
A carga útil de um SMS é de 140 bytes (1.120 bits). A codificação define quantos caracteres cabem:
| Codificação | Bits por caractere | SMS único | Por segmento em um SMS longo |
|---|---|---|---|
| GSM-7 (alfabeto padrão) | 7 | 160 | 153 |
| Dados de 8 bits | 8 | 140 bytes | 134 bytes |
| UCS-2 (Unicode) | 16 | 70 | 67 |
Em uma mensagem longa, cada segmento leva um cabeçalho de 6 bytes (UDH) que diz ao celular como juntar as partes, e por isso os limites por segmento são menores. Como isso funciona está em SMS longo (concatenado) explicado.
O que está no alfabeto GSM-7
O GSM-7 cobre as letras latinas básicas, os dígitos, a pontuação comum e algumas letras acentuadas usadas em idiomas da Europa Ocidental, como é, è, ü, ñ e à. Ele não inclui muitas outras letras acentuadas (por exemplo á, í, ó, ú, ê ou õ), nem cirílico, árabe, chinês ou qualquer emoji. Algumas letras gregas maiúsculas estão incluídas, herança do padrão original.
Alguns caracteres pertencem à tabela de extensão e ocupam o espaço de dois caracteres cada um, porque são enviados com um código de escape:
- ^ { } \ [ ] ~ | e o símbolo do euro
Uma mensagem com cinco símbolos do euro tem, portanto, espaço para 155 caracteres, não 160.
O que ativa o Unicode
Se um único caractere não estiver no GSM-7, a mensagem inteira é enviada em UCS-2 e o limite cai de 160 para 70. Gatilhos acidentais comuns:
- Aspas e apóstrofos curvos copiados de editores de texto (use os retos ' e ")
- Travessões longos e o caractere de reticências (use um hífen e três pontos)
- Espaços não separáveis e caracteres de largura zero vindos de formulários web
- Emojis, que em UCS-2 muitas vezes ocupam duas posições de caractere cada
- Letras fora do alfabeto, como o ł polonês ou o ş turco
Uma mensagem em inglês de 150 caracteres com um apóstrofo curvo vira três segmentos em vez de um. Em campanhas grandes, isso triplica o custo. A cobrança por segmento é explicada em como funciona o preço do SMS A2P.
Idiomas que precisam de Unicode
Árabe, russo, hindi, chinês, tailandês e muitas outras escritas sempre precisam de UCS-2, então 70 e 67 são os limites reais nesses casos. Algumas redes suportam tabelas de deslocamento de idioma nacional (definidas para turco, espanhol, português e vários idiomas da Índia) que mantêm a codificação de 7 bits com outro conjunto de caracteres, mas o suporte depende da rota e dos aparelhos, então não conte com isso sem testar.
Como definir a codificação no SMPP e no HTTP
- SMPP: o campo data_coding indica como a mensagem está codificada. 0 significa o alfabeto padrão do SMSC (muitas vezes GSM-7, mas algumas plataformas o tratam como Latin-1), 8 significa UCS-2. Pergunte ao seu fornecedor qual padrão ele usa, porque uma incompatibilidade embaralha os caracteres. Veja SMPP vs HTTP API.
- HTTP APIs: normalmente você envia texto em UTF-8 e a plataforma escolhe a codificação. Verifique como ela conta os segmentos antes do lançamento.
Rejeições como data coding inválido ou tamanho de mensagem inválido estão listadas em códigos de erro SMPP comuns.
Dicas práticas
- Passe o texto de saída por um sanitizador que substitua aspas curvas, travessões e caracteres invisíveis.
- Conte os segmentos no seu sistema antes de enviar e registre-os, para poder conferir as faturas.
- Mantenha OTP e alertas em um único segmento GSM-7. Veja boas práticas para SMS de OTP.
- Teste caracteres especiais em aparelhos reais em cada país antes de uma campanha.
O VoIPMatcher obtém rotas SMS A2P que suportam tráfego GSM-7 e Unicode. Solicite uma rota SMS e informe os idiomas em que você envia.
Contador de caracteres SMS grátis
- Codificação
- GSM-7
- Caracteres
- 0
- SMS cobrados
- 0
- Caracteres restantes neste SMS
- 160
Perguntas frequentes
Qual é o limite de caracteres de um SMS em Unicode?
Um único SMS em Unicode (UCS-2) comporta 70 caracteres. Quando a mensagem é mais longa, ela é dividida em segmentos de 67 caracteres cada, porque cada segmento leva um cabeçalho. Árabe, cirílico, chinês, hindi e muitas outras escritas sempre usam Unicode, e um único emoji ou aspas curvas também fazem uma mensagem em inglês passar para Unicode.
Os emojis contam como dois caracteres no SMS?
Muitos sim. Um emoji força a mensagem inteira para Unicode, o que reduz o limite de 160 para 70 caracteres, e a maioria dos emojis ocupa duas posições de caractere UCS-2. Uma mensagem curta com um emoji pode, portanto, virar dois ou mais segmentos. Deixe os emojis fora das mensagens de OTP e de alerta para mantê-las em um único segmento.
Os espaços contam no limite de caracteres do SMS?
Sim. Espaços, quebras de linha e pontuação contam como caracteres, e no GSM-7 cada um ocupa uma posição. Caracteres invisíveis copiados de formulários web, como espaços não separáveis ou de largura zero, não fazem parte do GSM-7 e passam a mensagem para Unicode, então limpe o texto antes de enviar.
Como contar os caracteres de um SMS antes de enviar?
Confira cada caractere com o alfabeto GSM-7: conte os caracteres básicos como um e os caracteres de extensão, como o símbolo do euro ou os colchetes, como dois. Se algum caractere estiver fora do GSM-7, conte a mensagem em Unicode. Depois divida por 153 ou 67 para obter os segmentos. Muitas plataformas fazem essa contagem por você.
Precisa de uma rota?
Envie o destino, o tipo de rota e a tarifa alvo. Respondemos com o que podemos entregar.