# Push notification and SMS limits

Updated 2026-10-22. https://notifly.io/reference/push-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.

## iOS: Apple Push Notification service

Apple counts the whole JSON payload, your custom keys included, in UTF-8 bytes.

| Limit | Value | Source | Checked |
| --- | --- | --- | --- |
| APNs payload (every push type except VoIP) | 4096 bytes | [Apple Developer: Generating a remote notification](https://developer.apple.com/documentation/usernotifications/generating-a-remote-notification) | 2026-10-21 |
| APNs payload, VoIP push type | 5120 bytes | [Apple Developer: Generating a remote notification](https://developer.apple.com/documentation/usernotifications/generating-a-remote-notification) | 2026-10-21 |
| apns-collapse-id header | 64 bytes | [Apple Developer: Sending notification requests to APNs](https://developer.apple.com/documentation/usernotifications/sending-notification-requests-to-apns) | 2026-10-21 |

## 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.

| Limit | Value | Source | Checked |
| --- | --- | --- | --- |
| FCM message payload, keys and values (notification and data messages) | 4096 bytes | [Firebase: FCM message types](https://firebase.google.com/docs/cloud-messaging/customize-messages/set-message-type) | 2026-10-21 |
| FCM message payload sent to a topic | 2048 bytes | [Firebase: FCM error codes (message too big)](https://firebase.google.com/docs/cloud-messaging/error-codes) | 2026-10-21 |
| Topics in one FCM condition | 5 topics | [Firebase: Send messages to topics](https://firebase.google.com/docs/cloud-messaging/send-topic-messages) | 2026-10-21 |
| FCM android.ttl (4 weeks) | 2419200 seconds | [Firebase: FCM REST API, projects.messages](https://firebase.google.com/docs/reference/fcm/rest/v1/projects.messages) | 2026-10-21 |
| Collapsible FCM messages stored per device while it is offline, one per collapse key | 4 collapse keys | [Firebase: Collapsible and non-collapsible messages](https://firebase.google.com/docs/cloud-messaging/customize-messages/collapsible-message-types) | 2026-10-21 |
| Non-collapsible FCM messages stored per Android device while it is offline | 100 messages | [Firebase: Collapsible and non-collapsible messages](https://firebase.google.com/docs/cloud-messaging/customize-messages/collapsible-message-types) | 2026-10-21 |

## Web Push

Every push service must accept a 4096-octet encrypted body; encryption overhead leaves the plaintext below.

| Limit | Value | Source | Checked |
| --- | --- | --- | --- |
| Web Push plaintext that fits the 4096-octet record every push service must accept | 3993 bytes | [RFC 8291, Message Encryption for Web Push, section 4](https://www.rfc-editor.org/rfc/rfc8291#section-4) | 2026-10-21 |

## 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.

| Limit | Value | Source | Checked |
| --- | --- | --- | --- |
| Single SMS, GSM-7 encoding | 160 characters | [Twilio: What is the SMS character limit?](https://www.twilio.com/docs/glossary/what-sms-character-limit) | 2026-10-21 |
| Each segment of a long SMS, GSM-7 | 153 characters | [Twilio: What is the SMS character limit?](https://www.twilio.com/docs/glossary/what-sms-character-limit) | 2026-10-21 |
| Single SMS, UCS-2 encoding (any character outside GSM-7) | 70 characters | [Twilio: What is the SMS character limit?](https://www.twilio.com/docs/glossary/what-sms-character-limit) | 2026-10-21 |
| Each segment of a long SMS, UCS-2 | 67 characters | [Twilio: What is the SMS character limit?](https://www.twilio.com/docs/glossary/what-sms-character-limit) | 2026-10-21 |
| User data in one SMS | 140 bytes | [Twilio: What is the SMS character limit?](https://www.twilio.com/docs/glossary/what-sms-character-limit) | 2026-10-21 |
| Length Twilio recommends staying under | 320 characters | [Twilio: What is the SMS character limit?](https://www.twilio.com/docs/glossary/what-sms-character-limit) | 2026-10-21 |
| Message body accepted by Twilio's Messages API | 1600 characters | [Twilio: Message resource](https://www.twilio.com/docs/messaging/api/message-resource) | 2026-10-21 |
| Alphanumeric sender ID | 11 characters | [Twilio: What is an alphanumeric sender ID?](https://www.twilio.com/docs/glossary/what-alphanumeric-sender-id) | 2026-10-21 |

## 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.
