Skip to content
Free · No signup · Runs in your browser

DLT SMS Template Checker

Paste a TRAI DLT SMS template and see the common rejection causes before you register it: untyped variables, adjacent variables, the two-variable limit, per-tag length, GSM-7 vs Unicode segments, and promotional wording on a service header.

Runs fully in your browser. Nothing is sent anywhere.

What it checks

  • Variable count: two is the limit, a third needs recorded exigency, more needs a written requisition.
  • Non-contiguity: variables cannot touch or be separated only by a space, comma, or special character.
  • Pre-tag types: every slot must be typed ({#numeric#}, {#alphanumeric#}, {#url#}, {#urlott#}, {#cbn#}, {#email#}), not a bare {#var#}.
  • Length and encoding: estimates the filled-message length, flags Unicode characters that cut the per-part limit from 160 to 70, and counts SMS parts.
  • Header category hint: flags marketing wording that cannot ride a Service Implicit or Transactional header.

How to send a DLT message online

There is no website where you type a message and it goes out as a DLT SMS on its own. Every message in India goes through an SMS gateway, and the gateway only delivers it if four things were registered first. In order:

  1. Register your business as a Principal Entity on one operator's DLT portal (Jio, Airtel, Vi or BSNL). You get an Entity ID, and it works across all operators.
  2. Register a header, the sender ID people see. Service and transactional headers are six letters; promotional headers are numeric.
  3. Register the content template under that header, with the right category and a typed slot for each variable. Run it through the checker above before you submit, because a rejection costs a day or two.
  4. Pick a gateway and link it to your entity on the DLT portal, so the chain from you to the operator is declared.
  5. Send from the gateway's web panel (paste numbers or upload a CSV) or its API, passing the Entity ID, template ID and header. The text has to match the approved template exactly, with only the variable slots changed.

Template rejected, or approved and still failing with "template not found"? Our guide to why DLT templates get rejected, with sample templates that pass covers each cause and has ready OTP, order and reminder templates written to the 2026 rules.

FAQs

What does this DLT template checker do?

It runs a set of static checks on a DLT SMS content template and flags the mistakes that most often cause silent rejections or delivery failures: untyped {#var#} slots, variables that sit next to each other, more than two variables, encoding that forces a Unicode message, and marketing wording on a message you intend to send as a service or transactional alert. It does not register, submit, or send anything, and it never leaves your browser.

What are the DLT variable pre-tag types?

Since TRAI's 2026 pre-tagging rules, every variable in a template must declare a type. The types are {#numeric#}, {#alphanumeric#}, {#url#}, {#urlott#}, {#cbn#} (call-back number) and {#email#}. A plain {#var#} with no type is rejected on new templates. Each type also has its own character ceiling in scrubbing (for example, #alphanumeric# is capped at 40 characters and #cbn# at 3 to 14).

Why does my template get rejected even though my gateway accepts it?

Your gateway acking a message is not the same as the operator delivering it. During the initial scrubbing window the rules allow a logger mode, where a failing message is still delivered while a fault message is generated behind the scenes, so your dashboard looks green while the template is quietly non-compliant. After that window, the same message is rejected outright. The usual causes are an edited body that no longer matches the registered template, an untyped variable, or the wrong header category.

How many variables can a DLT template have?

The rules limit a content template to two variables. A third is allowed only for recorded reasons (exigency), and more than three needs a written requisition with justification from the Principal Entity. Variables must also be non-contiguous, meaning you cannot place two variables next to each other or separate them only with a space, comma, or special character. There has to be real static text between them.

Can I send a DLT SMS online without an SMS gateway?

No. The DLT portal is only a registry: it stores your entity, headers and templates, and it does not send anything. Sending always goes through an SMS gateway, either from its web panel or its API, and the gateway checks each message against what you registered. Most gateways let you send a test from the panel once your template is approved and linked.

Can an OTP message use a Transactional header?

Usually no. Under DLT, the Transactional category is restricted to banks sending OTPs. An OTP or alert from a non-bank SaaS or business goes out on a Service Implicit header, not a Transactional one. Registering everything as Transactional is a common mistake that gets traffic filtered. If you are a bank, Transactional applies. For everyone else, which is most senders, it is Service Implicit.

Is this an official TRAI or gateway tool?

No. It is a free heuristic checker we built at buildbyravirai from running notification systems in production. It follows the rules in TRAI's Direction of 18 November 2025, but it cannot replace your operator's live scrubbing, and ceilings can change. Always confirm the current rules and your header category with your SMS gateway. For the full architecture behind this, see our DLT-compliant notification service guide.

If your templates keep getting rejected, the problem is usually the sender flow, not the wording. We will look at it.

Get help with DLT

Building the notification layer behind this?

The full guide covers the typed template registry, provider failover, idempotency, and delivery reconciliation. Or tell us your setup and we will build it.