A phone can display a long text as one message even when the network carries several parts. The alphabet used to encode your text determines how many parts Bird charges for.
What is a segment?
A segment is the largest piece of text one network message can carry. Plain Latin text fits 160 characters in a segment. If the message contains even one character outside that set, such as an emoji, a curly quote or most accented letters, every segment holds 70 characters instead.
When a message needs more than one segment, each part gives up a little room to a header the phone uses to reassemble them: 153 characters per part for plain text, 67 for the wider set. So 161 plain letters cost two segments, 153 in the first and eight in the second.
Bird counts plain text in the GSM-7 alphabet and everything else as UCS-2, the two encodings carriers accept. A few characters count double even inside GSM-7, and some emoji count double in UCS-2; the encoding page lists them.
Why did one message cost three?
Bird charges for the segment count, so a three-segment message incurs three units at the applicable rate.
Bird calculates the count when accepting your send. The destination, message category and sender type also determine the applicable price. Check SMS pricing for the route you use.
For example, 150 ordinary Latin letters fit in one segment. Add a smiling-face emoji and the whole body uses UCS-2. That emoji counts double, bringing the total to 152. Dividing 152 by the multipart capacity of 67 requires three segments.
Which characters change the encoding?
Any character outside GSM-7 moves the entire body into UCS-2.
Straight quotes fit in GSM-7. Curly quotes do not. The letters é and ü fit. The letters á, í and ú do not. Chinese, Japanese, Korean, Arabic, Thai and Hindi text also require the wider encoding.
A name or product title inserted into a template can therefore change the encoding of the whole message. Check the completed text after inserting those values.
Why does a character count give a different result?
Some characters count double toward the segment limit.
GSM-7 counts each of €, [, ], {, }, \, ~, ^ and | as two characters. The form feed character, which requests a page break, also counts double. Eighty euro signs therefore fill one segment.
A body of 159 ordinary Latin letters followed by € has 160 characters. It counts as 161 toward the limit. It needs two segments.
Some emoji, such as 😀, count double in UCS-2. Thirty-five of these fill one segment. The encoding page lists the characters that need special care.
How do I check the count in Bird?
You read the calculated count from the message response's segments object.
countis an integer of at least 1. Each counted segment is a billable unit. Outgoing messages are capped at 12. A longer body receives HTTP422, rejecting the request without truncating its text.encodingisGSM_7BITorUCS2, identifying which capacity applies.characterscounts the characters in the text before applying the double-counting rules. Usecountto check billable segments.
For a message that must fit one segment, check count after preparing the complete body. Include inserted names and count characters such as 😀 double.
You can also set options.smart_encoding to true or false. It defaults to false. When enabled, it replaces supported punctuation only if the entire result fits GSM-7. An emoji left in the body prevents all replacements. Smart encoding explains that behavior.
The character limits guide documents the counting rules and response fields.
In short
Each segment is a billable unit.
A message split into three segments is charged as three units at the applicable rate.
Encoding determines capacity.
One character outside the compact SMS alphabet moves the whole body into the Unicode encoding.
Some characters count double.
A euro sign counts as two characters toward the limit. Some emoji also count double.
Every multipart segment reserves header space.
Splitting reduces capacity in every part, including the first.