Push notification and SMS limits
A push notification payload can be at most 4096 bytes on APNs (5120 for VoIP) and on FCM (2048 when sent to a topic), and a Web Push message about 3993 bytes of plaintext. A single SMS holds 160 characters in GSM-7 or 70 in UCS-2; longer texts are split into segments of 153 or 67 characters, and each segment is billed as one message.
Every value below links to the page it comes from, with the day it was last checked. Neither Apple nor Google publishes how many characters a notification displays: that depends on the device, the font size and the language, so check it in the push notification preview instead.
Count an SMS
- Encoding
- GSM-7
- Characters
- 84
- Septets
- 84
- Segments
- 1
- Left in this segment
- 76 / 160
iOS: Apple Push Notification service
Apple counts the whole JSON payload, your custom keys included, in UTF-8 bytes.
- APNs payload (every push type except VoIP)4,096 bytesApple Developer: Generating a remote notification, checked
- APNs payload, VoIP push type5,120 bytesApple Developer: Generating a remote notification, checked
- apns-collapse-id header64 bytesApple Developer: Sending notification requests to APNs, checked
Android and FCM
FCM counts the keys and values of the message; a device that is offline keeps only some of what is sent to it.
- FCM message payload, keys and values (notification and data messages)4,096 bytesFirebase: FCM message types, checked
- FCM message payload sent to a topic2,048 bytesFirebase: FCM error codes (message too big), checked
- Topics in one FCM condition5 topicsFirebase: Send messages to topics, checked
- FCM android.ttl (4 weeks)2,419,200 secondsFirebase: FCM REST API, projects.messages, checked
- Collapsible FCM messages stored per device while it is offline, one per collapse key4 collapse keysFirebase: Collapsible and non-collapsible messages, checked
- Non-collapsible FCM messages stored per Android device while it is offline100 messagesFirebase: Collapsible and non-collapsible messages, checked
Web Push
Every push service must accept a 4096-octet encrypted body; encryption overhead leaves the plaintext below.
- Web Push plaintext that fits the 4096-octet record every push service must accept3,993 bytesRFC 8291, Message Encryption for Web Push, section 4, checked
SMS
One character outside the GSM 7-bit alphabet (3GPP TS 23.038: Alphabets and language-specific information) switches the whole message to UCS-2.
- Single SMS, GSM-7 encoding160 charactersTwilio: What is the SMS character limit?, checked
- Each segment of a long SMS, GSM-7153 charactersTwilio: What is the SMS character limit?, checked
- Single SMS, UCS-2 encoding (any character outside GSM-7)70 charactersTwilio: What is the SMS character limit?, checked
- Each segment of a long SMS, UCS-267 charactersTwilio: What is the SMS character limit?, checked
- User data in one SMS140 bytesTwilio: What is the SMS character limit?, checked
- Length Twilio recommends staying under320 charactersTwilio: What is the SMS character limit?, checked
- Message body accepted by Twilio's Messages API1,600 charactersTwilio: Message resource, checked
- Alphanumeric sender ID11 charactersTwilio: What is an alphanumeric sender ID?, checked
Frequently asked questions
How many characters fit in one SMS?
160 characters when every character is in the GSM 7-bit alphabet, or 70 when any character is not and the message is sent as UCS-2. A longer text is split into segments of 153 (GSM-7) or 67 (UCS-2) characters, because each segment carries a header that lets the phone reassemble them, and every segment is billed as a message.
Why does one emoji make my SMS cost more?
An emoji is not in the GSM 7-bit alphabet, so the whole message switches to UCS-2 and the limit drops from 160 to 70 characters. Most emoji also take two UCS-2 units. The same happens with curly quotes pasted from a word processor; replace them with straight quotes to stay in GSM-7.
Do characters like € or [ count twice in an SMS?
Yes. The GSM extension table (form feed, ^ { } \ [ ~ ] | and €) is sent as an escape plus a character, so each counts as two of the 160. The message stays in GSM-7, unlike an emoji.
What is the maximum size of a push notification?
4096 bytes on APNs for every push type except VoIP (5120 bytes), 4096 bytes on FCM for notification and data messages (2048 when sent to a topic), and about 3993 bytes of plaintext for Web Push once the aes128gcm encryption overhead is taken out of the 4096-octet body every push service accepts.
How many characters of a push notification are shown?
There is no fixed number. Android truncates a collapsed notification's text to one line and iOS clamps a long one until it is expanded, but where the cut falls depends on the screen, the text size and the language. Put the important words first and check it in the push notification preview.
Check a payload against these limits with the free push tools. Sending for real? Notifly sends push, SMS, email, in-app and chat from one workflow and one API call. Start free.