Know the real message size before you send.
Count visible characters, GSM-7 septets or UCS-2 units, message parts and estimated campaign cost in one preflight check.
Why a character counter is not enough
SMS billing is driven by encoded message parts, not only by the number of characters you can see. Standard GSM-7 text usually fits up to 160 septets in one part. A non-GSM character can switch the message to UCS-2, where the usual single-part capacity is 70 UTF-16 code units. Multipart headers reduce the capacity available in every part.
| Encoding | Single part | Multipart capacity |
|---|---|---|
| GSM-7 | 160 septets | 153 septets per part |
| UCS-2 | 70 code units | 67 code units per part |
Characters from the GSM extension table, including braces, square brackets, the euro sign and the caret, use two septets. Emoji and some scripts can use more than one UTF-16 code unit. That is why the calculator reports both visible characters and encoding units.
Turn the calculator into a pre-send safeguard
The free tool is useful for manual checks. The API applies the same calculation automatically to final messages, templates and campaigns before a delivery request is created.
const response = await fetch(
"https://textpreflight.kadircoteli.workers.dev/api/v1/sms/analyze",
{
method: "POST",
headers: {
"Content-Type": "application/json",
"Authorization": "Bearer TPF-YOUR-LICENSE-KEY"
},
body: JSON.stringify({ text, recipients, unitPrice, currency: "USD" })
}
);
Enter the price from your own route or contract. Actual billing can vary by destination, sender type and delivery provider.
Make every send measurable.
Analyze final messages, inspect risky Unicode and forecast billable segments from one lightweight API.