Text Tools
SMS Character Counter
Count SMS characters with the real carrier rules: GSM-7 vs UCS-2 detection, 160 / 70 single limits, 153 / 67 per segment, and live segment preview.
SMS character counter
Counts run entirely in your browser. The text you paste here is never uploaded.
SMS limits reference
GSM-7
Used- Bits per character
- 7
- Single SMS
- 160 characters
- Per segment when split
- 153 characters
- Extended (2 septets each)
- ^ { } [ ] ~ | \ € \f
UCS-2
- Bits per code unit
- 16
- Single SMS
- 70 characters
- Per segment when split
- 67 characters
- Triggers UCS-2
- Emoji, Cyrillic, Arabic, CJK, curly quotes, em dash
How to use
- Type or paste your SMS into the message text box.
- Read the encoding badge: GSM-7 means your message uses the 7-bit alphabet (160 / 153 per segment); UCS-2 means at least one character forced the message into the 16-bit encoding (70 / 67 per segment).
- Check the ring for the current segment usage, and the sidebar for septets or code units used, segments billed, graphemes, code points, UTF-16 length, and UTF-8 bytes.
- If your message is in UCS-2, open the Characters forcing UCS-2 panel to see exactly which characters dropped the limit from 160 to 70. Replace them with ASCII equivalents to switch back to GSM-7.
- If your message uses GSM-7 extended characters (^ { } [ ] ~ | backslash Euro), watch the count: each one costs 2 septets.
- When the message is too long for a single SMS, scroll to the Segment preview to see each segment and use Copy on any segment.
About this tool
SMS Character Counter applies the rules carriers actually use when they bill an SMS, so the count you see matches the count on the invoice. A plain character count is wrong for an SMS in two ways: the protocol picks between two encodings depending on the characters you use, and the per-segment limit is smaller than the single-message limit once a message has to be split. This tool reproduces both. GSM-7 (the GSM 03.38 default alphabet) packs each character into 7 bits and fits 160 characters in a single SMS, or 153 per segment when the message is concatenated (the other 7 are reserved for the user data header that lets the receiver stitch parts back together). A small extension set of 10 characters (^ { } [ ] ~ | backslash Euro form feed) still uses GSM-7 but costs 2 septets each because of the escape byte. The moment a single character falls outside that alphabet, the whole message switches to UCS-2 (16 bits per code unit) and the limit drops to 70 characters in a single SMS or 67 per segment in a concatenated message. Emoji, curly quotes, em dashes, ellipses, Cyrillic, Arabic, Greek text (outside the few uppercase letters in GSM-7), Hebrew, and CJK all force UCS-2. Emoji and any non-BMP character also take 2 code units each in UCS-2, so an emoji-heavy message hits the 70-character limit twice as fast as the count of visible characters suggests. The tool reports the detected encoding, the per-segment cost (septets for GSM-7, code units for UCS-2), the total segment count, the characters left in the current segment, the list of characters that forced UCS-2 with their Unicode code points and short labels, the list of GSM-7 extended characters that are doubling up, and a segment-by-segment preview with a copy button per part. A reference card at the bottom shows the GSM-7 and UCS-2 limits side by side and highlights which one applies to your message. Useful for marketers writing promotional SMS campaigns who want to keep messages under 160 characters and avoid the surprise double bill from a single curly quote, for developers using Twilio, Vonage, Plivo, MessageBird, Sinch, or AWS SNS who need to know how many segments their template will produce, for support teams writing transactional SMS templates for OTPs, shipping updates, appointment reminders, and password resets, and for anyone debugging why an SMS that looks short is being billed as two or three messages. The counter never sends, drafts, or stores your message; everything runs locally on your device.
Free to use. Works in your browser. No signup, no login.
Related tools
You may also like
Character Counter
Detailed character, letter, number, space, and line counts.
Open tool
TextTweet Character Counter
X (Twitter) tweet counter with t.co URL weighting, CJK x2, thread split preview.
Open tool
TextWord Counter
Live word, character, sentence, paragraph, and reading time stats.
Open tool
TextUTF-8 Byte Counter
UTF-8 bytes, UTF-16, code points, graphemes, plus SMS, cookie, and payload limits.
Open tool
TextUnicode Character Inspector
Per-character breakdown with code points, UTF-8/UTF-16 bytes, and hidden character detection.
Open tool