# UDH — User Data Header in SMS explained

> UDH (User Data Header) is the 6-byte (or longer) prefix attached to the body of an SMS to carry control information — most importantly the concatenation header that tells the recipient handset how to stitch a multi-part long SMS back together. UDH is also how WAP push, OTA SIM update messages, and binary SMS payloads are framed. Without UDH, SMS would have remained a strictly 160-character protocol.

- Canonical URL: https://www.broadnet.me/answers/what-is-udh-sms
- Language: en
- Last reviewed: 2026-05-28
- Publisher: BroadNet (https://www.broadnet.me)

## What it actually does

When an SMS exceeds 160 GSM-7 characters (or 70 UCS-2), the sender's stack splits it into multiple segments and prefixes each segment with a UDH containing: a Concatenation Header Indicator (0x00), the concatenation reference number (so the handset knows which segments belong together), the total segment count, and the current segment index. The recipient handset reassembles the segments in order and displays them as a single message. The UDH consumes 6 bytes of the message body, so each concatenated segment carries 153 GSM-7 characters (or 67 UCS-2) instead of the unconcatenated 160 (or 70).

## Why it matters commercially

UDH controls how a long SMS is billed. Most aggregators bill per segment, not per logical message — a 320-character GSM-7 message is 3 billable segments (153 + 153 + 14). For high-volume SMS senders, UDH-aware composition (keeping marketing copy below 160 GSM-7 chars, normalising punctuation away from UCS-2-forcing characters) directly cuts spend. UDH also enables binary SMS use cases — OTA SIM updates, WAP push, MMS notification — that some platforms still depend on.

## Operational and integration angle

Most modern aggregators auto-handle UDH concatenation: you submit a single long message string, the platform fragments and stitches UDH itself, and the recipient handset reassembles. Some legacy integrations require the sender to handle UDH manually (one submit_sm per segment, with the UDH hand-crafted). When debugging long-SMS display issues — wrong segment order, missing chunks, character corruption at segment boundaries — UDH is almost always the culprit.

## Privacy and compliance considerations

UDH itself is metadata, not message body content, and is not in PDPL/GDPR scope on its own. But UDH-carrying binary SMS (OTA SIM update commands, WAP push payloads) can carry sensitive content — OTA SIM keys, push URLs containing tokens. Treat UDH-framed binary SMS with the same care as any other authenticated channel: TLS in transit, access-controlled logs, and audit on any system that injects raw UDH-bearing submit_sm.

## Related

- [All answers](https://www.broadnet.me/answers)
- [Glossary](https://www.broadnet.me/answers)
- [What is GSM-7 encoding?](https://www.broadnet.me/answers/what-is-gsm-7)
- [What is a flash SMS?](https://www.broadnet.me/answers/what-is-flash-sms)
- [UCS-2 — Unicode SMS encoding explained](https://www.broadnet.me/answers/what-is-ucs-2-sms)
- [GSM 7-bit vs UCS-2 encoding — when each is used](https://www.broadnet.me/answers/what-is-encoding-gsm-7-ucs-2)
- [What is SMPP?](https://www.broadnet.me/answers/what-is-smpp)
- [SMS segment calculator](https://www.broadnet.me/tools/sms-segment-calculator)
- [SMS API](https://www.broadnet.me/products/sms-api)
- [Bulk SMS](https://www.broadnet.me/products/bulk-sms)
