Character support

When defining the message body in your request, both the character set and message length impact the number of SMS segments sent. If you use personalization (Liquid Syntax), message length can vary per recipient based on their specific data.

The characters used also influence the encoding format. The API automatically detects the required encoding based on the content, ensuring support for SMS delivery in any language.

A single SMS message can contain up to 160 characters, provided all characters used belong to the GSM 7-bit character set.

💡

Naxai technically allows messages of up to 2000 characters across all messaging channels, including SMS. However, very long SMS messages can harm both deliverability and the overall user experience. This is because SMS relies on message segmentation, a process that splits long messages into multiple parts, which also increases the total cost. For best performance and predictable pricing, Naxai recommends keeping SMS content to 320 characters or fewer.

Counting characters in Naxai Web Interfaces

When counting characters in the different modules like Quick SMS, SMS Broadcasts ..., we display the number of characters and the SMS parts represented as follows:

When the text is known and less than 160 characters or 70 characters, the information appears in gray.



When the message is greater than 1 SMS part, we display the message in yellow



When you reach the maximum number of characters (2000 for text), we display the information in red.



When a placeholder (Liquid Syntax) is used, we use the same colors but add a tilde (~) in front of the text, indicating the size is estimated. If you want to avoid sending messages greater than 1 or 2 SMS parts, you can use the advanced options to limit the number of parts.




GSM-7 alphabet and Unicode

The GSM-7 character set consists of both basic and extended characters. The image below displays the basic characters on the left and the extended ones on the right.


Extended Character Set

The following characters are also available, but they're counted as two characters in the SMS message rather than one:

| , ^ , € , { , } , [ , ] , ~ , \



Transliteration of characters

When using Text, the Naxai Platform will try to replace all characters having an equivalent in the transliteration table.
Some characters, such as double quotes, have different formats, including the left-pointing double angle quotation mark, left double quotation mark, modifier letter double prime, and double high-reversed-9 quotation mark. These special double quotes are replaced by the standard double quotes.

{
    "’": "'",
    " ": " ",
    "\t": " ",
    "\f": " ",
    "¢": "c",
    "¦": "|",
    "¨": " ",
    "˛": ",",
    "©": " ",
    "ª": " ",
    "«": "\"",
    "¬": "-",
    "®": " ",
    "¯": " ",
    "°": " ",
    "±": " ",
    "²": " ",
    "³": " ",
    "`": "'",
    "µ": " ",
    "¶": " ",
    "·": " ",
    "¸": " ",
    "¹": " ",
    "º": " ",
    "»": "\"",
    "À": "A",
    "Á": "A",
    "Â": "A",
    "Ã": "A",
    "È": "E",
    "Ê": "E",
    "Ë": "E",
    "Ì": "I",
    "Í": "I",
    "Î": "I",
    "Ï": "I",
    "Ð": "D",
    "Ò": "O",
    "Ó": "O",
    "Ô": "O",
    "Õ": "O",
    "×": "x",
    "Ù": "U",
    "Ú": "U",
    "Û": "U",
    "Ý": "Y",
    "Þ": "b",
    "á": "a",
    "â": "a",
    "ã": "a",
    "ê": "e",
    "ë": "e",
    "í": "i",
    "î": "i",
    "ï": "i",
    "ð": "o",
    "ó": "o",
    "ô": "o",
    "õ": "o",
    "ú": "u",
    "û": "u",
    "ý": "y",
    "þ": "b",
    "ÿ": "y",
    "ç": "Ç",
    "“": "\"",
    "”": "\"",
    "ʺ": "\"",
    "ˮ": "\"",
    "‟": "\"",
    "❝": "\"",
    "❞": "\"",
    "〝": "\"",
    "〞": "\"",
    """: "\"",
    "‘": "'",
    "'": "'",
    "ʻ": "'",
    "ˈ": "'",
    "ʼ": "'",
    "ʽ": "'",
    "ʹ": "'",
    "‛": "'",
    "'": "'",
    "´": "'",
    "ˊ": "'",
    "ˋ": "'",
    "❛": "'",
    "❜": "'",
    "̓": "'",
    "̔": "'",
    "︐": "'",
    "︑": "'",
    "÷": "/",
    "¼": "1/4",
    "½": "1/2",
    "¾": "1/3",
    "⧸": "/",
    "̷": "/",
    "̸": "/",
    "⁄": "/",
    "∕": "/",
    "/": "/",
    "⧹": "\\",
    "⧵": "\\",
    "◌⃥": "\\",
    "﹨": "\\",
    "\": "\\",
    "̲": "_",
    "_": "_",
    "⃒": "|",
    "⃓": "|",
    "∣": "|",
    "|": "|",
    "⎸": "|",
    "⎹": "|",
    "⏐": "|",
    "⎜": "|",
    "⎟": "|",
    "⎼": "-",
    "⎽": "-",
    "―": "-",
    "﹣": "-",
    "-": "-",
    "‐": "-",
    "•": "-",
    "⁃": "-",
    "﹫": "@",
    "@": "@",
    "﹩": "$",
    "$": "$",
    "ǃ": "!",
    "︕": "!",
    "﹗": "!",
    "!": "!",
    "﹟": "#",
    "#": "#",
    "﹪": "%",
    "%": "%",
    "﹠": "&",
    "&": "&",
    "‚": ",",
    "̦": ",",
    "﹐": ",",
    "、": ",",
    "﹑": ",",
    ",": ",",
    "、": ",",
    "❨": "(",
    "❪": "(",
    "﹙": "(",
    "(": "(",
    "⟮": "(",
    "⦅": "(",
    "❩": ")",
    "❫": ")",
    "﹚": ")",
    ")": ")",
    "⟯": ")",
    "⦆": ")",
    "⁎": "*",
    "∗": "*",
    "⊛": "*",
    "✢": "*",
    "✣": "*",
    "✤": "*",
    "✥": "*",
    "✱": "*",
    "✲": "*",
    "✳": "*",
    "✺": "*",
    "✻": "*",
    "✼": "*",
    "✽": "*",
    "❃": "*",
    "❉": "*",
    "❊": "*",
    "❋": "*",
    "⧆": "*",
    "﹡": "*",
    "*": "*",
    "˖": "+",
    "﹢": "+",
    "+": "+",
    "。": ".",
    "﹒": ".",
    ".": ".",
    "。": ".",
    "0": "0",
    "1": "1",
    "2": "2",
    "3": "3",
    "4": "4",
    "5": "5",
    "6": "6",
    "7": "7",
    "8": "8",
    "9": "9",
    "ː": ":",
    "˸": ":",
    "⦂": ":",
    "꞉": ":",
    "︓": ":",
    ":": ":",
    "⁏": ";",
    "︔": ";",
    "﹔": ";",
    ";": ";",
    "﹤": "<",
    "<": "<",
    "͇": "=",
    "꞊": "=",
    "﹦": "=",
    "=": "=",
    "﹥": ">",
    ">": ">",
    "︖": "?",
    "﹖": "?",
    "?": "?",
    "A": "A",
    "ᴀ": "A",
    "B": "B",
    "ʙ": "B",
    "C": "C",
    "ᴄ": "C",
    "D": "D",
    "ᴅ": "D",
    "E": "E",
    "ᴇ": "E",
    "F": "F",
    "ꜰ": "F",
    "G": "G",
    "ɢ": "G",
    "H": "H",
    "ʜ": "H",
    "I": "I",
    "ɪ": "I",
    "J": "J",
    "ᴊ": "J",
    "K": "K",
    "ᴋ": "K",
    "L": "L",
    "ʟ": "L",
    "M": "M",
    "ᴍ": "M",
    "N": "N",
    "ɴ": "N",
    "O": "O",
    "ᴏ": "O",
    "P": "P",
    "ᴘ": "P",
    "Q": "Q",
    "R": "R",
    "ʀ": "R",
    "S": "S",
    "ꜱ": "S",
    "T": "T",
    "ᴛ": "T",
    "U": "U",
    "ᴜ": "U",
    "V": "V",
    "ᴠ": "V",
    "W": "W",
    "ᴡ": "W",
    "X": "X",
    "Y": "Y",
    "ʏ": "Y",
    "Z": "Z",
    "ᴢ": "Z",
    "ˆ": "^",
    "̂": "^",
    "^": "^",
    "᷍": "^",
    "❴": "{",
    "﹛": "{",
    "{": "{",
    "❵": "}",
    "﹜": "}",
    "}": "}",
    "[": "[",
    "]": "]",
    "˜": "~",
    "˷": "~",
    "̃": "~",
    "̰": "~",
    "̴": "~",
    "∼": "~",
    "~": "~",
    "‗": "_",
    "—": "-",
    "-": "-",
    "‹": ">",
    "›": "<",
    "‼": "!!",
    "„": "\"",
    "…": "...",
    "⁠": ""
}


Other Characters

When characters outside the GSM set are needed, such as for non-Latin scripts, messages are encoded using 16-bit Unicode (UCS-2). Each character consumes 2 bytes in this format, limiting a single SMS to a maximum of 70 characters.


Long messages

The message body in a request can include up to 2000 characters. However, SMS messages have encoding limitations:

  • GSM 7-bit encoding supports up to 160 characters per message.
  • Unicode (UCS-2) encoding, used for non-GSM characters (e.g., emojis or non-Latin scripts), supports up to 70 characters per message.
  • Additionally, each message includes a header that consumes part of the character limit.
    To support longer texts, the system automatically splits messages into multiple segments. These segments are typically reassembled on the recipient’s device, appearing as continuous messages. Refer to the charts below to estimate how many SMS segments your message will require.
🚧

Maximum characters accepted

Messages exceeding 2000 characters will trigger a 422 error and will not be sent.




Using text, unicode or auto encoding

When sending messages, you can choose the encoding used.

Text

When text is used as encoding, all characters outside the basic and extended character will be evaluated.
Transliteration is applied if the character can be transliterated into another character.
For example: in French, the character ç will be replaced (transliterated) by Ç

If the character cannot be replaced via transliteration, then the character is replaced by a question mark ?

Unicode

When unicode is used, then all characters are accepted but the length of one SMS is limited to 70 characters.

Auto

When auto is used, we will use text or Unicode automatically, depending on the characters present in the message.


Length of messages

Using only 7-bit Characters

Each SMS in a multi-part 7-bit encoded message has a maximum length of 153 characters.

Length of message# SMS parts
1–1601
161–3062
307–4593
460–6124
613–7655
766–9186
919–10717
1062–12248
1225–13779
1378–153010
1531-168311
1684-183612
1837-198913
1990-200014

Using Unicode

Each SMS in a multi-part Unicode-encoded message has a maximum length of 67 characters.

Length of message# SMS parts
1 - 701
71 - 1342
135 - 2013
202 - 2684
269 - 3355
336 - 4026
403 - 4767
477 - 5438
544 - 6109
611 - 67710
678 - 74411
745 - 81112
812 - 87813
879 - 94514
946 - 107915
1080 - 114617
1147 - 121318
1214 - 128019
1281 - 134720
1348 - 141421
1415 - 148122
1482 - 154823
1549 - 161524
1616 - 168225
1683 - 174926
1750 - 181627
1817 - 188328
1884 - 195029
1951 - 200030
📘

Max length is set to 2000

(*) Please note that sending more than 2000 characters in unicode will produce an error but 2000 characters will result in 30 SMS segments.