SMS Character Counter — Free GSM-7 & Segment Calculator

Check your text message before you send — the counter below shows your encoding (GSM-7 or Unicode), the live segment count, and exactly when one character tips you into a second message.

Write your post

Characters: 0 · Words: 0

0
Characters
0
Words
0
Lines
0
Paragraphs

Real-time analysis is on

Format toolkit
Reading
< 30 sec
Speaking
< 30 sec

SMS

Global character counter

GSM 7-bit
0
Character count
160
Characters left
0 SMS
SMS parts
GSM 7-bit
Encoding

GSM 7-bit: 160 characters for one SMS, then 153 per stitched SMS. Extension-table characters such as €, [, ], {, }, \ and | count as 2.

Advanced insights

Readability

Flesch Reading Ease

Reading Ease
Grade Level

Keywords

Overuse monitor

Idle

Start typing to see your most-used keywords and their density.

The two SMS encodings that control your character limit

Most people assume an SMS holds 160 characters. That's true — but only for messages that use GSM-7 encoding. GSM-7 is the character set that covers standard Latin letters, digits, punctuation, and a handful of common symbols. When every character in your message belongs to this set, the 160-character limit applies and a single message costs exactly one SMS credit.

The moment your message contains a character outside GSM-7 — most commonly an emoji, a curly quotation mark, or a letter with an uncommon accent — the entire message is automatically re-encoded in Unicode (UCS-2). Unicode supports virtually every character humans have ever written, but it uses more data per character. The consequence is immediate: your per-segment limit drops from 160 characters to 70. A message you believed was comfortably under the limit can suddenly become two or three paid segments.

PostTruncate's SMS character counter detects the encoding of your message in real time, displays whether you're in GSM-7 or Unicode mode, and shows the current segment count so you always know exactly what you're sending — and what it will cost.

The emoji trap: one character, half the limit

This is the most common and most expensive SMS mistake. You draft a professional message, add a thumbs-up emoji at the end as an afterthought, and instantly transform a single-segment message into a two-segment message — doubling your SMS cost for every recipient.

Every emoji forces the entire message into Unicode mode, not just the part after the emoji. A 155-character message with one emoji at position 156 doesn't cost one SMS — it costs three (155 characters ÷ 67 Unicode multipart characters per segment). The same applies to curly quotes (" "), em dashes (—), and any character not in the GSM-7 alphabet.

PostTruncate flags the exact character that triggered Unicode mode, so you can decide whether to remove it or accept the additional segments with full awareness of the cost.

Multipart messages: the hidden per-segment cost

When a message exceeds one segment, the carrier network must break it into multiple parts and reassemble them on the recipient's device. This reassembly requires a small header in each segment — 7 bytes for GSM-7 and 3 bytes for Unicode — which reduces the usable characters per part.

In practice: a single GSM-7 message holds 160 characters, but a two-part GSM-7 message holds only 153 characters per segment (306 total). A single Unicode message holds 70 characters, and a two-part Unicode message holds only 67 per segment (134 total). Going even slightly over 160 (or 70) characters doesn't just add one segment — it also recalculates the capacity of all previous segments.

This is why a 161-character GSM-7 message doesn't cost "160 + 1". It costs two segments of 153, giving you 306 total characters but charging for two SMS credits. PostTruncate shows real-time segment boundaries so you never accidentally cross a threshold without noticing.

GSM extended characters: the double-cost symbols

Within GSM-7, there is a small set of characters that occupy the extended character table: € [ ] { } \ | ~ and the caret ^. Each of these counts as two characters in your SMS budget, not one. A message containing four euro signs has effectively used 8 characters from the GSM-7 limit, not 4.

This surprises developers and marketers equally. A promotional message like "Save €10 on your next order [terms apply]" uses 48 visible characters but consumes 52 GSM-7 character slots — the €, [, and ] each cost 2. PostTruncate counts extended characters at their true two-slot weight, so the number you see is the number that matters for billing.

Questions, answered.

How many characters fit in one SMS?

160 characters in standard GSM-7 encoding. Add a single emoji or other non-GSM character and the whole message switches to Unicode, which holds only 70 characters per segment.

Why did my message split into two?

When your text exceeds one segment, it is sent as multiple parts with a small header, dropping the usable space to 153 characters per part in GSM-7 (or 67 in Unicode). The counter above shows the split point live.

Which characters force Unicode mode?

Emojis, most non-Latin scripts, and curly "smart" quotes. A few GSM "extended" characters like €, {, }, [, ], and | stay in GSM-7 but count as two characters each.

Do spaces and line breaks count in an SMS?

Yes — every space and line break is one character (or two for an extended-table character), and they count toward the per-segment limit exactly like letters do.

Last updated: May 15, 2026