DEVELOPER_TOOLS

SMS Developer Tools

Essential utilities for optimizing SMS campaigns and debugging message encoding. Free, privacy-focused, and client-side only.

sms_calculator.exe
READY

SMS Segment Calculator

Paste your message below to detect encoding and calculate segments.

INPUT_STREAM
0
CHARACTERS
0
SEGMENTS
GSM
ENCODING
160
REMAINING
SEGMENT_CAPACITY 0/160 chars

Why Use This Calculator?

SMS billing is based on "segments". A standard SMS segment is 160 characters, but only if you use the GSM-7 character set (standard letters, numbers, and symbols).

If you include a single emoji (e.g., "✅") or a special character like a smart quote, the entire message encoding switches to Unicode (UCS-2). This drops the limit to just 70 characters per segment.

For a marketing campaign with 10,000 users, accidentally sending a 71-character Unicode message (2 segments) instead of a 1-segment message effectively doubles your cost instantly.

Technical Breakdown

  • GSM-7 Single Segment 160 chars
  • GSM-7 Multi-Segment 153 chars
  • Unicode Single Segment 70 chars
  • Unicode Multi-Segment 67 chars
NEW

SMS PDU Decoder

pdu_parser.lib

How to use:

  1. Get a raw PDU string from your GSM modem or SMSC logs.
  2. Paste the hex string into the input box above.
  3. Click Decode PDU to parse the headers.
Waiting for input...

* Supports standard GSM 03.40 PDU format.

Why Decode PDUs?

When SMS messages travel through the network at the lowest level, they are encoded in PDU (Protocol Data Unit) mode. This hex string contains everything: the sender, the message center (SMSC), the timestamp, and the message content itself.

Developers working with GSM modems, IoT devices, or direct SMSC connections often need to debug raw hex data to understand why a message failed or was malformed.

07 = Length of SMSC info

91 = International format

04 = PDU Type (SMS-DELIVER)

0C = Sender address length

// This tool unpacks these bytes for you.

BETA

SMPP Log Analyzer

smpp_trace.log

Parse raw SMPP logs to extract command IDs, status codes, and sequence numbers.

Understanding SMPP Logs

Commands

SMPP uses command IDs (e.g., submit_sm for sending, deliver_sm for receiving) to define the action. Responses always mirror the command ID (e.g., submit_sm_resp).

Status Codes

Every response includes a status. 0x00000000 (ESME_ROK) means success. Anything else indicates an error (e.g., Invalid Source Address, System Error).

Sequence #

Asynchronous protocols rely on sequence numbers to match requests with responses. If you send a request with sequence #105, the response must also be #105.