Messaging

SMS length calculator

Count a text message the way a carrier does, and see how many segments it costs.

Free, no accountIn your browser

Nothing you type here is stored. The count updates as you type.

Try

Result

Nothing to count yet

Type or paste a message and it is counted as you type.

What this is

This SMS character counter counts a message the way a carrier does, not the way a word processor does: it works out whether the text fits in the GSM-7 alphabet, how many billed units it comes to, and how many segments you will pay for.

A text message is not billed by the character. It is billed by the segment, and how much a segment holds depends on which alphabet the message needs. In the GSM-7 alphabet a single message holds 160 characters. One character outside that alphabet - a curly apostrophe pasted from a document, an emoji, an accented letter outside the GSM set - switches the whole message to UCS-2, where a single message holds 70.

A message too long for one segment is split, and each part carries a six-character header so the handset can put them back together. That is why the parts hold 153 and 67 rather than 160 and 70, and why a 161-character message costs two messages rather than one and a bit.

How to read the result

The headline is the billed units, the capacity of the segment you are in, the number of segments and the encoding. The findings say which encoding was chosen and why, name the first character that forced Unicode if one did, and list the characters that cost two septets each because they are in the GSM-7 extension table.

"Left in this segment" is how many more characters you can add before the message is split again. When it reads 0 you are exactly at a boundary, and the next character adds a whole segment.

Common mistakes

What goes wrong most often, and how to tell.

  • Pasting from a word processorWord processors replace a straight apostrophe with a curly one and three dots with an ellipsis. Each is outside GSM-7, so a 100-character message silently becomes Unicode and halves its capacity.
  • Counting an emoji as one characterMost emoji are outside the basic plane and are two 16-bit code units, so one emoji costs two of the 70. A single emoji also forces the whole message to Unicode.
  • Assuming 160 always means one messageIt means one message only while the text is GSM-7. In Unicode the first boundary is at 70, and a long message is cut into 67-character parts.

Questions

What people ask about this tool.

  • 160 if every character is in the GSM-7 alphabet, 70 if any character is not. A longer message is split into parts of 153 or 67, because each part carries a header so the handset can reassemble it.
  • An emoji is not in the GSM-7 alphabet, so the whole message is sent as UCS-2, where a segment holds 70 characters instead of 160. Most emoji also count as two code units, not one.
  • Yes. It is sent as two segments of up to 153 GSM-7 characters each, and you are billed for both. Carriers bill per segment, not per message as a person sees it.
  • No. The counting happens as you type and nothing you enter is written down against you. The API route behind this tool keeps nothing either.

Use it from the API

The same check, as one request.

Request
curl -X POST https://resellerhq.com/api/tools/sms-length-calculator \
  -H "Content-Type: application/json" \
  -d '{"message":"Your code is 428113. It expires in ten minutes."}'
Response
{
  "tool": "sms-length-calculator",
  "input": {
    "message": "Your code is 428113. It expires in ten minutes."
  },
  "result": {
    "verdict": {
      "tone": "success",
      "headline": "47 of 160 · 1 segment · GSM-7",
      "summary": "This message is one GSM-7 segment with 113 characters to spare."
    },
    "findings": [
      {
        "id": "encoding-gsm",
        "severity": "pass",
        "title": "Sent as GSM-7, the cheapest encoding",
        "detail": "Every character is in the GSM-7 alphabet, so a single segment holds 160 characters and each part of a longer message holds 153."
      },
      {
        "id": "single-segment",
        "severity": "pass",
        "title": "Fits in one segment",
        "detail": "113 characters left before it is split into two."
      }
    ],
    "parts": [
      {
        "kind": "meter",
        "label": "Units in this segment (GSM-7)",
        "value": 47,
        "max": 160,
        "tone": "neutral",
        "note": "A GSM-7 segment holds 160 billed units."
      },
      {
        "kind": "facts",
        "rows": [
          [
            "Characters",
            "47"
          ],
          [
            "Billed units",
            "47 septets"
          ],
          [
            "Encoding",
            "GSM-7"
          ],
          [
            "Segments",
            "1"
          ],
          [
            "Left in this segment",
            "113"
          ]
        ]
      }
    ],
    "limits": [
      "Counting is what a carrier charges on; whether a handset shows the parts as one message is up to the handset.",
      "Some senders transliterate accented characters for you, which changes the count. This counts the text exactly as typed."
    ]
  }
}

Resell phone numbers that receive this kind of message, under your own brand.

Get started

Company names and logos are trademarks of their owners, shown only to identify each service.