Lifecycle
Free SMS marketing copywriter with segment and encoding calculator
By Charles Summers · Updated · Free, no signup
Short answer
This writes the message and then does the arithmetic that decides what it costs. Every character is checked against the GSM 03.38 alphabet: characters in the basic set cost one septet, the nine escape-table characters cost two, and anything else, including every emoji and every curly quote, forces the whole message into UCS-2 and cuts your budget from 160 characters to 70. The output names the exact character that triggered the switch, shows the segment count you will actually be billed for, and offers a GSM-safe substitution.
Use the sms marketing copywriter
What does this tool actually do?
This writes the message and then does the arithmetic that decides what it costs. Every character is checked against the GSM 03.38 alphabet: characters in the basic set cost one septet, the nine escape-table characters cost two, and anything else, including every emoji and every curly quote, forces the whole message into UCS-2 and cuts your budget from 160 characters to 70.
It runs entirely in your browser. Nothing you type is sent to a server, no account is required, and there is no usage limit, because there is no cost per run to control.
Why 160, why 153, and why one emoji costs you ninety characters
A single SMS carries a fixed payload of 140 bytes. GSM-7, the default alphabet defined in GSM 03.38, encodes each character in seven bits rather than eight, so eight characters pack into seven bytes and 140 bytes holds 160 characters. That is where the famous number comes from. It is not a design choice about brevity, it is 1,120 bits divided by seven.
Switch to UCS-2, the 16-bit encoding used when a character is not in the GSM alphabet, and each character occupies two bytes. The same 140-byte payload now holds 70 characters. Nothing about your message changed except one symbol, and your budget fell by 56 percent. This is why a single emoji, or a curly apostrophe pasted out of a word processor, is the most expensive keystroke in the channel.
Longer messages are not sent as one long message. They are split and reassembled by the handset, which needs a user data header to know the order, and that header takes 6 bytes out of the 140-byte payload of every part. Six bytes is 48 bits, which in a seven-bit alphabet consumes 7 septets, leaving 153 characters per part. In UCS-2, 6 bytes is exactly 3 characters, leaving 67. That is the entire derivation of the four numbers this tool works with: 160 and 153 for GSM-7, 70 and 67 for UCS-2.
Two edge cases the arithmetic hides. Nine characters, the ones reached through the escape table, cost two septets each rather than one: the left and right square brackets, the left and right curly braces, the backslash, the caret, the tilde, the vertical bar, and the euro sign. A message full of square brackets burns its budget twice as fast as it looks like it should. And a message that crosses the 160-septet line does not become one message plus a bit, it becomes two segments of 153, so a 161-character message is billed as two and a 306-character message is billed as three.
The characters that break your encoding are the ones you cannot see
Almost nobody types an em dash on a phone keyboard. They arrive because the copy was written in a word processor or a CMS with smart typography enabled, which silently converts a straight apostrophe into a right single quotation mark, a double hyphen into an em dash, and three full stops into a single ellipsis glyph. Every one of those replacements is outside the GSM alphabet, and each one alone drops your message from 160 characters to 70. The straight versions are all in the basic set. The typographically correct versions are not.
Accented characters are the trap that catches people writing in anything other than English, because the GSM alphabet includes some and not others, apparently arbitrarily. It has à, ä, å, æ, è, é, ì, ñ, ò, ö, ø, ù, ü and ß, and the uppercase Ç. It does not have á, í, ó, ú, or the lowercase ç. So a Spanish message survives "señor" and breaks on "adiós", and a French message survives "à bientôt" only if you check, because ô is not in the set either. There is no pattern worth memorising here; there is only checking.
The other quiet cost is the non-breaking space, which some editors insert around currency figures and which does not exist in GSM-7 at all. It is invisible in every preview you will look at, and it will double your campaign bill. When copy has travelled through a document, a spreadsheet, a ticket and a sending platform, run it through an encoding check at the last step rather than the first. This tool prints the offending character with its Unicode code point so you can find it in a string that looks, on screen, entirely normal.
Identification and opt-out are mechanics, not manners
An SMS arrives from a number the recipient has never seen. There is no sender name field, no avatar, no domain to recognise, and no preview pane. If your brand name is not in the first few words, the message is from a stranger, and a message from a stranger asking someone to tap a link is indistinguishable from a phishing attempt. Leading with the brand is not politeness, it is the only identification the channel offers.
Opt-out is the other non-negotiable. Carriers and the industry guidelines the aggregators enforce expect STOP to work, expect HELP to return contact information, and expect the first message in a programme to carry the opt-out instruction and a note that message and data rates apply. Those words cost characters, so budget them rather than discovering them: "Reply STOP to opt out" is 21 characters, "Txt STOP to end" is 15, and both come out of the same 160 you are writing into.
- Consent is channel-specific. Somebody agreeing to your newsletter has not agreed to a text message. SMS consent needs to be collected for SMS, and the record of when and how needs to survive an argument.
- Registration is enforced at the carrier. In the US, application-to-person traffic on standard numbers runs through 10DLC registration, and unregistered or misregistered traffic gets filtered or blocked outright rather than delivered slowly.
- Public link shorteners are treated as suspicious. Shared domains carry the reputation of everybody using them, including the fraud. Use a branded short domain you control, which also makes the link recognisable as yours.
- Quiet hours are real and locally variable. Send by the recipient's local time, not your own. A campaign sent at nine in the evening from one timezone lands after midnight in another, and that is where complaints come from.
- Transactional and marketing messages sit under different rules. A delivery notification is not a promotion, and mixing an offer into one converts it into marketing. Confirm your own position rather than assuming the exemption covers a hybrid message.
The economics: you are billed per segment, per recipient
Email costs effectively nothing per additional message, which is why email programmes drift towards volume. SMS bills per segment per recipient, so the arithmetic runs the other way and a single careless character multiplies the cost of a campaign. A two-segment message sent to fifty thousand people is a hundred thousand billable units. Halving that is not a copywriting flourish, it is often the largest single saving available in the channel, and it is usually achieved by replacing one piece of punctuation.
That per-message cost also disciplines frequency in a way email never does, which is fortunate, because SMS tolerance is much lower. Opt-out rates vary widely by industry and by how the list was collected, and the pattern that holds across all of them is that the rate climbs with frequency rather than with any property of the copy. An unsubscribe from an email list is quiet. A STOP is immediate, permanent, and takes the phone number with it.
Response rates in SMS look spectacular next to email and the comparison is misleading. The messages are read because they arrive on a lock screen in a channel otherwise reserved for people the recipient knows, and that borrowed intimacy is exactly what you spend when you send something trivial. The right frame is cost per outcome rather than click rate: a channel that costs real money per send, converts well, and degrades permanently under overuse should be reserved for messages with a deadline, a delivery, or a genuine reason to interrupt.
One practical measurement note. Because the channel is expensive and the audience is small, most SMS programmes never accumulate enough volume to test copy variants meaningfully. Spend the effort on the two things that reliably move outcomes instead: the timing relative to the event that triggered the message, and whether the link goes to the exact screen the message describes rather than to a homepage that asks the recipient to navigate on a phone.
Numbers worth knowing
| Metric | Typical | What it means |
|---|---|---|
| GSM-7 message budget | 160 single, 153 concatenated | Seven bits per character into a 140-byte payload. The 6-byte concatenation header costs 7 septets, which is where 153 comes from. |
| UCS-2 message budget | 70 single, 67 concatenated | Two bytes per character in the same payload. The same 6-byte header costs exactly 3 characters, leaving 67. Any emoji or curly quote puts you here. |
| Escape-table characters | 2 septets each | The nine reachable via escape: [ ] { } \ ^ ~ | and the euro sign. They stay in GSM-7 but consume double, which is invisible in any plain character counter. |
| SMS opt-out rate | varies widely, climbs with frequency | Category and consent source matter more than copy. The consistent finding is that cadence drives it, and a STOP removes the number permanently rather than a single subscription. |
| Billing unit | segments times recipients | One extra character past 160 doubles the cost of the entire campaign. This is the arithmetic that makes encoding a budget question rather than a technical one. |
Mistakes that quietly cost you results
- Pasting copy straight out of a word processor
- Smart typography converts straight apostrophes to curly ones, double hyphens to em dashes and three dots to an ellipsis glyph. None of those exist in GSM-7, so a single invisible substitution cuts your budget from 160 characters to 70 and doubles the campaign bill.
- Adding an emoji to make the message feel friendly
- One emoji forces UCS-2 for the entire message, and most emoji are surrogate pairs that count as two characters against the 70-character budget rather than one. If the emoji is worth 90 characters of budget and double the send cost, keep it. Usually it is not.
- Sending from a number with no brand name in the message
- There is no sender name in SMS, so an unidentified message asking for a tap is indistinguishable from phishing. Put the brand in the first few words, before the offer, and accept the character cost as the price of being recognisable.
- Treating email consent as SMS consent
- They are separate permissions and the record has to show which one was given, when, and against what disclosure. Importing an email list into an SMS platform is the single fastest way to generate complaints and carrier filtering on a number you have just started using.
- Using a public link shortener
- Shared shortener domains carry the accumulated reputation of everyone else using them, including the fraud, and carrier filtering treats them accordingly. A branded short domain you control is both more deliverable and visibly yours in a channel where recognition is the whole game.
What does the output look like?
This is the exact output the tool produces from the example inputs. It is generated by the same code that runs when you click the button, so what you see here is what you get.
Frequently asked questions
How many characters can an SMS actually hold?
A single message carries 140 bytes. In GSM-7 each character takes seven bits, so 140 bytes holds 160 characters. In UCS-2 each character takes two bytes, so the same payload holds 70. Longer messages are split into segments that each give up 6 bytes to a header telling the handset how to reassemble them, which costs 7 septets in GSM-7 and exactly 3 characters in UCS-2, leaving 153 and 67 per segment respectively.
Why does one emoji cut my message limit from 160 to 70?
Because encoding is a property of the whole message, not of individual characters. The moment one character falls outside the GSM 03.38 alphabet, the entire message must be sent in UCS-2, and every character in it now occupies two bytes instead of seven bits. Most emoji make it worse: they sit outside the basic multilingual plane and are stored as surrogate pairs, so a single visible emoji consumes two of your 70 characters rather than one.
Which characters silently force UCS-2?
The common culprits are typographic rather than exotic: curly single and double quotation marks, en and em dashes, the ellipsis glyph, the non-breaking space, and the bullet character. All arrive automatically from word processors and content management systems with smart typography enabled, and all have straight equivalents that are in the GSM set. Accented letters are inconsistent: à, ä, é, è, ñ, ö, ü and ß are included, while á, í, ó, ú and lowercase ç are not.
Do I have to include opt-out language in every message?
Industry guidelines and the aggregators that enforce them expect STOP to work on any message, expect HELP to return contact details, and expect the opt-out instruction plus a message-and-data-rates note on the first message of a programme, with periodic reminders after that. Transactional messages sit under different rules from marketing ones, but adding an offer to a delivery notification converts it into marketing. Confirm your own obligations rather than inheriting an assumption, and budget the characters either way.
How is the billing calculated?
Per segment, per recipient. A message that measures 161 septets is not one message plus one character, it is two segments of 153, so it costs exactly twice as much to send as one measuring 160. Multiply segments by recipients to get billable units, which is why removing a single em dash from a campaign going to fifty thousand people can halve its cost without changing a word of what the message says.
Related free tools
- Onboarding Email Sequence Writer Lifecycle
- Win-Back Email Writer Lifecycle
- Newsletter Subject Line Tester Lifecycle
- Cold Email Generator for marketing agencies Outbound
- Cold Email Generator for b2b consultants Outbound
Some links on this site are affiliate links, which means Hacking Demand may earn a commission if you buy through them at no extra cost to you. This does not influence which tools are listed. The tools on this page are free and have no affiliate relationship of any kind.