Límite de caracteres SMS: por qué las tildes lo bajan a 70

Un SMS admite 160 caracteres solo si todos pertenecen al alfabeto GSM-7. Un único carácter fuera de él –una á, í, ó o ú con tilde, un emoji o unas comillas tipográficas– pasa todo el mensaje a la codificación UCS-2, en la que caben 70 caracteres, y los mensajes largos se dividen cada 67 caracteres en lugar de cada 153. Los proveedores cobran por segmento, así que una sola tilde puede duplicar el coste de un envío.
¿Por qué un SMS tiene 160 caracteres, o solo 70?
Porque un segmento SMS tiene una carga fija de 140 bytes (1.120 bits) y la codificación decide cuántos caracteres caben. GSM-7 usa 7 bits por carácter, así que 1.120 ÷ 7 = 160 caracteres; UCS-2 usa 16 bits por carácter, así que 1.120 ÷ 16 = 70.
La documentación de AWS End User Messaging SMS lo dice claramente: un mensaje con solo caracteres del juego GSM 03.38 puede tener hasta 160 caracteres, y uno con cualquier carácter fuera de él, hasta 70. El cambio afecta al mensaje entero: 159 letras normales y una «ó» se codifican completas en UCS-2.
El alfabeto SMS de 7 bits por defecto del estándar GSM. Incluye A–Z, a–z, cifras, la puntuación habitual, algunas letras de Europa occidental (como ñ, Ñ, é, É, ü, à, è, ò) y varias mayúsculas griegas.
Codificación fija de Unicode de 16 bits que se usa cuando el mensaje contiene algún carácter fuera de GSM-7. Representa casi cualquier escritura, pero en un segmento caben menos de la mitad de caracteres.
¿Por qué los SMS largos se dividen cada 153 y 67 caracteres?
Cuando un mensaje no cabe en un segmento, cada parte lleva una cabecera UDH (User Data Header) que indica al móvil cómo unirlas, y esa cabecera resta espacio al texto. En GSM-7 cuesta 7 caracteres y quedan 153 por segmento; en UCS-2 cuesta 3 y quedan 67.
Twilio da las mismas cifras: 160 caracteres para un segmento GSM-7 suelto, 153 por segmento en mensajes de varias partes, 70 para un segmento UCS-2 suelto y 67 por segmento a partir de ahí.
Por eso un SMS de 161 caracteres no es «un SMS y un carácter», sino dos segmentos de hasta 153. Dos segmentos admiten 306 caracteres, no 320.
| Segmentos facturados | Longitud máx. GSM-7 (caracteres) | Longitud máx. UCS-2 (caracteres) |
|---|---|---|
| 1 | 160 | 70 |
| 2 | 306 | 134 |
| 3 | 459 | 201 |
| 4 | 612 | 268 |
| 5 | 765 | 335 |
| 10 | 1.530 | 670 |
Calculado con 160/153 y 70/67 caracteres por segmento. Datos de noviembre de 2026.
Los proveedores también limitan la longitud total: AWS acepta 1.530 caracteres GSM o 630 no GSM, Twilio indica 1.600 y 700 y recomienda no pasar de 320 caracteres, y SMSAPI admite hasta 1.530 (670 con caracteres especiales) en un máximo de 10 partes.
¿Qué caracteres pasan un SMS a Unicode?
Cualquier carácter que no esté en la tabla GSM 03.38. En español los culpables habituales son las vocales con tilde aguda (salvo la é), la puntuación tipográfica y los emojis.
| Idioma | Letras que siguen en GSM-7 | Letras que fuerzan UCS-2 |
|---|---|---|
| Español | ~ ñ Ñ é É ü Ü ¿ ¡ | ✗ á í ó ú Á Í Ó Ú |
| Alemán | ✓ ä ö ü ß Ä Ö Ü | ninguna de las letras estándar |
| Polaco | ninguna de las letras propias del polaco | ✗ ą ć ę ł ń ó ś ź ż y sus mayúsculas |
| Inglés | ✓ todas las letras | comillas tipográficas, rayas, puntos suspensivos |
Según la tabla de caracteres GSM 03.38 publicada por AWS. Datos de noviembre de 2026.
Los caracteres que causan más sorpresas suelen colarse sin que nadie los escriba a propósito:
- Comillas y apóstrofos tipográficos (« » “ ” ’): Word, Google Docs y macOS los insertan automáticamente. AWS muestra un mensaje de 130 caracteres que necesita dos partes solo por un ’.
- Rayas y puntos suspensivos (– — …): el guion normal (-) está en GSM-7; la raya y los puntos suspensivos como un solo carácter, no. «No te lo pierdas…» ya es UCS-2.
- Caracteres invisibles: un espacio de no separación copiado de una web parece un espacio normal, pero fuerza UCS-2.
- Emojis: ninguno está en GSM-7. Según Twilio, un emoji ocupa 2 de los 70 caracteres de un segmento UCS-2, y los emojis con modificadores, todavía más.
⚠️ Ojo: la personalización cambia la codificación para cada destinatario. «Hola [[fname]]» sigue en GSM-7 para Carmen y pasa a UCS-2 para Ramón o Inés. La misma plantilla puede costar un segmento para un contacto y dos para otro.
¿Qué caracteres GSM-7 cuentan doble?
Nueve caracteres imprimibles están en la tabla de extensión de GSM-7 y se envían como un carácter de escape más el propio carácter, así que ocupan dos de los 160 (o 153) huecos: ^ { } \ [ ] ~ | €.
No pasan el mensaje a UCS-2, pero acortan el límite. «Precio: 20€ [solo hoy]» tiene 22 caracteres en pantalla y 25 en GSM-7. Si un mensaje roza el límite, escribe «EUR» en lugar de «€» o usa paréntesis en lugar de corchetes. Si alguna vez un contador y la tabla no coinciden, fíate del número de segmentos que devuelve tu proveedor tras el envío: es lo que te cobra.
¿Cuánto cuesta un segmento de más?
Cada segmento se cobra como un mensaje. Twilio indica que factura por segmento enviado y AWS cobra por número de partes. Si un mensaje pasa de uno a dos segmentos, el coste del envío se duplica.
| Proveedor y destino | Precio por segmento | 1.000 × 1 segmento | 1.000 × 2 segmentos | 1.000 × 3 segmentos |
|---|---|---|---|---|
| Twilio → España | 0,0875 USD | 87,50 USD | 175,00 USD | 262,50 USD |
| Twilio → Alemania | 0,112 USD | 112,00 USD | 224,00 USD | 336,00 USD |
| Twilio → Polonia | 0,0457 USD | 45,70 USD | 91,40 USD | 137,10 USD |
| SMSAPI → Polonia (prepago, tramo más bajo) | 0,17 PLN netos | 170 PLN | 340 PLN | 510 PLN |
Precios de lista de SMS salientes sin descuentos por volumen, tasas de operador ni IVA; Twilio «current as of October 2026», SMSAPI consultado en noviembre de 2026. Datos de noviembre de 2026.
Un ejemplo: este aviso de 106 caracteres lleva «está» y «Síguelo», así que va en UCS-2 y ocupa dos segmentos; sin esas dos tildes cabría en uno.
Hola Ana, tu pedido 1042 ya está en camino. Síguelo: https://ex.co/t/1042 Responde STOP para darte de baja
→ UCS-2, 106 caracteres, 2 segmentos
Con 1.000 destinatarios en España a través de Twilio, son 87,50 USD más por un mismo texto.
¿Conviene quitar las tildes de los SMS?
Depende del mensaje y de tu marca. Quitar las tildes mantiene el mensaje en GSM-7 y puede reducir el coste a la mitad, pero en español la tilde distingue palabras y su ausencia puede parecer descuidada: es un compromiso, no una regla.
✅ Ventajas
- Hasta 160 caracteres por segmento en lugar de 70, y 153 en lugar de 67 en mensajes largos.
- Coste previsible: los nombres con tilde no empujan a algunos destinatarios a un segmento extra.
- La ñ, la é y los signos ¿ ¡ se mantienen, porque están en GSM-7.
❌ A tener en cuenta
- Algunas palabras cambian de significado: «papá» pasa a ser «papa», «está» a «esta».
- Una marca cuidadosa con la ortografía puede parecer descuidada en un SMS sin tildes.
- Los nombres de personas (Ramón, Inés) quedan mal escritos.
Los proveedores ayudan: Twilio ofrece Smart Encoding, que sustituye algunos caracteres no GSM por equivalentes GSM y endereza las comillas tipográficas. Un término medio razonable: conserva las tildes en mensajes cortos que caben en 70 caracteres de todos modos y quítalas solo cuando el texto, si no, necesitaría otro segmento.
¿Cuentan el enlace, el texto de baja y el remitente?
El enlace y el texto de baja cuentan, porque forman parte del cuerpo del mensaje; el remitente alfanumérico no, porque viaja en el campo de dirección del SMS y no en el texto.
Una URL completa con parámetros UTM ocupa fácilmente 80–120 caracteres. Usa una ruta corta en tu propio dominio (por ejemplo, https://ex.co/t/1042). «Responde STOP para darte de baja» son 32 caracteres: tenlos en cuenta en cada plantilla desde el principio. Las reglas de consentimiento para SMS de marketing se explican en la guía de automatización de email y SMS en tu propio servidor (en inglés). Esto no es asesoramiento jurídico.
Las variables como el nombre, el número de pedido o el código de descuento hacen variable la longitud final. Prueba las plantillas con los valores reales más largos.
¿Cómo compruebas los segmentos antes de enviar?
Pasa el texto final, con las variables rellenas, por un contador que conozca la tabla GSM 03.38 y confirma el resultado con tu proveedor en un envío de prueba.
- Busca caracteres no GSM
Usa un contador que liste los caracteres que fuerzan UCS-2, no solo el total. La función en Python de abajo lo hace sin conexión.
- Prueba con los valores más largos
Rellena las variables con los nombres y códigos más largos de tus datos, y con nombres con tilde.
- Envía un SMS de prueba a tu móvil
Comprueba cómo se ve, si las partes llegan unidas y si el enlace funciona.
- Lee los segmentos en el proveedor
Twilio devuelve
num_segmentsen el recurso del mensaje; SMSAPI,partsy el coste en puntos.
La función sigue la tabla GSM 03.38 de la documentación de AWS, cuenta doble los caracteres de extensión y los emojis como dos unidades UCS-2. Es una estimación: las pasarelas pueden no partir un carácter de escape o un emoji entre dos segmentos, lo que cerca del límite a veces añade uno.
import math
GSM7_BASIC = set(
"@£$¥èéùìòÇ\nØø\rÅåΔ_ΦΓΛΩΠΨΣΘΞÆæßÉ !\"#¤%&'()*+,-./0123456789:;<=>?"
"¡ABCDEFGHIJKLMNOPQRSTUVWXYZÄÖÑܧ¿abcdefghijklmnopqrstuvwxyzäöñüà"
)
GSM7_EXTENDED = set("\f^{}\\[]~|€") # each costs 2 septets (ESC + char)
def sms_segments(text: str) -> dict:
non_gsm = sorted({c for c in text if c not in GSM7_BASIC | GSM7_EXTENDED})
if not non_gsm:
units = sum(2 if c in GSM7_EXTENDED else 1 for c in text)
single, per_part, encoding = 160, 153, "GSM-7"
else:
units = len(text.encode("utf-16-le")) // 2 # emoji = 2 units
single, per_part, encoding = 70, 67, "UCS-2"
parts = 1 if units <= single else math.ceil(units / per_part)
return {"encoding": encoding, "units": units, "parts": parts,
"non_gsm": non_gsm}
if __name__ == "__main__":
import sys
print(sms_segments(sys.stdin.read().rstrip("\n")))
Guárdala como sms_segments.py y pásale un mensaje:
echo "No te lo pierdas…" | python3 sms_segments.py
# {'encoding': 'UCS-2', 'units': 17, 'parts': 1, 'non_gsm': ['…']}
📋 Lista de comprobación
- Sin comillas tipográficas, rayas, puntos suspensivos ni espacios de no separación
- Decidido qué hacer con á, í, ó, ú en este tipo de mensaje
- Caracteres de extensión (€ [ ] { } \ ~ ^ |) contados doble
- Texto de baja y enlace corto incluidos en la longitud
- Plantilla probada con los valores de variables más largos
- Segmentos confirmados con el proveedor en un envío de prueba
Segmentos de los SMS enviados desde NetSendo
NetSendo envía SMS a través de Twilio, Vonage, MessageBird, Plivo o SMSAPI; las reglas de segmentación son las del proveedor, no las de NetSendo. Hay dos detalles importantes.
Primero, el contador del editor de SMS es una estimación rápida. Marca el mensaje como Unicode en cuanto aparece cualquier carácter no ASCII y divide la longitud entre 160 o 70. Por eso un texto con «ñ» o «é» aparece como Unicode aunque GSM-7 incluya esas letras, y un mensaje justo por encima de un límite puede contarse con un segmento de menos, porque no aplica la regla 153/67. Úsalo como aviso y comprueba los casos dudosos con la función de arriba.
Segundo, la cifra real llega después del envío: el webhook sms.sent incluye parts y credits para cada mensaje, tomados de la respuesta del proveedor. Puedes recogerlos en n8n con el nodo de NetSendo o con cualquier endpoint según la documentación de webhooks, verificar la firma HMAC-SHA256 y recibir un aviso si una campaña usa más segmentos de lo previsto. También puedes enviar SMS mediante la API REST.
ℹ️ Nota: el envío de SMS no funcionaba en versiones antiguas de NetSendo; la 2.2.0 corrigió la tarea de envío y la 2.7.2, las campañas enviadas desde el panel y el SMS de prueba. Actualiza a la versión actual antes de depender de los SMS.
🎯 Consejos de experto
Los procesadores de texto insertan comillas tipográficas y rayas automáticamente. Escribe en el editor de SMS o en un editor de código.
Deja sitio para el texto de baja y para valores de variables más largos.
Con á, í, ó, ú escribes para 70 caracteres; sin ellas, para 160. Las dos opciones valen si eres coherente.
Si la media por mensaje sube, casi siempre se ha colado un carácter no GSM en la plantilla.
Preguntas frecuentes
¿Por qué mi SMS solo admite 70 caracteres?
El texto contiene al menos un carácter fuera del alfabeto GSM-7, como á, í, ó, ú, un emoji o unas comillas tipográficas. Todo el mensaje se codifica entonces en UCS-2 y en un segmento caben 70 caracteres.
¿La ñ reduce el límite de un SMS?
No. La ñ y la Ñ, igual que é, É, ü, ¿ y ¡, están en GSM-7, así que no reducen el límite de 160 caracteres. Las vocales á, í, ó y ú sí lo hacen.
¿Por qué los SMS largos se dividen en partes de 153 caracteres?
Cada parte de un SMS concatenado lleva una cabecera para unirlas que ocupa 7 caracteres GSM-7. Quedan 153 por parte, o 67 si el mensaje va en UCS-2.
¿Un emoji cuenta como uno o dos caracteres en un SMS?
Un emoji pasa el mensaje a UCS-2 y, según Twilio, ocupa 2 de los 70 caracteres de un segmento; con modificadores ocupa más.
¿Se cobra por SMS o por segmento?
Por segmento. Twilio y AWS cobran cada parte de un mensaje largo, así que dos segmentos cuestan el doble.
Fuentes
- Twilio: What is the SMS character limit?
- Twilio Support: Can I send and receive emoji with Twilio?
- AWS End User Messaging SMS: SMS character limits and GSM 03.38 character set
- SMSAPI documentation (message, encoding, normalize, max_parts)
- SMSAPI price list
- Twilio SMS pricing: Poland
- Twilio SMS pricing: Germany
- Twilio SMS pricing: Spain
Envía email y SMS desde tu propio servidor
NetSendo funciona en tu infraestructura y se conecta al proveedor de SMS que ya usas.




