How SMS character counting works
An SMS is not measured in words or in bytes of a file — it is measured in a fixed 140-byte payload defined by the 3GPP standards every mobile network follows, Nepal Telecom and Ncell included. How many characters fit into those 140 bytes depends entirely on which alphabet your text can be encoded in.
GSM-7: the 160-character alphabet
If every character of your message appears in the GSM 03.38 default alphabet — the plain English letters, digits, common punctuation and a handful of European letters — each character is packed into 7 bits instead of 8. Seven bits × 160 characters = 140 bytes exactly. That is where the famous 160-character SMS comes from.
Unicode (UCS-2): the 70-character alphabet
The moment a single character in your message is not in that alphabet — any Nepali letter, an emoji, a curly apostrophe — the whole message must be sent in UCS-2, a 16-bit encoding. Two bytes per character means only 70 characters fit into the same 140 bytes. This is all-or-nothing: one Devanagari character in an otherwise English message drops the limit for the entire message from 160 to 70.
Longer messages: 153 and 67
A message longer than one part is not rejected — it is chopped into several SMS, each carrying a small User Data Header (UDH) that tells the receiving phone how to stitch them back together. That header eats 6 bytes of the 140, so every part of a multipart message holds 153 GSM-7 characters or 67 Unicode characters instead of 160 or 70. The recipient normally sees one long message; you are billed for each part.
| Encoding | Used for | Single SMS | Per part when longer | Bits per character |
|---|---|---|---|---|
| GSM-7 | English, romanised Nepali, digits, basic punctuation | 160 | 153 | 7 |
| Unicode (UCS-2) | Nepali (Devanagari), Hindi, emoji, smart quotes, ₹ रु | 70 | 67 | 16 |
Counting Nepali (Devanagari) SMS
This is the part that surprises almost every sender in Nepal, so it is worth being precise. Nepali written in Devanagari — नेपाली — has no place in the GSM-7 alphabet, which contains only Latin letters, Greek capitals and a few symbols. Every Nepali SMS is therefore sent as Unicode, and the working limits are:
- 70 characters in a single Nepali SMS,
- 67 characters per part once the message needs more than one part,
- 1 credit per part, per recipient — a 200-character Nepali notice sent to 1,000 people costs 3,000 credits, not 1,000.
Every matra, halanta and anusvara is its own character
A Nepali reader sees नमस्ते as a few letters. The network sees six separate Unicode characters, because the vowel signs (ा ि ी े ो ौ), the halanta or virama (्) that joins consonants into a conjunct, and the anusvara and chandrabindu (ं ँ) are all independent code points that simply render attached to the letter beside them. Each one uses two bytes on the wire and each one counts against your 70.
| Word | Counted as | Characters |
|---|---|---|
| नमस्ते |
न
म
स
◌्
त
◌े
|
6 |
| धन्यवाद |
ध
न
◌्
य
व
◌ा
द
|
7 |
| तपाईंको |
त
प
◌ा
ई
◌ं
क
◌ो
|
7 |
| श्रीमान् |
श
◌्
र
◌ी
म
◌ा
न
◌्
|
8 |
| क्षेत्र |
क
◌्
ष
◌े
त
◌्
र
|
7 |
| काठमाडौँ |
क
◌ा
ठ
म
◌ा
ड
◌ौ
◌ँ
|
8 |
Marks are shown on a dotted circle (◌) because they cannot stand alone. Hover any cell to see its Unicode code point.
Nepali digits and the danda cost you the whole message
Three habits quietly force a message into Unicode even when the rest of it is English:
- Devanagari digits ० १ २ ३ ४ ५ ६ ७ ८ ९ are separate
characters from
0 1 2 3 4 5 6 7 8 9. The ASCII digits are GSM-7; the Devanagari ones are not. - The danda । and double danda ॥ are Devanagari punctuation, not a full stop. A single danda at the end of an English sentence makes the entire message Unicode.
- रु and ₹ are Unicode;
RsandRs.are GSM-7. (The euro sign€is in GSM-7, but costs two characters.)
Romanised Nepali fits more than twice as much
The same sentence written in Devanagari and in Roman letters costs very differently, because the Roman version stays in GSM-7:
| Message | Encoding | Chars | Parts |
|---|---|---|---|
| Namaste! Tapaiko balance Rs 250 chha. Dhanyabaad. | GSM-7 | 49 | 1 of 160 |
| नमस्ते! तपाईंको ब्यालेन्स रु २५० छ। धन्यवाद। | Unicode | 44 | 1 of 70 |
Both fit in one SMS here — but the Devanagari version has only 26 characters of room left, while the romanised one has 111. For long notices, receipts and reminders, writing in romanised Nepali routinely turns a 3-credit message into a 1-credit message. Whether that is worth it depends on your audience: Devanagari reads far better for public notices and older recipients, and every handset sold in Nepal renders it correctly.
NTC and Ncell both deliver Unicode SMS
Nepal Telecom and Ncell both accept and deliver UCS-2 messages, and both support concatenated (multipart) SMS, so a long Devanagari message arrives as one continuous message on any modern handset. Two practical notes for Nepal:
- Your sender ID — the alphanumeric name shown instead of a number, up to 11 characters — is carried in a separate field and does not count towards the 160 or 70 characters of the message body.
- A very old feature phone may show a long message as separate parts. It is delivered and charged identically either way.
Worked examples
These are counted by the same code that prices a real send on Kusha SMS:
| Message | Encoding | Chars | Parts | Credits |
|---|---|---|---|---|
| Your OTP is 458213. Do not share it with anyone.
English OTP |
GSM-7 | 48 | 1 × 160 | 1 |
| Namaste! Tapaiko KushaSMS balance Rs 250 chha. Dhanyabaad.
Romanised Nepali |
GSM-7 | 58 | 1 × 160 | 1 |
| नमस्ते! तपाईंको ब्यालेन्स रु २५० छ। धन्यवाद।
Nepali (Devanagari) |
Unicode | 44 | 1 × 70 | 1 |
| Dear customer, your balance is रु 250.
English with one Nepali word |
Unicode | 38 | 1 × 70 | 1 |
| Dear member, your membership hasn’t been renewed.
English with a curly apostrophe |
Unicode | 49 | 1 × 70 | 1 |
| Dear customer, your bill is Rs. 1,250 — due 15 Shrawan.
English with an em dash |
Unicode | 55 | 1 × 70 | 1 |
| Thank you for your payment! 🙏
English with an emoji |
Unicode | 30 | 1 × 70 | 1 |
| सूचना: आगामी शुक्रबार बिहान ७ बजेदेखि दिउँसो १ बजेसम्म पानी वितरण बन्द रहनेछ। असुविधाको लागि क्षमा चाहन्छौं। — काठमाडौं उपत्यका खानेपानी
Nepali notice (multipart) |
Unicode | 136 | 3 × 67 | 3 |
Characters that cost more than they look
Most “why is my message suddenly two SMS?” tickets come down to one of these. Word processors, phone keyboards and copy-pasted text introduce them without asking.
| Character | What it costs | Write this instead |
|---|---|---|
| ’ ‘ “ ” | Curly quotes from autocorrect are not in GSM-7 — the whole message becomes Unicode (70 per part) | ' " |
| — – | Em dash and en dash force Unicode | - |
| … | The single-character ellipsis forces Unicode | ... |
| 🙏 😊 | Emoji force Unicode and most of them count as two characters, because they sit outside the 16-bit range | — |
| ₹ रु | Currency in Devanagari or the rupee sign forces Unicode | Rs |
| । | The danda forces Unicode | . |
| ० ९ | Devanagari digits force Unicode | 0 9 |
| ^{}\[~]|€ | In GSM-7, but each one costs two characters (it is sent as an escape pair) | Avoid in long messages |
| Invisible characters | Non-breaking spaces and zero-width joiners pasted from the web count exactly like visible ones | Retype the line |
The full GSM-7 alphabet
If your message uses only these characters, it sends as GSM-7 at 160 characters per SMS. Anything else — including every Devanagari character — makes it Unicode at 70.
Plus the line feed and carriage return used for line breaks. These characters — ^{}\[~]|€ — are also GSM-7 but count as two characters each.
Frequently asked questions
How many characters is one SMS?
160 characters if the message is written entirely in the GSM-7 alphabet (plain English letters, digits and basic punctuation), or 70 characters if it contains anything else. Longer messages are split into parts of 153 or 67 characters.
How many characters can a Nepali SMS have?
70 characters. Nepali written in Devanagari is not part of the GSM-7 alphabet, so the message is sent as Unicode (UCS-2) at two bytes per character. Once a Nepali message needs more than one part, each part holds 67 characters.
Why did my message switch to Unicode?
Because at least one character in it is outside the GSM-7 alphabet. The usual culprits are a Nepali letter or digit, the danda, an emoji, a curly quote or apostrophe from autocorrect, an em dash, or the rupee sign. It is all-or-nothing: one such character changes the limit for the whole message from 160 to 70.
Do matras, halanta and anusvara count as characters?
Yes. Every vowel sign, the halanta that forms a conjunct, and the anusvara or chandrabindu is its own Unicode character, even though it renders attached to the letter beside it. That is why namaste written as नमस्ते counts as six characters, not four.
Are Nepali digits counted differently from 0-9?
Each digit counts as one character either way, but the Devanagari digits ० to ९ are outside GSM-7 and force the whole message into Unicode, while the ASCII digits 0 to 9 do not.
Does the sender ID count towards the character limit?
No. The sender ID or sender name is carried in a separate field of the message, not in the body, so it does not use any of your 160 or 70 characters.
How many credits does a long message cost?
One credit per part, per recipient. A 200-character Nepali message is three parts, so sending it to 500 people costs 1,500 credits.
Do spaces and line breaks count as characters?
Yes. A space is one character, and a line break is one character in both GSM-7 and Unicode. Note that a browser sends each line break of a web form as a carriage return plus a line feed, so a multi-line message submitted from a form can cost one character per line break more than the same text sent through the API. Blank lines left at the end of a pasted message are a common reason a message spills into an extra part.
How many characters is an emoji?
An emoji forces the message into Unicode, and most emoji count as two characters because they are encoded outside the basic 16-bit range. A single emoji can therefore turn a 69-character message into a two-part message.
Will a long message arrive as one message or several?
It is sent as several parts, each carrying a header that tells the handset how to reassemble them, and virtually every phone shows them as one message. Some very old feature phones display the parts separately. Either way you are charged per part.
Is this counter accurate for NTC and Ncell?
Yes. Nepal Telecom and Ncell both follow the same 3GPP encoding and segmentation rules, and this page counts with the exact code that prices and bills a real send on Kusha SMS.
Is my message sent anywhere when I use this counter?
No. The counting runs entirely in your browser. Nothing you type is uploaded, logged or stored.
About this counter
This tool is published by Kusha SMS, a bulk SMS platform for Nepal built by Sahasra Tech. It sends campaigns, alerts and OTPs to NTC and Ncell numbers with contacts, templates, scheduling, delivery reports and a REST API. The counter on this page runs the same encoding and segmentation rules the platform uses to price and bill every message, so what you see here is what a send actually costs.
Nothing you type is transmitted: the count is computed in your browser and the page makes no network request while you type.