SMS-Zeichenlimit: 160 oder 70 Zeichen – woran liegt es?

Eine SMS fasst 160 Zeichen nur, solange jedes Zeichen zum GSM-7-Alphabet gehört. Ein einziges Zeichen außerhalb davon – ein Emoji, ein typografisches Anführungszeichen, ein Gedankenstrich oder ein polnisches ł – schaltet die ganze Nachricht auf UCS-2 um, und dann passen nur noch 70 Zeichen hinein; lange Nachrichten werden alle 67 statt alle 153 Zeichen geteilt. Die gute Nachricht für deutsche Texte: ä, ö, ü und ß sind Teil von GSM-7 und kosten dich nichts extra.
Warum hat eine SMS 160 Zeichen – oder nur 70?
Weil ein SMS-Segment eine feste Nutzlast von 140 Byte (1.120 Bit) hat und die Kodierung bestimmt, wie viele Zeichen hineinpassen. GSM-7 nutzt 7 Bit pro Zeichen, also 1.120 ÷ 7 = 160 Zeichen; UCS-2 nutzt 16 Bit pro Zeichen, also 1.120 ÷ 16 = 70 Zeichen.
Die Dokumentation von AWS End User Messaging SMS formuliert es klar: Eine Nachricht nur aus Zeichen des GSM-03.38-Zeichensatzes darf bis zu 160 Zeichen haben, eine Nachricht mit irgendeinem Zeichen außerhalb davon bis zu 70. Die Umschaltung gilt für die ganze Nachricht. 159 normale Buchstaben und ein Emoji werden komplett in UCS-2 kodiert.
Das 7-Bit-Standardalphabet für SMS aus dem GSM-Standard. Es enthält A–Z, a–z, Ziffern, gängige Satzzeichen, einige westeuropäische Sonderbuchstaben wie ä, ö, ü, ß, Ä, Ö, Ü, é, ñ, à sowie einige griechische Großbuchstaben.
Eine feste 16-Bit-Kodierung von Unicode, die verwendet wird, sobald eine Nachricht ein Zeichen außerhalb von GSM-7 enthält. Sie kann fast jede Schrift darstellen, bringt aber weniger als die Hälfte der Zeichen in ein Segment.
Warum werden lange SMS bei 153 und 67 Zeichen geteilt?
Passt eine Nachricht nicht in ein Segment, bekommt jedes Segment einen User Data Header (UDH), mit dem das Handy die Teile wieder zusammensetzt – und dieser Header geht vom Text ab. In GSM-7 kostet er 7 Zeichen, es bleiben 153 pro Segment; in UCS-2 kostet er 3 Zeichen, es bleiben 67.
Twilio nennt dieselben Werte: 160 Zeichen für ein einzelnes GSM-7-Segment, 153 pro Segment bei mehrteiligen Nachrichten, 70 für ein einzelnes UCS-2-Segment und danach 67 pro Segment.
Eine SMS mit 161 Zeichen ist also nicht „eine SMS plus ein Zeichen“, sondern zwei Segmente mit je bis zu 153 Zeichen. Zwei Segmente fassen 306 Zeichen, nicht 320.
| Abgerechnete Segmente | Max. Länge GSM-7 (Zeichen) | Max. Länge UCS-2 (Zeichen) |
|---|---|---|
| 1 | 160 | 70 |
| 2 | 306 | 134 |
| 3 | 459 | 201 |
| 4 | 612 | 268 |
| 5 | 765 | 335 |
| 10 | 1.530 | 670 |
Berechnet mit 160/153 und 70/67 Zeichen pro Segment. Stand: November 2026.
Anbieter begrenzen auch die Gesamtlänge: AWS akzeptiert 1.530 GSM-Zeichen oder 630 Nicht-GSM-Zeichen, Twilio nennt 1.600 und 700 und empfiehlt, SMS unter 320 Zeichen zu halten, SMSAPI nimmt bis zu 1.530 Zeichen (670 mit Sonderzeichen) in höchstens 10 Teilen an.
Welche Zeichen schalten eine SMS auf Unicode um?
Jedes Zeichen, das nicht in der GSM-03.38-Tabelle steht. Bei deutschen Texten sind das fast nie die Umlaute, sondern Typografie aus Textprogrammen und Emojis.
| Sprache | Buchstaben, die in GSM-7 bleiben | Buchstaben, die UCS-2 erzwingen |
|---|---|---|
| Deutsch | ✓ ä ö ü ß Ä Ö Ü | keiner der Standardbuchstaben |
| Polnisch | keiner der polnischen Sonderbuchstaben | ✗ ą ć ę ł ń ó ś ź ż und Großbuchstaben |
| Spanisch | ~ ñ Ñ é É ü Ü ¿ ¡ | ✗ á í ó ú Á Í Ó Ú |
| Französisch, Türkisch u. a. | teilweise (é, è, à, ù, ì, ò) | z. B. ê, ô, ğ, ş, ı |
Nach der GSM-03.38-Zeichentabelle in der AWS-Dokumentation. Stand: November 2026.
Die typischen Stolperfallen in deutschen Texten:
- Typografische Anführungszeichen („ “ ‚ ‘ ’): Word, Google Docs und macOS setzen sie automatisch. AWS zeigt eine 130-Zeichen-Nachricht, die nur wegen eines einzigen ’ zwei Segmente braucht.
- Gedankenstrich und Auslassungszeichen (– …): Der normale Bindestrich (-) ist in GSM-7, der Halbgeviertstrich und das Auslassungszeichen als ein Zeichen nicht.
- Unsichtbare Zeichen: Ein geschütztes Leerzeichen aus einem CMS sieht aus wie ein normales, erzwingt aber UCS-2.
- Emojis: Kein Emoji ist in GSM-7. Laut Twilio belegt ein Emoji 2 der 70 Zeichen eines UCS-2-Segments, Emojis mit Modifikatoren noch mehr.
⚠️ Achtung: Personalisierung ändert die Kodierung pro Empfänger. „Hallo [[fname]]“ bleibt für Jürgen in GSM-7, schaltet aber für Łukasz oder Zoë auf UCS-2 um. Dasselbe Template kostet dann bei einem Kontakt ein Segment, beim anderen zwei.
Welche GSM-7-Zeichen zählen doppelt?
Neun druckbare Zeichen stehen in der Erweiterungstabelle von GSM-7 und werden als Escape-Zeichen plus Zeichen übertragen, belegen also zwei der 160 (bzw. 153) Plätze: ^ { } \ [ ] ~ | €.
Sie schalten nicht auf UCS-2 um, verkürzen aber das Limit. „Preis: 20€ [nur heute]“ hat auf dem Display 22 Zeichen und in GSM-7 25. Liegt eine Nachricht knapp an der Grenze, schreib „EUR“ statt „€“ oder runde statt eckige Klammern. Weichen Zähler und Tabelle einmal voneinander ab, gilt die Segmentzahl, die dein Anbieter nach dem Versand meldet – danach wird abgerechnet.
Was kostet ein zusätzliches Segment?
Jedes Segment wird wie eine eigene SMS berechnet. Twilio rechnet laut eigener Aussage pro gesendetem Segment ab, AWS nach Anzahl der Teile. Wächst eine Nachricht von einem auf zwei Segmente, verdoppeln sich die Kosten des Versands.
| Anbieter und Zielland | Preis pro Segment | 1.000 × 1 Segment | 1.000 × 2 Segmente | 1.000 × 3 Segmente |
|---|---|---|---|---|
| Twilio → Deutschland | 0,112 USD | 112,00 USD | 224,00 USD | 336,00 USD |
| Twilio → Spanien | 0,0875 USD | 87,50 USD | 175,00 USD | 262,50 USD |
| Twilio → Polen | 0,0457 USD | 45,70 USD | 91,40 USD | 137,10 USD |
| SMSAPI → Polen (Prepaid, niedrigste Stufe) | 0,17 PLN netto | 170 PLN | 340 PLN | 510 PLN |
Listenpreise für ausgehende SMS ohne Mengenrabatte, Carrier-Gebühren und MwSt.; Twilio „current as of October 2026“, SMSAPI geprüft im November 2026. Stand: November 2026.
Ein Beispiel mit Umlaut, das trotzdem in ein GSM-7-Segment passt (109 Zeichen):
Hallo Jürgen, deine Bestellung 1042 ist unterwegs. Sendungsverfolgung: https://ex.co/t/1042 STOP zum Abmelden
→ GSM-7, 109 Zeichen, 1 Segment
Ersetzt dein Textprogramm darin nur den Bindestrich durch einen Gedankenstrich oder hängt ein 🚚 an, ist dieselbe Nachricht UCS-2 und braucht zwei Segmente – bei 1.000 Empfängern in Deutschland über Twilio 112 USD mehr.
Sonderzeichen ersetzen – ja oder nein?
Für deutsche Texte meist unnötig: Umlaute und ß sind in GSM-7, „ae“ statt „ä“ spart also nichts und wirkt nur altmodisch. Ersetzen solltest du typografische Zeichen – Anführungszeichen, Gedankenstriche, Auslassungszeichen – durch ihre einfachen Gegenstücke.
✅ Vorteile
- Bis zu 160 statt 70 Zeichen pro Segment, 153 statt 67 bei mehrteiligen SMS.
- Planbare Kosten: Namen mit Sonderbuchstaben verschieben einzelne Empfänger nicht ins nächste Segment.
❌ Zu bedenken
- Namen aus anderen Sprachen (Łukasz, Zoë) werden falsch geschrieben.
- Für Polnisch oder Spanisch verändert Transliteration den Sinn mancher Wörter (spanisch „papá“ wird zu „papa“).
Anbieter helfen dabei: Twilio bietet Smart Encoding, das manche Nicht-GSM-Zeichen durch GSM-Gegenstücke ersetzt und typografische Anführungszeichen begradigt; SMSAPI hat den Parameter normalize für polnische Sonderzeichen.
Zählen Links, Abmeldetext und Absendername mit?
Links und Abmeldetext zählen mit, weil sie Teil des Nachrichtentexts sind; der alphanumerische Absendername nicht, denn er steht im Adressfeld der SMS und nicht im Text.
Ein vollständiger Link mit UTM-Parametern belegt schnell 80–120 Zeichen. Nutze einen kurzen Pfad auf deiner eigenen Domain (z. B. https://ex.co/t/1042). „Antworte STOP zur Abmeldung“ sind 27 Zeichen – plane sie in jedem Template von Anfang an ein. Welche Einwilligungs- und Abmelderegeln für SMS-Marketing gelten, beschreibt der Leitfaden zu E-Mail- und SMS-Automatisierung auf dem eigenen Server (auf Englisch). Das ist keine Rechtsberatung.
Platzhalter wie Vorname, Bestellnummer oder Gutscheincode machen die Länge variabel. Teste Templates mit den längsten realen Werten.
Wie prüfst du die Segmentzahl vor dem Versand?
Lass den fertigen Text mit ausgefüllten Platzhaltern durch einen Zähler laufen, der die GSM-03.38-Tabelle kennt, und bestätige das Ergebnis mit einem Testversand beim Anbieter.
- Nicht-GSM-Zeichen finden
Nutze einen Zähler, der die Zeichen auflistet, die UCS-2 erzwingen. Die Python-Funktion unten macht das offline.
- Mit den längsten Werten testen
Fülle Platzhalter mit den längsten Namen und Codes aus deinen Daten.
- Test-SMS an dein Handy
Prüfe Darstellung, Zusammensetzung der Teile und den Link.
- Segmentzahl beim Anbieter ablesen
Twilio liefert
num_segmentsim Message-Objekt, SMSAPIpartsund die Kosten in Punkten.
Die Funktion folgt der GSM-03.38-Tabelle aus der AWS-Dokumentation, zählt Erweiterungszeichen doppelt und Emojis als zwei UCS-2-Einheiten. Sie ist eine Schätzung: Gateways teilen ein Escape-Zeichen oder Emoji eventuell nicht auf zwei Segmente auf, was an der Grenze gelegentlich ein Segment mehr ergibt.
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")))
Speichere sie als sms_segments.py und gib eine Nachricht ein:
echo "Preis: 20€ [nur heute]" | python3 sms_segments.py
# {'encoding': 'GSM-7', 'units': 25, 'parts': 1, 'non_gsm': []}
📋 Checkliste
- Keine typografischen Anführungszeichen, Gedankenstriche, Auslassungszeichen oder geschützten Leerzeichen
- Erweiterungszeichen (€ [ ] { } \ ~ ^ |) doppelt gezählt
- Abmeldetext und kurzer Link in der Länge enthalten
- Template mit den längsten Platzhalterwerten getestet
- Segmentzahl per Testversand beim Anbieter bestätigt
Segmentzahl beim SMS-Versand mit NetSendo
NetSendo verschickt SMS über Twilio, Vonage, MessageBird, Plivo oder SMSAPI; die Segmentregeln sind die des Anbieters, nicht die von NetSendo. Zwei Details sind wichtig.
Erstens ist der Zähler im SMS-Editor eine schnelle Schätzung. Er markiert eine Nachricht als Unicode, sobald irgendein Nicht-ASCII-Zeichen vorkommt, und teilt die Länge durch 160 oder 70. Ein deutscher Text mit „ü“ wird dort also als Unicode angezeigt, obwohl GSM-7 das „ü“ enthält, und Nachrichten knapp über einer Segmentgrenze können um ein Segment zu niedrig gezählt werden, weil die 153/67-Regel fehlt. Nutze ihn als Warnlampe und prüfe Grenzfälle mit der Funktion oben.
Zweitens bekommst du die echte Zahl nach dem Versand: Der Webhook sms.sent enthält pro Nachricht parts und credits aus der Antwort des Anbieters. Du kannst sie in n8n mit dem NetSendo-Node oder mit einem beliebigen Endpunkt laut Webhook-Dokumentation auswerten, die HMAC-SHA256-Signatur prüfen und dich warnen lassen, wenn eine Kampagne mehr Segmente braucht als geplant. SMS lassen sich auch über die REST-API senden.
ℹ️ Hinweis: Der SMS-Versand funktionierte in älteren NetSendo-Versionen nicht; Version 2.2.0 hat den SMS-Job repariert, 2.7.2 die Kampagnen aus dem Panel und die Test-SMS. Aktualisiere auf die aktuelle Version, bevor du dich auf SMS verlässt.
🎯 Expertentipps
Textprogramme setzen automatisch typografische Anführungszeichen und Gedankenstriche. Schreib direkt im SMS-Editor oder in einem Code-Editor.
So bleibt Platz für Abmeldetext und lange Platzhalterwerte.
Sie kosten in GSM-7 nichts extra. „ae“ statt „ä“ spart kein Segment.
Steigt der Durchschnitt pro Nachricht, hat sich meist ein Nicht-GSM-Zeichen ins Template geschlichen.
Häufig gestellte Fragen
Warum hat meine SMS nur 70 Zeichen?
Der Text enthält mindestens ein Zeichen außerhalb des GSM-7-Alphabets, etwa ein Emoji, ein typografisches Anführungszeichen oder einen Gedankenstrich. Dann wird die ganze Nachricht in UCS-2 kodiert, und in ein Segment passen nur 70 Zeichen.
Verkürzen Umlaute die SMS auf 70 Zeichen?
Nein. ä, ö, ü, ß, Ä, Ö und Ü gehören zum GSM-7-Alphabet, eine SMS mit Umlauten fasst also weiterhin 160 Zeichen.
Warum werden lange SMS in Teile mit 153 Zeichen geteilt?
Jeder Teil einer verketteten SMS enthält einen Header zum Zusammensetzen, der 7 GSM-7-Zeichen belegt. Es bleiben 153 Zeichen pro Teil, in UCS-2 sind es 67.
Zählt das Euro-Zeichen in einer SMS doppelt?
Ja. € gehört wie ^ { } \ [ ] ~ | zur GSM-7-Erweiterungstabelle und belegt zwei Plätze, schaltet die Nachricht aber nicht auf UCS-2 um.
Wird pro SMS oder pro Segment abgerechnet?
Pro Segment. Twilio und AWS berechnen jeden Teil einer langen Nachricht, zwei Segmente kosten also doppelt so viel.
Quellen
- 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
E-Mail und SMS vom eigenen Server senden
NetSendo läuft auf deiner Infrastruktur und nutzt den SMS-Anbieter, den du bereits hast.




