OTP & SMS Security

Unicode OTP Not Sending? Encoding Issue Fix

Unicode (Hindi, Tamil, etc.) OTPs failing to send: GSM-7 vs UCS-2 encoding, DLT template language registration, and why a single accented character breaks delivery.

16 May 20267 min read

StartMessaging Team

Engineering

A single non-GSM-7 character can break your OTP delivery. This guide explains the encoding rules and the registration step that most teams miss.

Why Unicode OTPs Fail

  • Template registered as GSM-7 but body has Unicode chars.
  • Operator scrubber rejects on encoding mismatch.
  • Multi-part fragmentation drops on some carriers.

GSM-7 vs UCS-2

  • GSM-7: 160 chars, basic Latin.
  • UCS-2: 70 chars, full Unicode.
  • One Unicode char anywhere = whole SMS becomes UCS-2.

DLT Language Registration

Hindi / Tamil / regional templates need a separate DLT registration. See our regional-language SMS guide.

Invisible Unicode Characters

  • Curly quotes from copy-paste.
  • Em dashes from auto-correct.
  • Zero-width joiners.
  • Non-breaking spaces.

Run your template through a GSM-7 validator before submission.

Fixes

  • Replace curly quotes with straight quotes.
  • Use ASCII-only template body if possible.
  • For Hindi templates, register them explicitly under regional category.

FAQ

StartMessaging handles encoding consistency on the template side; your body stays GSM-7 unless you explicitly opt into Unicode.

Ready to Send OTPs?

Integrate StartMessaging in 5 minutes. No DLT registration required.