SMS (Short Message Service) is specified by the ETSI (standards GSM 03.401 and 03.382 ). It can contain up to 160 characters, when each character is written according the 7-bits GSM default alphabet.[ 7 bits default tabel ]

Next to a message the SMS containt also some meta-data, for example
 - Info about the senders ( Service center number, sender number) 
 - Protocol information  (Protocol identifier, Data coding scheme)
 - Time stamp 

There are two way to recieve and send SMS messages a, PDU (protocol discription unit) and Text mode. In this document we focus on PDU mode.

PDU format can be used on any encoding. To explain you the SMS PDU encoding we use an example:


The above PDU string contains the message "How are you?" and was read from a Siemens C35i mobile phone.
The string is build from hexadecimal-octets and semi decimal-octets. As mentioned before, the SMS contains some meta-data about him self.
We explain it using the example above:

Octet(s) Description format In this example
07 Length of the SMSC information


7 octets

91 Type of address of SMSC hex-octet internation format
13 26 04 00 00 F0 SMSC number decimal semi-octets b 31624000000
04 First octet of this SMS-DELIVER message. hex-octet TP-MMS
0B Lenght of the sender address hex-octet 11 (decimal)
91 Type of address of the sender number hex-octet ...
13 46 61 00 89 F6 Sender number decimal semi-octets 31641600986
00 Protocol identifier hex-octets ...
00 Data encoding scheme hex-octets ...
20 80 62 91 73 14 08 Time stamp c decimal semi-octets 06-08-02 29:17:31
0C Length of User data (SMS message) hex-octets 12 (decimal)
C8 F7 1D 14 96 97 41 F9 77 FD 07 User data 8-bit octets respresenting 7-bit data How are you?

Tabel 1.

PDU converter is an online PDU string analyser.

Hexadecimal PDU Message

7/8/16 Bit PDU Message (readable)

Show User data translation (7 bit only)
String sms message

Hexadecimal PDU Message

Alphabet Size 7816


The European Telecommunications Standards Institute (ETSI)
Lars Pettersson about PDU mode


a. To see which modes your mobile supports, you can use the "AT+CMGF=?" command.
You will get a response with the supported SMS formats
 0: PDU mode, 1: Text mode
b. To obtain data from a string that is written as a semi-octet, you have to swap the semi-octet string. If the length of a semi-octet string is odd, you have to add an extra "F" to make it even, so that you get a proper octet string.
 "13 46 61 00 89 F6" becomes "31 64 16 00 98 6F"
c. Time stamp is represented in semi-octets (See note b). So "20 80 62 91 73 14 08" becomes "02 08 26 02 29 17 31 80". The first 6 characters represent the date, the next 6 characters represent the time, the last 2 characters represent the time-zone related to the GMT.


1. Digital cellular telecommunications system (Phase 2+); Technical realization of the Short Message Service (SMS)Point-to-Point (PP) (3GPP TS 03.40 version 7.5.0 Release 1998), ETSI TS 100 901 V7.5.0 (2001-12)
2. Digital cellular telecommunications system (Phase 2+); Alphabets and language-specific information (GSM 03.38 version 7.2.0 Release 1998), ETSI TS 100 900 V7.2.0 (1999-07)

Written by Swen-Peter Ekkebus View Swen-Peter Ekkebus's LinkedIn profile, v1.0 august 2002 | v1.2 may 2003 | v1.4 august 2003 [Milan Chudik] | v1.5 november 2004 [Andrew Alexander],